我希望有人能夠解釋linux內核源代碼中使用的__user宏的細微差別。linux __user宏的含義是什麼?
首先,宏:
# define __user __attribute__((noderef, address_space(1)))
現在,經過了一些谷歌上搜索我讀到這個宏允許一個指定的指針爲屬於用戶地址空間,而且它不應該被取消引用。
我可能會遺漏一些明顯的事實,但有人可以解釋這樣一個宏的含義嗎?例如,這個宏可以用在哪裏的例子是什麼?再次,原諒我,如果我失去了明顯的東西。
爲了說明這一點,我在考察一些USB代碼(linux/usbdevice_fs.h)的同時,探討了這個宏。我只是在尋找對這個宏(或其他類似宏)在內核中使用的一般理解。
感謝您的期待!
有關示例,請參閱do_execve()源代碼。 看看在count()中如何使用argv。 如果你只是取消引用(* argv [0])或者什麼, 稀疏(1)會警告它。 address_space表示並非所有的指針都是相等的,需要不同的(解除引用)規則,不應該混合使用。 – adobriyan 2010-12-24 17:12:29