누군가가 리눅스 커널 소스에 사용 된 __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