linux内核杂记(15)-系统调用(2)
1、内核在执行系统调用时,处于进程上下文状态,current指针指向调用 系统调用的进程。
2、在进程上下文中
(1)内核可休眠(比如在系统调用阻塞或显式调用 schedule()时)。
休眠说明系统调用可使用内核提供的绝大部分功能。
(2)内核可被抢占
就像用户空间内的进程一样,当前进程同样可被其它进程抢占。因为新的进程要使用相同的系统调用,所以必须小心,保证该系统是可重入。
当系统调用 返回时,控制权仍然在system_call()中,它最终会切换到用户空间,让用户进程继续执行
3、系统调用的绑定:
系统调用必须编译进内核,不能编译成模块
以sys_mytest 为例
(1)在系统调用表中最后加入一项,观察其最后一项调用号多少,一般加1即可,从0开始编号
在entry.s中
ENTRY(sys_call_table)
.long sys_restart_syscall/*0*/
...
.long sys_recvmsg/*337*/
.long sys_mytest
(2)将系统调用号加入<asm/unistd.h>
#define __NR_mytest 338
(3)实现mytest()调用
kernel/sys.c 文件中(也可根据其功能放入联系最紧密的代码中)
#include <asm/page.h>
asmlinkage long sys_mytest(void){........return ......
}
linux内核杂记(15)-系统调用(2)相关推荐
- linux内核杂记(16)-系统调用(3)
1.系统调用的2种使用方式: (1)靠C库支持,用户程序通过包含标准头文件并和C库链接,可使用系统调用 (2)调用库函数,再由库函数实际调用. 提示:如果你只写出系统调用,glibc库恐怕不提供支持. ...
- linux内核杂记(13)-系统调用(1)
1.系统调用 在用户空间进程和硬件 设备之间增加了一具中间层.其作用如下: (1)为用户空间提供了一种硬件 的抽象接口. (2)保证了系统的稳定 和安全 (3)每个进程 运行在虚拟系统中,而在用户空间 ...
- Linux内核深入理解系统调用(3):open 系统调用实现以及资源限制(setrlimit/getrlimit/prlimit)
Linux内核深入理解系统调用(3) open 系统调用实现以及资源限制(setrlimit/getrlimit/prlimit) rtoax 2021年3月 对原文进行了5.10.13的代码分析. ...
- Linux内核深入理解系统调用(2):vsyscall 和 vDSO 以及程序是如何运行的(execve)
Linux内核深入理解系统调用(2) vsyscall 和 vDSO 以及程序是如何运行的(execve) rtoax 2021年3月 1. vsyscalls 和 vDSO 这是讲解 Linux 内 ...
- 跟踪分析Linux内核5.0系统调用处理过程
跟踪分析Linux内核5.0系统调用处理过程 学号384 原创作业转载请注明出处+中国科学技术大学孟宁老师的Linux操作系统分析 https://github.com/mengning/linuxk ...
- linux内核打开prntk,操作系统实验一向Linux内核增加一个系统调用.docx
操作系统实验一: 向Linux内核增加一个系统调用 xx 711103xx 2012年3月18日 一.实验目的 通过实验,熟悉Linux操作系统的使用,掌握构建与启动Linux内核的方法:掌握用 户程 ...
- Linux内核深入理解系统调用(1):初始化-入口-处理-退出
Linux内核深入理解系统调用(1):初始化-入口-处理-退出 rtoax 2021年3月 1. Linux 内核系统调用简介 这次提交为 linux内核解密 添加一个新的章节,从标题就可以知道, 这 ...
- linux的第一个内核,Linus Torvalds启动了第一个RC版本的Linux内核4.15
Linus Torvalds发布了Linux 4.15内核系列的第一个RC(Release Candidate)里程碑,该版本从Linux内核4.14 LTS开始,在标准的两周合并窗口后开始了开发周期 ...
- AlmaLinux、CentOS、Rocky Linux 8 如何更新到 Linux 内核 5.15
请访问原文链接:https://sysin.org/blog/centos-8-upgrade-kernel/,查看最新版.原创作品,转载请保留出处. 作者:gc(at)sysin.org,主页:ww ...
最新文章
- 北大博士“最高荣誉”,出炉!
- 20道常见初级Java面试题
- 社区v2022.3版上线:发帖、看直播、评论体验升级,并支持机构号申请
- TOJ_1003题解
- 于ubuntu配置hadoop当问题
- 中国金融数字科创大赛丨神策数据客户——深圳农商银行、昆山农商银行斩获「双奖」
- JsTree实现简单的CRUD
- WebbUpload上传组件(cnblog 一位网友写的)
- JavaScript类型转换的有趣应用
- 从零开始的Python学习Episode 20——面向对象(3)
- 张国荣的25年演艺生涯
- Win10磁盘管理教程:新建、合并分区,添加和修改盘符
- 什么是一套完全私有的即时通讯系统
- Modra Pharmaceuticals于2021 ASCO GU年会公布其转移性前列腺癌IIb期临床试验初步数据
- 数值计算笔记-部分主元消去cholesky分解
- HIS 与医保系统的接入方案及实现
- 事实胜于雄辩,激素性皮炎的治疗激素皮炎的治疗面部激素性皮炎在康本
- 微信小程序 之 云开发
- 优于FCOS:在One-Stage和Anchor-Free目标检测中以最小的成本实现最小的错位(代码待开源)...
- 中国债券信息网——债券募集说明书