Перейти до вмісту

Ядро Linux/Системні виклики (Syscalls)

Матеріал з Вікіпідручника

Системні виклики (Syscalls) ядра Linux

[ред.]

Як експортуються бібліотекою glibc, все на одній сторінці

[ред.]
Система 

sys/ioctl.h:
ioctl

sys/random.h:
getrandom

pci.h:
pciconfig_read
pciconfig_write

linux/sysctl.h:
sysctl

linux/membarrier.h:
membarrier

sys/klog.h:
syslog

linux/bpf.h:
bpf

grp.h:
setgroups

sys/utsname.h:
uname

sys/prctl.h:
prctl

linux/getcpu.h:
getcpu

sys/sysinfo.h:
sysinfo

sys/personality.h:
personality

sys/ptrace.h:
ptrace

linux/kexec.h:
kexec_file_load
kexec_load

linux/reboot.h:
reboot

Unexported:
delete_module
init_module
finit_module
perf_event_op
rseq
Час

sys/time.h:
futimesat
utimes
gettimeofday
settimeofday
getitimer, setitimer

time.h:
clock_settime
clock_gettime
clock_getres
clock_nanosleep
time
stime
nanosleep
posix-timers.c:
timer_create
timer_gettime
timer_getoverrun
timer_settime
timer_delete

sys/timerfd.h:
timerfd_create
timerfd_settime
timerfd_gettime

sys/eventfd.h:
eventfd2
eventfd

utime.h:
utime

sys/times.h:
times

bits/time.h:
clock_adjtime

sys/timex.h:
adjtimex

Безпека

sys/fsuid.h:
setfsuid
setfsgid

keyutils.h:
add_key
request_key
keyctl

Unexported:
seccomp
Процеси

unistd.h:
fork, vfork
brk
getpid
uselib
execve, execveat
nice
getgroups
getgid, setgid
getuid, setuid
getresuid, setresuid
getresgid, setresgid
getsid, setsid
setpgid, getpgid
getppid
getegid
geteuid
getpgrp
setreuid
setregid
pause
alarm
acct

sched.h:
clone
sched_setscheduler
sched_setparam
sched_setattr
sched_getscheduler
sched_getparam
sched_getattr
sched_setaffinity
sched_getaffinity
sched_yield
sched_get_priority_max
sched_get_priority_min
sched_rr_get_interval
unshare
setns

linux/unistd.h:
set_tid_address
exit_group

sys/resource.h:
setpriority, getpriority
getrlimit setrlimit
getrusage
gettid

linux/kcmp.h:
kcmp

sys/capability.h:
capget, capset

stdlib.h:
exit
Синхронізація

sys/sem.h:
semget
semctl
semtimedop
semop

mqueue.h:
mq_open
mq_unlink
mq_timedsend
mq_timedreceive
mq_notify

sys/msg.h:
msgget
msgctl
msgsnd
msgrcv

sys/wait.h:
waitid
wait4
waitpid

sys/signalfd.h:
signalfd4
signalfd

sys/epoll.h:
epoll_create1
epoll_create
epoll_ctl
epoll_wait
epoll_pwait

signal.h:
rt_sigprocmask
rt_sigpending
rt_sigtimedwait
kill
sigaltstack
sigpending
sigprocmask
rt_sigaction
sigaction
signal
rt_sigsuspend
sigsuspend

Unexported:
futex
set_robust_list
get_robust_list

restart_syscall
tgkill
rt_sigqueueinfo
rt_tgsigqueueinfo

mq_getsetattr
'Пам'ять 

numaif.h:
mbind
set_mempolicy
migrate_pages
get_mempolicy

numaif.h:
move_pages

sys/mman.h:
msync
mincore
munmap
remap_file_pages
mremap
mlock, mlock2
munlockmlockall
munlockall
mprotect
pkey_mprotect
pkey_alloc
pkey_free
madvise

sys/shm.h: 

shmget, shmctl
shmat, shmdt

sys/swap.h:
swapoff, swapon

sys/memfd.h: 
memfd_create
Метадані

sys/stat.h:
stat

sys/statfs.h:
statfs
fstatfs

sys/inotify.h:
inotify_init1
inotify_init
inotify_add_watch
inotify_rm_watch

sys/fanotify.h:
fanotify_init
fanotify_mark

sys/xattr.h:
setxattr
lsetxattr
fsetxattr
getxattr
lgetxattr
fgetxattr
listxattr
llistxattr
flistxattr
removexattr
lremovexattr
fremovexattr

sys/quota.h:
quotactl

stdio.h:
renameat
rename

Unexported:
statx
io_getevents
io_pgetevents
fsopen
fspick
lookup_dcookie
renameat2
fsinfo
open_tree
fsmount
move_mount
pivot_root
getdents
vmsplice
name_to_handle_at
open_by_handle_at
pselect6
userfaultfd
mmap_pgoff
ioprio_set
ioprio_get
Дані

fcntl.h:
open, openat
fcntl
sync_file_range
fallocate
creat
splice
tee
readahead

unistd.h:
truncate, ftruncate
faccessat, access
fchdir, chdir 
chroot
fchownat, chown
lchown, fchown
close
vhangup
pipe, pipe2
sync, syncfs
fsync, fdatasync
dup, dup2, dup3
lseek
read, write
copy_file_range

sys/uio.h:
readv, writev
preadv, pwritev
preadv2, pwritev2
process_vm_readv
process_vm_writev

sys/file.h:
flock

sys/mount.h:
mount, umount

Неблокуючий Ввід/Вивід

sys/select.h:
select

poll.h:
poll, ppoll

linux/aio_abi.h:
io_setup
io_destroy
io_submit
io_cancel
Мережа

sys/socket.h:
socket, socketpair
bind
listen
accept, accept4
connect
getsockname
getpeername
send, recv
sendto, recvfrom
setsockopt, getsockopt
shutdown
sendmsg, sendmmsg
recvmsg, recvmmsg

linux/net.h:
socketcall

sys/sendfile.h:
sendfile
unistd.h:
sethostname
gethostname
setdomainname
Застарілі:
ipc, sgetmask, ssetmask, sysfs

IOCTL

[ред.]

ioctl - керування пристроєм

Синтаксис

 #include <sys/ioctl.h>

 int ioctl(int fd, unsigned long request, ...);

Описання

Системний виклик ioctl() мініпулює параметрами зазначеного пристрою із спеціальним файлом. Зокрема, керування багатьма характеристиками спеціальних символьних файлів (наприклад, термінатори) може відбуватися за допомогою запитів ioctl(). 
  • Аргумент fd має бути відкритим дескриптором файлу.
  • Другий аргумент визначає код запиту, який залежить від пристрою.
  • Третій аргумент є нетипізованим вказівником на пам'ять. Традиційно це параметр char *argp (з того часу як з'явився void * в мові C).

GETRANDOM

[ред.]

getrandom - отримує послідовність випадкових байт

Синтаксис

#include <sys/random.h>

ssize_t getrandom(void *buf, size_t buflen, unsigned int flags);

Описання

Системний виклик getrandom() заповнює буфер, на який вказує параметр buf випадковими байтами, кількість яких дорівнює buflen. Ці числа можуть використовуватися для генераторами випадкових чисел в просторі користувача, або для задач шифрування.

Посилання:

[ред.]