FreeBSD를 이해하기 위해 소스코드를 읽고 있습니다 sysctl
.
가장 중요한 기능인 것 같습니다
int __sysctl(const int *name, u_int namelen, void *oldp, size_t *oldlenp, const void *newp, size_t newlen);
에 정의되어 있지 않습니다 lib/libc/gen/sysctl.c
.
FreeBSD 소스 코드를 greping하려고 시도했지만 찾을 수 없습니다 __sysctl
.
어디에 정의되어 있나요?
답변1
내가 배운 내용은 다음과 같습니다.
__syscall
C 소스 파일에는 정의되어 있지 않습니다.마크 플롯닉(Mark Plotnick)에 따르면:
libc
컴파일 중에 생성된__sysctl
몇 줄의 어셈블리 언어로 작성된 시스템 호출 래퍼 입니다 .libc
1].- 시스템 호출의 진입점은 다음과 같습니다.kern_sysctl.c에서[2]. 시스템 호출은
sys_foo()
커널에서 호출됩니다.
링크
edje, Ed Schouten(@EdSchouten), @FreeBSDHelp 및 Mark Plotnick에게 감사드립니다.