
Linux 커널(버전 v2.6.38)의 소스 코드를 보고 있었는데 정의되지 않은 struct map_segment
정의를 우연히 발견했습니다 exec_domain
.
struct exec_domain {
const char *name; /* name of the execdomain */
handler_t handler; /* handler for syscalls */
unsigned char pers_low; /* lowest personality */
unsigned char pers_high; /* highest personality */
unsigned long *signal_map; /* signal mapping */
unsigned long *signal_invmap; /* reverse signal mapping */
struct map_segment *err_map; /* error mapping */
struct map_segment *socktype_map; /* socket type mapping */
struct map_segment *sockopt_map; /* socket option mapping */
struct map_segment *af_map; /* address family mapping */
struct module *module; /* module context of the ed. */
struct exec_domain *next; /* linked list (internal) */
};
exec_domain
사용 thread_info
.
내 질문:
- 어디에
map_segment
정의되어 있나요? (멤버 변수는 모두 무엇인가요? 지금까지 제가 추측한 최선의 추측은 하위 수준 아키텍처 관련 구조를 가리키는 것입니다.) - 그 목적은 무엇이며 어디에 사용됩니까? (댓글에는 소켓 유형 맵 내에서 작동한다고 나와 있지만 저는 그다지 익숙하지 않습니다. 소켓 유형 맵이 무엇인가요?)
이 주제에 대한 정보를 주시면 감사하겠습니다.
답변1
struct map_segment
적어도 버전 2.6.38에서는 커널 어디에도 정의되어 있지 않습니다. C에서는 문제가 없습니다. 멤버의 내용이 전혀 필요하지 않은 한 컴파일러가 알아야 할 모든 것은 필드의 크기이며 이는 포인터이므로 포인터의 크기뿐입니다.이러한
struct map_segment
필드는 사용되지 않습니다. 나는 그들의 의도가 개성이 매핑을 정의하도록 하는 것이라고 생각합니다.errno
값은err_map
,콘센트 유형존재하다socktype_map
,콘센트 옵션sockopt_map
함께 하다집 주소존재하다af_map
.
이 exec_domain
구조커널 버전 4.1에서 제거됨.