Где находятся системные вызовы в исходном коде glibc

Итак, я просмотрел исходный код linux glibc и не вижу, где он на самом деле что-то делает. Следующее взято из io / chdir.c , но указывает на многие из исходных файлов. Что тут происходит? Очевидно, я чего-то упускаю. В чем секрет, где он выполняет системный вызов или на самом деле что-то делает?

stub_warning - это какое-то унаследованное безумие. __ set_errno кажется простым макросом, который устанавливает errno . И хотя я нахожу миллион случаев использования weak_alias , я нигде не вижу его определения.

Есть ли где-нибудь полезное руководство для понимания того, как работает glibc?

#include <errno.h>
#include <stddef.h>
#include <unistd.h>

/* Change the current directory to PATH.  */
int
__chdir (path)
     const char *path;
{
  if (path == NULL)
    {
      __set_errno (EINVAL);
      return -1;
    }

  __set_errno (ENOSYS);
  return -1;
}
stub_warning (chdir)

weak_alias (__chdir, chdir)
#include <stub-tag.h> 
21
задан caf 5 May 2016 в 00:45
поделиться