Linux内核学习(2)-系统调用
程序员文章站
2022-05-09 21:24:41
...
1. 概念
系统调用是内核空间和用户空间的中间层。有如下作用:
- 为用户空间程序提供一层硬件抽象接口
- 保证系统稳定和安全
- 可移植性
2.系统调用表
- Linux的每一个系统调用都存在一个系统调用号,一旦分配不可更改。
- 对于ARM32定义在
arch/arm/include/uapi/asm/unistd.h
文件中:
/*
* This file contains the system call numbers.
*/
#define __NR_restart_syscall (__NR_SYSCALL_BASE+ 0)
#define __NR_exit (__NR_SYSCALL_BASE+ 1)
#define __NR_fork (__NR_SYSCALL_BASE+ 2)
#define __NR_read (__NR_SYSCALL_BASE+ 3)
#define __NR_write (__NR_SYSCALL_BASE+ 4)
#define __NR_open (__NR_SYSCALL_BASE+ 5)
#define __NR_close (__NR_SYSCALL_BASE+ 6)
/* 7 was sys_waitpid */
#define __NR_creat (__NR_SYSCALL_BASE+ 8)
#define __NR_link (__NR_SYSCALL_BASE+ 9)
#define __NR_unlink (__NR_SYSCALL_BASE+ 10)
#define __NR_execve (__NR_SYSCALL_BASE+ 11)
#define __NR_chdir (__NR_SYSCALL_BASE+ 12)
#define __NR_time (__NR_SYSCALL_BASE+ 13)
#define __NR_mknod (__NR_SYSCALL_BASE+ 14)
#define __NR_chmod (__NR_SYSCALL_BASE+ 15)
#define __NR_lchown (__NR_SYSCALL_BASE+ 16)
3.用程序访问系统调用和新增系统调用
- 通常应用程序不会直接访问系统调用,而是通过C标准库来访问系统调用
- 不提倡新增系统调用,会降低可移植性,且需要在linux和glibc社区进行讨论和沟通
上一篇: 模拟浏览器爬取网页