TT
Size: a a a
TT
АВ
TT
TT
АВ
TT
TT
АВ
TT
АВ
АВ
AK
AK
EL
EL
AK
__syscall(SYS_fcntl, fd, F_SETFD, FD_CLOEXEC);
fopen(3)
. Смотрим на SYS_fcntl
. Что же это такое ? Напоминает какую-то константу по написанию. Ищём её всюду где можно найти по дереву исходников, её можно найти в нескольких местах, но я предлагаю. В arch/powerpc/bitc/syscall.h [2] как видим, эта константа зависит от архитектуры. Она равна, допустим 55
. Гуглим what is this numbers in syscall.h
натыкаемся на страницу мануалов [3] Там написано syscall() is a small library function that invokes the system call
whose assembly language interface has the specified number with the
specified arguments. Employing syscall() is useful, for example,
when invoking a system call that has no wrapper function in the C
library.
__syscall
засунет в определённый регистр процессора [4] используя вставку ассемблерную.SYS_fcntl
в OpenBSD [5] имеет другой номер, тоже суется в определённый регистр(не уверен что в тот же), но заставляет исполнятся совершенно другой код ядра OpenBSD.