USBWi-Fiアダプター用にCで記述されたLinuxカーネルドライバーコードを理解しようとしています。1456
ファイル内の行/drivers/net/wireless/rtl818x/rtl8187/dev.c
(誰かがコンテキストのためにカーネルコードを参照したい場合に備えて)は次のようになります。
priv->map = (struct rtl818x_csr *)0xFF00;
ここで正しいオペランドが何をしているのか知りたいです- (struct rtl818x_csr *)0xFF00;
。私はこれを「メモリアドレス0xFF00
をタイプにキャストrtl818x_csr
してから割り当てる」と解釈してきましたpriv->map
。私の解釈が正しければ、メモリアドレスの何が特別なので0xFF00
、ドライバーはそれが後に続くものが常にこのアドレスにあることを確実に知ることができますか?私が興味を持っているもう1つのことは、0xFF00は16ビットしかないということです。メモリアドレスをキャストする場合、32/64ビットを期待します。
誰かがこのコード行で何が起こっているのかを正確に明確にすることができますか?C構文の理解に欠陥があると思います。