FreeBSD에서 __sysctl 함수는 어디에 정의되어 있나요?

FreeBSD에서 __sysctl 함수는 어디에 정의되어 있나요?

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

내가 배운 내용은 다음과 같습니다.

  • __syscallC 소스 파일에는 정의되어 있지 않습니다.

    마크 플롯닉(Mark Plotnick)에 따르면:

    libc컴파일 중에 생성된 __sysctl몇 줄의 어셈블리 언어로 작성된 시스템 호출 래퍼 입니다 .libc1].

  • 시스템 호출의 진입점은 다음과 같습니다.kern_sysctl.c에서[2]. 시스템 호출은 sys_foo()커널에서 호출됩니다.

링크

  1. 시스템 호출을 생성하는 데 사용되는 구성 파일입니다.
  2. kern_sysctl.c 소스 코드.

edje, Ed Schouten(@EdSchouten), @FreeBSDHelp 및 Mark Plotnick에게 감사드립니다.

관련 정보