linux学习笔记(四)系统调用
2017-02-16 19:26
211 查看
系统调用
与内核通信
POSIX : IEEE标准C库:
系统调用:系统内核层面使用,应用层需要syscall
系统调用
asmlinkage 限定词 通知编译器仅从栈中提取该函数参数系统调用号
系统通过调用号来进行系统调用,在编译的时候已经确定系统调用表,例如x86-64就在 arch/i386/kernel/syscall_64.c
系统调用处理
应用程序通过软中断方式通知内核,通过一个异常导致系统切换到内核实现系统调用
参数验证
指针必须保证:内存区域属于用户空间
在进程的地址空间里
读写可执行等权限要说明
使用copy_to_user() 和copy_from_user()来进行内核用户层交换数据,它们的参数类似memcpy
使用capable() 来判断是否有权限,
系统调用注册
用户空间访问系统调用
_syscalln() n为0~6,代表需要传递的参数个数例如open 进行系统调用: _syscall3(long,open,const char*,filename,int,flags,int,mode);原型:long open(const char* filename,int flags,int mode);
相关文章推荐
- 调用Windows系统对话框
- 调用系统屏幕保护
- linux下使用系统调用读取文件中的路径
- 在VC中直接调用系统对话框
- Linux系统调用跟我学(2)――进程管理
- Select()系统调用及文件描述符集fd_set的应用
- linux下使用系统调用实现进程后台运行
- 5、对系统调用的返回进行判断
- 调用系统中的默认EMAIL程序
- MINIX系统调用EXIT分析
- linux下使用系统调用编程实现copy命令功能
- linux下使用系统调用取得当前用户名
- linux下使用系统调用取得当前用户名 (修订)
- Linux学习笔记-进入与退出系统[转帖]
- Linux2.4.18内核下基于LKM的系统调用劫持
- 操作系统中系统调用的必要性与实现
- 关于linux系统一启动就调用某个程序
- 如何调用自行设计的系统调用, --核心开发入门(3)
- 系统调用
- 剖析Windows系统服务调用机制