我想了解一些用C寫的USB Wi-Fi適配器的Linux內核驅動程序代碼。在文件/drivers/net/wireless/rtl818x/rtl8187/dev.c
(以防萬一有人想參考上下文的內核代碼)1456
行讀取:C代碼,爲什麼地址0xFF00被轉換爲struct?
priv->map = (struct rtl818x_csr *)0xFF00;
我很好奇究竟是什麼正確的操作是在這裏做什麼 - (struct rtl818x_csr *)0xFF00;
。我一直在解釋這是說:「將內存地址0xFF00
設置爲rtl818x_csr
,然後將其分配給priv->map
」。如果我的解釋是正確的,那麼內存地址0xFF00
有什麼特別的地方,驅動程序能夠可靠地說出它後面的東西總是在這個地址?我很好奇的另一件事是0xFF00只有16位。如果它正在播放一個內存地址,我會期待32/64位。
任何人都可以澄清這一行代碼到底發生了什麼?我想我的C語法理解存在缺陷。
它看起來像是RTL818x芯片組的控制/狀態寄存器存儲器映射到地址0xFF00。 – 2012-08-01 10:04:19