Onde a função __sysctl é definida no FreeBSD?

0

Estou lendo o código-fonte para entender sysctl no FreeBSD.

Parece a função mais importante

int __sysctl(const int *name, u_int namelen, void *oldp, size_t *oldlenp, const void *newp, size_t newlen);

não está definido em lib/libc/gen/sysctl.c .

Eu tentei ler o código-fonte do FreeBSD, mas não consegui encontrar a definição de __sysctl .

Onde é definido?

    
por Mateusz Piotrowski 20.07.2016 / 15:38

1 resposta

0

Veja o que aprendi:

  • __syscall não está definido em nenhum arquivo de origem C;

    De acordo com Mark Plotnick:

    libc's __sysctl is a system call wrapper written in a few lines of assembly language, generated during the compilation of libc [1].

  • O ponto de entrada das chamadas do sistema é aqui em kern_sysctl.c [ 2 ]. As chamadas do sistema são chamadas de sys_foo() no kernel.

Links

  1. Arquivo de configuração para gerar syscalls.
  2. A fonte kern_sysctl.c

Obrigado a edje, Ed Schouten (@EdSchouten), @FreeBSDHelp e Mark Plotnick.

    
por 20.07.2016 / 22:28