linux system函数传参,Linux系统调用例程system_call和参数传递

系统调用接口调用“int $Ox8O”指令进入内核并准各了相关参数后,剩下的工作就由系统调用例程来进行。Linux定义的系统调用 例程的入口为system_call。下面具体介绍system_call所做的工作。

system_call是用汇编语言编写的,在i386体系中,其前半部分代码如下:

758ab910d01219f552896c8778f6c950.gif

这部分代码的任务是传递系统调用号和参数。

前面谈到,为了识别具体的内核服务例程,必须用寄存器eax传递系统调用号。除此之外,某些内核服务例程还需要一些由用户提供 的参数。例如,内核服务例程mmap()除系统调用号之外还需要6个参数。

传递参数的任务是由处理器的寄存器来完成的。

在IJbO系统中,用来进行参数传递工作的寄存器依次为eax、ebx、ecx、edx、est和edi。其中,eax被指定用于系统调用号的传递。 所以,在函数system_call中,一开始就使用宏SAVE_ALL把处理器的各寄存器压栈,以便以后系统调用服务例程可从内核堆栈中根据 需要找到相关的参数。

可见,为了传递参数,在系统调用接口中就应把所有参数按照规定事先存入各寄存器。至于参数多于6个的情况,可采用在内存中设 置一个参数缓冲区,而让处理器的寄存器作为指针指向的这个参数缓冲区的办法来解决。

接下来,程序对进程传递的系统调用号进行有效性检查。如果无效,则系统调用中止:

745b6b39b6644f25684f008149abfa09.gif

如果有效,则根据寄存器eax提供的系统调用号并通过Syscall_table来调用对应的内核服务例程:call*sys_call_table(0,% eax,4)

当服务例程结束时,system_call从eax获得返回值,然后跳转到返回函数ret_from_sys_call返回用户态:

movl % eax,24(% esp)

jmp ret_from_sys_call

:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sci-Hub重生了,这回用上了分布式网络

来源:Python开发者在网站域名屡次被撤销之后, Sci-Hub 创始人 Alexandra Elbakyan 在分布式域名网络 Handshake 上注册了新的网站。现在,每个用户都可以直接通过服务门户和 NextDNS 直接访问 Sci-Hub。NextDNS:https://learn.name…

Dede更新提示DedeTag Engine Create File False的解决办法

第一种情况:列表、频道、文章等命名规则未填写或填写错误 此种情况较为少见,因为初级用户一般不会去修改这些东西,情况可以大致分为: 命名规则未填写(即为空)解决方法:只需填好相应的规则即可&a…

超级人工智能何时能实现?

来源:赛先生制版编辑 :Morgan撰文:斯图尔特罗素(加州大学伯克利分校计算机科学家,人类兼容人工智能中心主任)01近未来1997年5月3日,IBM制造的国际象棋计算机“深蓝”和国际象棋世界冠军加里卡斯…

linux cache buffer区别,Linux buffer/cache异同

buffers与cached1)、异同点在Linux 操作系统中,当应用程序需要读取文件中的数据时,操作系统先分配一些内存,将数据从磁盘读入到这些内存中,然后再将数据分发给应用程序;当需要往文件中写 数据时,操作系统先…

sql中join与left-join图解区别

select a.* from YG_BRSYK a left join(SELECT DISTINCT SYXH,STUFF((SELECT 、MS FROM #lsb where SYXHt.SYXH FOR XML PATH()),1,1,) AS MSFROM #lsb as t) c on a.SYXHc.SYXH WHERE c.MS IS NOT NULL order by RYBQ --注:left join...on 为左关联,保…

很遗憾,自然语言理解是AI尚未攻克的领域

来源: Venture Beat作者: Pieter Buteneers编译: 科技行者短短几年之内,深度学习算法得到了长足发展,不仅在棋类游戏中击败了全球最顶尖的选手,也能够以等同于、甚至超越人类的准确率识别人脸。但事实证明,人类语言仍是一项独特且…

jsp+javabean实现购物车

采用Model1(jspjavabean) 实现DBHelper类创建实体类创建业务逻辑类(dao) DBHelper类的设计package util;import java.sql.Connection; import java.sql.DriverManager;public class DBHelper {private static final String drive…

里程碑 | 原来大脑有两套GPS!陆军军医大学张生家团队发现海马外全新空间导航系统...

来源:iNature位置细胞,网格细胞,边界细胞和头部方向细胞的空间选择性激发是构成以海马-肠内复合体为中心的典型空间导航系统的基本构建块。虽然可以在整个大脑中找到头部方向细胞,但是海马结构外部的空间调节通常与其他表示形式&a…

iar 连接linux开发板,LED裸机程序(IAR)

LED裸机程序(IAR)一、实验环境开发环境:IAR5.30开发板:UT-S3C6410开发工具:JLINK V8二、实验目的在无操作系统的开发板上,运行程序,掌握裸机程序的开发过程,熟悉IAR和JLINK的使用。三、实验步骤1、准备工作…

简易呼吸灯c语言程序,呼吸灯 - 单片机教程 - C语言网

1.双定时器呼吸灯实现呼吸灯的实现原理就是让小灯的IO端口在一段时间里PWM由大到小变化的占空比输出,接着又由小到大的占空比输出,小灯显示效果就是时亮时暗地交替闪烁。首先我们用定时器0定时0.1ms,全局变量pwm在其中断函数里执行简单的从0到…

Python学习---面向对象的学习[深入]

类的深入学习 a. Python中一切事物都是对象 b. class Foo: pass obj Foo() # obj是对象,Foo类 # Foo类也是一个对象,type的对象 c. 类都是type类的对象 type(..) “对象”都是以类的对象 类() d. 类实际上是type类型的对象,所有的…

TCP/IP模型

应用层(会话层,表示层,应用层) HTTP FTP DNS 传输层(传输层) TCP UDP 网际层(网络层) IP 网络接口层(物理层…

c语言银行卡管理系统程序设计报告,《c语言程序设计》课程设计报告-职工信息管理系统.doc...

《c语言程序设计》课程设计报告-职工信息管理系统.doc还剩24页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,很抱歉,此页已超出免费预览范围啦!如果喜欢就下载吧,价低环保!内容…

今年,自动驾驶卡车将在无人驾驶的情况下上路

文章来源:IEEE电气电子工程师Photo: TuSimpleFirst in Freight: In 2021, San Diego–based startup TuSimple plans to deploy autonomous trucks that drive themselves from pickup to delivery without anybody on board.Tesla、Uber、Cruise和Waymo等公司承诺&…

线上服务CPU100%问题快速定位实战

功能问题,通过日志,单步调试相对比较好定位。 性能问题,例如线上服务器CPU100%,如何找到相关服务,如何定位问题代码,更考验技术人的功底。 58到家架构部,运维部,58速运技术部联合进行…

最新研究:超级人工智能,从理论上就无法控制

文章来源:机器之心作者:Charles Q. Choi 编辑:泽南、杜伟近日,一项新的研究发现,从理论上来看,人类不可能控制超级人工智能。更为糟糕的是,这项研究也明确了人类无法在这种 AI 生成之时发现它…

看懂2020年智能浪潮,我们从百度和谷歌的AI足迹出发

来源: 脑极体2020年已经过去,无论我们过得顺遂平安,还是过得无比艰难,我们应该都会记住这一年。回顾2020年,在这个不同寻常的疫情之年,科技成为人类抗击疫情的关键,而人工智能技术投入抗疫战争之…

2021年值得关注的人工智能与机器学习的五大趋势

文章来源:科技心时代人工进行智能和机器可以学习是市场上的热门专业技术,其重要性在2020年达到顶峰,这两种信息技术发展已经到了广泛应用在各行业领域,其范围从电子商务到量子计算管理系统,从医疗诊断分析系统到消费电…

城市生态的机器人革命

来源: 脑极体城市居民能看到绿色、与自然亲近的机会,被高楼大厦挤压得越来越少,如果有一天,连机器人、无人车和无人机都要来侵占人类的休闲空间,会发生什么呢?至少目前看来,如果不采取措施&…

数据通信基础知识

常用的两种入网方式: 1. 电话线入网 电话线发出来的是数字信号,需要用调制解调器(🐱)转换位模拟信号 例如:我计算机发 在吗 ,电话线发出来是01011100, 调制解调器把数字信号转为模拟信号发到广域网 之…