跳轉到內容

Linux 核心/系統呼叫

來自華夏公益教科書

Linux 核心系統呼叫由 glibc 匯出,都在一張紙上

System 

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

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
Time

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
Processes

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

sys/prctl.h:
prctl
 
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
Synchronization

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

signal.h:
kill
sigtimedwait
sigaltstack
sigpending
sigprocmask
sigaction
signal
sigsuspend

Unexported:
futex
set_robust_list
get_robust_list

restart_syscall
tgkill
rt_sigqueueinfo
rt_tgsigqueueinfo

mq_getsetattr
Memory 

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

Security

sys/fsuid.h:
setfsuid
setfsgid

keyutils.h:
add_key
request_key
keyctl

Unexported:
seccomp
Metadata

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
Data

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

Nonblocking IO

sys/epoll.h:
epoll_create1
epoll_create
epoll_ctl
epoll_wait
epoll_pwait

sys/select.h:
select

poll.h:
poll, ppoll

linux/aio_abi.h:
io_setup
io_destroy
io_submit
io_cancel
Network

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
Obsolete:
ipc, sgetmask, ssetmask, sysfs

accept, accept4 - 接受套接字上的連線

access, faccessat - 檢查使用者對檔案的許可權

acct - 開啟或關閉程序記賬

add_key - 向核心的金鑰管理設施新增金鑰

adjtimex, ntp_adjtime - 調整核心時鐘

afs_syscall, break, fattach, fdetach, ftime, getmsg, getpmsg, gtty, isastream, lock, madvise1, mpx, prof, profil, putmsg, putpmsg, security, stty, tuxcall, ulimit, vserver - 未實現的系統呼叫

alarm - 設定一個鬧鐘以傳送訊號

alloc_hugepages, free_hugepages - 分配或釋放巨型頁面

arch_prctl - 設定特定於體系結構的執行緒狀態

bdflush - 啟動、重新整理或調整緩衝區髒資料重新整理守護程序

bind - 將名稱繫結到套接字

bpf - 對擴充套件的 BPF 對映或程式執行命令

brk, sbrk - 更改資料段大小

cacheflush - 重新整理指令和/或資料快取的內容

capget, capset - 設定/獲取執行緒的許可權

chdir, fchdir - 更改工作目錄

chmod, fchmod, fchmodat - 更改檔案的許可權

chown, fchown, lchown, fchownat - 更改檔案的擁有者

chroot - 更改根目錄

clock_getres, clock_gettime, clock_settime - 時鐘和時間函式

clock_nanosleep - 高解析度睡眠,可指定時鐘

clone, __clone2 - 建立子程序

close - 關閉檔案描述符

connect - 在套接字上發起連線

copy_file_range - 從一個檔案複製一段資料到另一個檔案

create_module - 建立一個可載入模組條目

delete_module - 解除安裝核心模組

dup, dup2, dup3 - 複製檔案描述符

epoll_create, epoll_create1 - 開啟一個 epoll 檔案描述符

epoll_ctl - epoll 檔案描述符的控制介面

epoll_wait, epoll_pwait - 等待 epoll 檔案描述符上的 I/O 事件

eventfd - 建立一個用於事件通知的檔案描述符

execveat - 相對於目錄檔案描述符執行程式

execve - 執行程式

_exit, _Exit - 終止呼叫程序

exit_group - 退出程序中的所有執行緒

fallocate - 操作檔案空間

fanotify_init - 建立和初始化 fanotify 組

fanotify_mark - 在檔案系統物件上新增、刪除或修改 fanotify 標記

fcntl - 操作檔案描述符

flock - 對開啟的檔案應用或刪除建議鎖

fork - 建立子程序

fsync, fdatasync - 將檔案的記憶體狀態與儲存裝置同步

futex - 快速使用者空間鎖定

futimesat - 相對於目錄檔案描述符更改檔案的 timestamps

getcontext, setcontext - 獲取或設定使用者上下文

getcpu - 確定呼叫執行緒正在執行的 CPU 和 NUMA 節點

getcwd, getwd, get_current_dir_name - 獲取當前工作目錄

getdents, getdents64 - 獲取目錄條目

getdomainname, setdomainname - 獲取/設定 NIS 域名

getdtablesize - 獲取檔案描述符表大小

getgid, getegid - 獲取組標識

getgroups, setgroups - 獲取/設定輔助組 ID 列表

gethostid, sethostid - 獲取或設定當前主機的唯一識別符號

gethostname, sethostname - 獲取/設定主機名

getitimer, setitimer - 獲取或設定間隔計時器的值

get_kernel_syms - 檢索匯出的核心和模組符號

get_mempolicy - 檢索執行緒的 NUMA 記憶體策略

getpagesize - 獲取記憶體頁面大小

getpeername - 獲取連線的對等套接字的名稱

getpid, getppid - 獲取程序標識

getpriority, setpriority - 獲取/設定程式排程優先順序

getrandom - 獲取一系列隨機位元組

getresuid, getresgid - 獲取真實、有效和儲存的使用者/組 ID

getrlimit, setrlimit, prlimit - 獲取/設定資源限制

get_robust_list, set_robust_list - 獲取/設定健壯的 futex 列表

getrusage - 獲取資源使用情況

getsid - 獲取會話 ID

getsockname - 獲取套接字名稱

getsockopt, setsockopt - 獲取和設定套接字上的選項

get_thread_area, set_thread_area - 為執行緒本地儲存設定 GDT 條目

gettid - 獲取執行緒標識

gettimeofday, settimeofday - 獲取/設定時間

getuid, geteuid - 獲取使用者標識

getunwind - 將展開資料複製到呼叫者的緩衝區

idle - 使程序 0 處於空閒狀態

init_module, finit_module - 載入核心模組

inotify_add_watch - 向已初始化的 inotify 例項新增監視

inotify_init, inotify_init1 - 初始化 inotify 例項

inotify_rm_watch - 從 inotify 例項中刪除現有監視

intro - 系統呼叫的介紹

io_cancel - 取消正在進行的非同步 I/O 操作

ioctl_console - 控制檯終端和虛擬控制檯的 ioctl

ioctl - 控制裝置

ioctl_fat - 操作 FAT 檔案系統

ioctl_ficlonerange, ioctl_ficlone - 與另一個檔案共享部分資料

ioctl_fideduperange - 與另一個檔案共享部分資料

ioctl_getfsmap - 檢索檔案系統的物理佈局

ioctl_iflags - 用於 inode 標記的 ioctl() 操作

ioctl_list - Linux/i386 核心中 ioctl 呼叫的列表

ioctl_ns - 用於 Linux 名稱空間的 ioctl() 操作

ioctl_tty - 用於終端和序列線路的 ioctl

ioctl_userfaultfd - 建立一個用於處理使用者空間中的頁面錯誤的檔案描述符

io_destroy - 銷燬非同步 I/O 上下文

io_getevents - 從完成佇列中讀取非同步 I/O 事件

ioperm - 設定埠輸入/輸出許可權

iopl - 更改 I/O 許可權級別

ioprio_get, ioprio_set - 獲取/設定 I/O 排程類別和優先順序

io_setup - 建立非同步 I/O 上下文

io_submit - 提交非同步 I/O 塊以供處理

ipc - System V IPC 系統呼叫

kcmp - 比較兩個程序以確定它們是否共享核心資源

kexec_load, kexec_file_load - 載入一個新的核心以供稍後執行

keyctl - 操作核心的金鑰管理設施

killpg - 向程序組傳送訊號

kill - 向程序傳送訊號

link, linkat - 為檔案建立新名稱

listen - 在套接字上監聽連線

_llseek - 重置讀/寫檔案偏移量

lookup_dcookie - 返回目錄項的路徑

lseek - 重置讀/寫檔案偏移量

madvise - 提供有關記憶體使用的建議

mbind - 為記憶體範圍設定記憶體策略

membarrier - 在一組執行緒上發出記憶體屏障

memfd_create - 建立匿名檔案

migrate_pages - 將程序中的所有頁面移動到另一組節點

mincore - 確定頁面是否駐留在記憶體中

mkdir, mkdirat - 建立目錄

mknod, mknodat - 建立特殊檔案或普通檔案

mlock, mlock2, munlock, mlockall, munlockall - 鎖定和解鎖記憶體

mmap2 - 將檔案或裝置對映到記憶體

mmap, munmap - 將檔案或裝置對映或解除對映到記憶體

modify_ldt - 獲取或設定每個程序的 LDT 項

mount - 掛載檔案系統

move_pages - 將程序的單個頁面移動到另一個節點

mprotect, pkey_mprotect - 設定記憶體區域的保護

mq_getsetattr - 獲取/設定訊息佇列屬性

mq_notify - 註冊訊息可用時的通知

mq_open - 開啟訊息佇列

mq_receive, mq_timedreceive - 從訊息佇列接收訊息

mq_send, mq_timedsend - 將訊息傳送到訊息佇列

mq_unlink - 刪除訊息佇列

mremap - 重新對映虛擬記憶體地址

msgctl - System V 訊息控制操作

msgget - 獲取 System V 訊息佇列識別符號

msgrcv, msgsnd - System V 訊息佇列操作

msync - 將檔案與記憶體對映同步

name_to_handle_at, open_by_handle_at - 獲取路徑名的控制代碼並透過控制代碼開啟檔案

nanosleep - 高解析度睡眠

nfsservctl - 對核心 nfs 守護程式的系統呼叫介面

nice - 更改程序優先順序

open, openat, creat - 開啟並可能建立檔案

outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - 埠 I/O

pause - 等待訊號

pciconfig_read, pciconfig_write, pciconfig_iobase - pci 裝置資訊處理

perf_event_open - 設定效能監控

perfmonctl - IA-64 效能監控單元的介面

personality - 設定程序執行域

pipe, pipe2 - 建立管道

pivot_root - 更改根檔案系統

pkey_alloc, pkey_free - 分配或釋放保護金鑰

poll, ppoll - 等待檔案描述符上的某些事件

posix_fadvise - 預先宣告檔案資料的訪問模式

prctl - 對程序的操作

pread, pwrite - 從給定偏移量讀取或寫入檔案描述符

process_vm_readv, process_vm_writev - 在程序地址空間之間傳輸資料

ptrace - 程序跟蹤

query_module - 查詢核心以獲取有關模組的各種資訊

quotactl - 操作磁碟配額

readahead - 將檔案預讀到頁面快取

readdir - 讀取目錄項

readlink, readlinkat - 讀取符號連結的值

read - 從檔案描述符讀取

readv, writev, preadv, pwritev, preadv2, pwritev2 - 將資料讀入或寫入多個緩衝區

reboot - 重啟或啟用/停用 Ctrl-Alt-Del

recvmmsg - 在套接字上接收多條訊息

recv, recvfrom, recvmsg - 從套接字接收訊息

remap_file_pages - 建立非線性檔案對映

rename, renameat, renameat2 - 更改檔案的名稱或位置

request_key - 從核心金鑰管理工具請求金鑰

restart_syscall - 在被停止訊號中斷後重啟系統呼叫

rmdir - 刪除目錄

rt_sigqueueinfo, rt_tgsigqueueinfo - 排隊訊號和資料

s390_pci_mmio_write, s390_pci_mmio_read - 將資料傳輸到/從 PCI MMIO 記憶體頁面

s390_runtime_instr - 啟用/停用 s390 CPU 執行時檢測

s390_sthyi - 模擬 STHYI 指令

sched_get_priority_max, sched_get_priority_min - 獲取靜態優先順序範圍

sched_rr_get_interval - 獲取命名程序的 SCHED_RR 間隔

sched_setaffinity, sched_getaffinity - 設定和獲取執行緒的 CPU 親和力掩碼

sched_setattr, sched_getattr - 設定和獲取排程策略和屬性

sched_setparam, sched_getparam - 設定和獲取排程引數

sched_setscheduler, sched_getscheduler - 設定和獲取排程策略/引數

sched_yield - 讓出處理器

seccomp - 操作程序的安全計算狀態

select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO - 同步 I/O 多路複用

semctl - System V 訊號量控制操作

semget - 獲取 System V 訊號量集識別符號

semop, semtimedop - System V 訊號量操作

sendfile - 在檔案描述符之間傳輸資料

sendmmsg - 在套接字上傳送多條訊息

send, sendto, sendmsg - 在套接字上傳送訊息

seteuid, setegid - 設定有效使用者或組 ID

setfsgid - 設定用於檔案系統檢查的組標識

setfsuid - 設定用於檔案系統檢查的使用者標識

setgid - 設定組標識

set_mempolicy - 為執行緒及其子執行緒設定預設 NUMA 記憶體策略

setns - 將執行緒重新關聯到名稱空間

setpgid, getpgid, setpgrp, getpgrp - 設定/獲取程序組

setresuid, setresgid - 設定真實、有效和儲存的使用者或組 ID

setreuid, setregid - 設定真實和/或有效使用者或組 ID

setsid - 建立會話並設定程序組 ID

set_tid_address - 設定指向執行緒 ID 的指標

setuid - 設定使用者標識

setup - 設定裝置和檔案系統,掛載根檔案系統

sgetmask, ssetmask - 操作訊號掩碼(已過時)

shmat, shmdt - System V 共享記憶體操作

shmctl - System V 共享記憶體控制

shmget - 分配 System V 共享記憶體段

shutdown - 關閉全雙工連線的一部分

sigaction, rt_sigaction - 檢查和更改訊號操作

sigaltstack - 設定和/或獲取訊號堆疊上下文

signal - ANSI C 訊號處理

signalfd - 為接受訊號建立檔案描述符

sigpending, rt_sigpending - 檢查掛起的訊號

sigprocmask, rt_sigprocmask - 檢查和更改阻塞訊號

sigqueue - 將訊號和資料排隊到程序

sigreturn, rt_sigreturn - 從訊號處理程式返回並清理堆疊幀

sigsuspend, rt_sigsuspend - 等待訊號

sigwaitinfo, sigtimedwait, rt_sigtimedwait - 同步等待排隊的訊號

socketcall - 套接字系統呼叫

socket - 建立通訊端點

socketpair - 建立一對連線的套接字

splice - 將資料拼接進/出管道

spu_create - 建立新的 spu 上下文

spu_run - 執行 SPU 上下文

statfs, fstatfs - 獲取檔案系統統計資訊

stat, fstat, lstat, fstatat - 獲取檔案狀態

statvfs, fstatvfs - 獲取檔案系統統計資訊

statx - 獲取檔案狀態(擴充套件)

stime - 設定時間

subpage_prot - 為地址範圍定義子頁面保護

swapon, swapoff - 啟動/停止將檔案/裝置交換到記憶體

symlink, symlinkat - 為檔案建立新名稱

sync_file_range - 將檔案段與磁碟同步

sync, syncfs - 將檔案系統快取提交到磁碟

syscall - 間接系統呼叫

_syscall - 在沒有庫支援的情況下呼叫系統呼叫(已過時)

syscalls - Linux 系統呼叫

sysctl - 讀取/寫入系統引數

sysfs - 獲取檔案系統型別資訊

sysinfo - 返回系統資訊

syslog, klogctl - 讀取和/或清除核心訊息環形緩衝區;設定 console_loglevel

tee - 複製管道內容

time - 獲取以秒為單位的時間

timer_create - 建立 POSIX 每個程序計時器

timer_delete - 刪除 POSIX 每個程序計時器

timerfd_create, timerfd_settime, timerfd_gettime - 透過檔案描述符通知的計時器

timer_getoverrun - 獲取 POSIX 每個程序計時器的超執行計數

timer_settime, timer_gettime - 啟用/停用並獲取 POSIX 每個程序計時器的狀態

times - 獲取程序時間

tkill, tgkill - 向執行緒傳送訊號

truncate, ftruncate - 將檔案截斷到指定長度

umask - 設定檔案模式建立掩碼

umount, umount2 - 解除安裝檔案系統

uname - 獲取當前核心的名稱和資訊

unlink, unlinkat - 刪除名稱以及可能引用的檔案

unshare - 與程序執行上下文的一部分分離

uselib - 載入共享庫

userfaultfd - 建立檔案描述符以在使用者空間處理頁面錯誤

ustat - 獲取檔案系統統計資訊

utimensat, futimens - 以納秒精度更改檔案時間戳

utime, utimes - 更改檔案的最後訪問和修改時間

vfork - 建立子程序並阻塞父程序

vhangup - 虛擬掛起當前終端

vm86old, vm86 - 進入虛擬 8086 模式

vmsplice - 將使用者頁面拼接入管道

wait3, wait4 - 等待程序狀態改變,BSD 風格

wait, waitpid, waitid - 等待程序狀態改變

write - 寫入檔案描述符

華夏公益教科書