2017-09-19 6 views
2

私は32ビットのユーザー空間ソフトウェアと64ビットのカーネルを持っています。 USパートは、netlinkとioctlsを介してカーネルパートと通信します。私は、64ビットから32ビットへのポインターの翻訳と、ネットリンクでの64ビットへのポインターの翻訳に問題があります。64ビットカーネルと32ビットユーザー空間の間のポインタ変換

私はポインタサイズと関連するキャストを同じに保つ必要があると私は仮定していますか?それ以上はありますか?私が例として使用できるカーネルやOSSのソースには何か?

あなたがそれを提案する前に - いいえ、私は64ビットツールチェーンで米国の部分を再コンパイルできません。バイナリが含まれています。

+3

カーネルはuserspace提供のポインタ*とにかく*を信頼できないため、(チェックされた)マッピングを使用する必要があります。 – EOF

答えて

0

最後に、私はカーネルポインタを(uint64_tにキャストされた)数値として交換し、カーネル空間に戻ったときにそれらをポインタにキャストしました。 初期のデザインが悪かったため、これは非常に(!)悪い解決策でした。

関連する問題