適用範囲:DS-5
現象
以下のエラーメッセージがLinux kernel v2.6.32に対するgatorモジュールをビルドする際に表示されます:
CC [M] [...]/gator_pmnc_armv6.o [...]/gator_pmnc_armv6.c: In function 'gator_armv6_pmnc_start': [...]/gator_pmnc_armv6.c:169: error: expected ')' before '*' token [...]/gator_pmnc_armv6.c:169: error: cast specifies array type CC [M] [...]/gator_pmnc_armv7.o [...]/gator_pmnc_armv7.c: In function 'gator_armv7_pmnc_start': [...]/gator_pmnc_armv7.c:354: error: expected ')' before '*' token [...]/gator_pmnc_armv7.c:354: error: cast specifies array type
原因
カーネルによって提供され、include/linux/percpu.hに定義されているalloc_percpu()マクロはv2.6.32とv2.6.33の間で少々変更が行われています。DS-5 v5.2aとともに提供されているgatorドライバコードは正しくビルドを行うためにこの関数の新しいバージョンを必要とします。
解決策
この問題は以下の通りの小さな2つの変更をgatorのソースに行う事で解決できます:
gator_pmnc_armv6.cをテキストエディタで開き、169行目に移動します:
pmnc_percpu_ptr = alloc_percpu(int[CNTMAX * 2]);
この箇所を以下のように変更します:
pmnc_percpu_ptr = alloc_percpu(typeof(int[CNTMAX * 2]));
同じ手順をgator_pmnc_armv7.cの354行目にも行います。