我希望有人能够解释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