私はAndroid用のローダブルカーネルモジュール(LKM)を開発しました。
私は使用しますkzalloc
:
device = kzalloc(ndevices * sizeof (*device), GFP_KERNEL);
しばらくは動作しましたが、Androidをアップデートした後(4.1以降は動作しなくなりました)、次のエラーが発生しましたinsmod
:
insmod module.ko
insmod: init_module 'module.ko' failed (No such file or directory)
DMESG says:
Unknown symbol malloc_sizes (err 0)
これはinux/slab.h
私が知っていることと関係があります。
私は何日もグーグルで検索しましたが、この問題を修正してLKMを再び機能させるための解決策が見つからないことに非常に不満を感じています。
多分誰かが私を助けることができますか?
結論:
受け入れられた答えは正しいです:slab.hを削除し、欠落しているメソッドを「extern」として定義してみてください。または、カーネルソースで、「make menuconfig」を使用して、SLABをSLUBに変更します(詳細については、回答の最初のコメントを参照してください)。
残りの問題は、新しい、より具体的なトピックで処理されます。