Âçàèìîäåéñòâèå ÿäðà è ÏÎ

Âçàèìîäåéñòâèå ÿäðà è ïîëüçîâàòåëüñêîãî ïðîãðàììíîãî îáåñïå÷åíèÿ ïðîèñõîäèò ïîñðåäñòâîì íàáîð ñèñòåìíûõ âûçîâîâ, êîòîðûå ðåàëèçîâàíû, èñïîëüçóÿ èíñòðóêöèè áûñòðûõ ñèñòåìíûõ âûçîâîâ AMD64 SYSCALL è SYSRET. Øëþçîâûé êîä âõîäà â ñèñòåìíûå âûçîâû, êîòîðûé íåñåò îòâåòñòâåííîñòü çà âîññòàíîâëåíèå ñîñòîÿíèÿ ïðîöåññîðà ïîñëå ñèñòåìíîãî âûçîâà, ðàñïîëîæåí íåïîñðåäñòâåííî â ÿäðå (ïåðâûå 16 Ìá ïàìÿòè).

Íîìåðà è ñèãíàòóðû, à òàêæå ñîãëàøåíèÿ î âûçîâå ñîîòâåòñòâóþò òàêîâûì â 64-áèòíûõ ÿäðàõ Linux, çà ñ÷åò ÷åãî äîñòèãàåòñÿ áèíàðíàÿ ñîâìåñòèìîñòü ñ ýòîé ñèñòåìîé.

Ñïèñîê ðåàëèçîâàííûõ ñèñòåìíûõ âûçîâîâ:

0x00 sys_read — ÷òåíèå ôàéëà

0x01 sys_write — çàïèñü â ôàéë

0x02 sys_open — îòêðûòèå ôàéëà

0x03 sys_close — çàêðûòèå ôàéëà

0x04 sys_stat — ïîëó÷åíèå èíôîðìàöèè î ôàéëå

0x05 sys_fstat — ïîëó÷åíèå èíôîðìàöèè î ôàéëîâîì äåñêðèïòîðå

0x07 sys_poll — îæèäàíèå äàííûõ â ôàéëå

0x08 sys_lseek — ïåðåìåùåíèå òåêóùåé ïîçèöèè â ôàéëå

0x09 sys_mmap — ñîçäàíèå îáùåé îáëàñòè ïàìÿòè (memory map)

0x0b sys_munmap — îñâîáîæäåíèå memory map

0x0c sys_brk — çàïðîñ äîïîëíèòåëüíîé ïàìÿòè

0x0d sys_rt_sigaction — óñòàíîâêà/÷òåíèå îáðàáîò÷èêà ñèãíàëà POSIX

0x0e sys_sigprocmask — óñòàíîâêà ìàñêè ñèãíàëîâ POSIX

0x10 sys_ioctl — óïðàâëåíèå óñòðîéñòâàìè

0x14 sys_writev — ìíîæåñòâåííàÿ çàïèñü â ôàéë

0x15 sys_access — ïðîâåðêà äîñòóïà ê ôàéëó

0x16 sys_pipe — ñîçäàíèå pipe

0x20 sys_dup — äóáëèêàöèÿ ôàéëîâîãî äåñêðèïòîðà

0x23 sys_nanosleep — îæèäàíèå

0x27 sys_getpid — ïîëó÷åíèå PID òåêóùåãî ïðîöåññà

0x39 sys_fork — äóáëèêàöèÿ ïðîöåññà

0x3b sys_execve — çàìåíà òåêóùåãî ïðîöåññà íîâûì

0x3c sys_exit — âûõîä

0x3d sys_wait4 — îæèäàíèå çàâåðøåíèÿ äî÷åðíåãî ïðîöåññà

0x3e sys_kill — îòïðàâêà ñèãíàëà ïðîöåññó

0x3f sys_uname — ïîëó÷åíèå èíôîðìàöèè î ñèñòåìå

0x48 sys_fcntl — óïðàâëåíèå ôàéëîâûì äåñêðèïòîðîì

0x49 sys_flock — áëîêèðîâêà ôàéëà

0x4a sys_fsync — ñáîð áóôåðà ôàéëà

0x4f sys_getcwd — ïîëó÷åíèå òåêóùåãî êàòàëîãà

0x50 sys_chdir — ñìåíà òåêóùåãî êàòàëîãà

0x52 sys_rename — ïåðåèìåíîâàíèå ôàéëà

0x57 sys_unlink — óäàëåíèå ôàéëà

0x59 sys_readlink — ÷òåíèå ñèìâîëüíîé ññûëêè

0x60 sys_gettimeofday — ïîëó÷åíèå äàòû è âðåìåíè

0x63 sys_sysinfo — ïîëó÷åíèå èíôîðìàöèè î ñèñòåìå

0xa2 sys_sync — ñáðîñ âñåõ ôàéëîâûõ áóôåðîâ

0xa9 sys_reboot — ïåðåçàãðóçêà è îòêëþ÷åíèå ñèñòåìû

0xc9 sys_time — ïîëó÷åíèå âðåìåíè

0xd9 sys_getdents64 — ÷òåíèå êàòàëîãà