32ビットLinuxカーネルでカーネルモジュールをコンパイルすると、次のようになります。
"__udivdi3" [mymodule.ko] undefined!
"__umoddi3" [mymodule.ko] undefined!
64ビットシステムではすべて問題ありません。私の知る限り、この理由は、64ビットの整数除算とモジュロが32ビットのLinuxカーネル内でサポートされていないためです。
64ビット演算を発行するコードを見つけるにはどうすればよいですか。「/」が32ビット幅か64ビット幅かを簡単に確認できないため、手動で見つけるのは困難です。「通常の」関数が定義されていない場合、それらをgrepできますが、ここでは不可能です。参照を検索する別の良い方法はありますか?ある種の「マシンコードgrep」?
このモジュールは、数千行のコードで構成されています。すべての行を手動でチェックすることはできません。