欢迎光临散文网 会员登陆 & 注册

网络套接字入口函数

2022-08-01 20:39 作者:补给站Linux内核  | 我要投稿


【文章福利】小编推荐自己的Linux内核技术交流群:【891587639】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!(含视频教程、电子书、实战项目及代码)   

套接字系统调用如何到达sys_socketcall

accept函数为例系统调用中参数从用户态向内核态的传递是通过寄存器完成的,eax表示系统调用,ebx表示第一个参数,ecx表示第二个参数,edx表示第三个参数(主要针对socke.S)

第一层:accept.s文件

(glibc函数库)sysdeps\unis\sysv\linux\accept.S

第二层:socket.S文件

重点看:

movl $SYS_ify(socketcall), %eax /* System call number in %eax.  */

展开SYS_iff()宏(glibc函数库: \sysdeps\unix\sysdep.h)

预处理后为:

所以:

这样套接字系统调用进入到正确的函数中了。

那么第一个参数是识别系统调用的具体函数的,这个参数在socket.S(glibc库)中:

关于SOCKOP_accept:

查看(glibc库:\sysdeps\unix\sysv\linux\socketcall.h)

在linux内核(include/linux/net.h):

第二个参数

在袜子。S中:以指针的方式设置了sys_socketcall的第二个参数

设置完以上的系统调用号还有参数后进入软中断:int $0x80,进入了内核态进行处理

第三层:entry.S文件

以上源码来自:linux内核源码1.2.12

格列克-2.0.1


网络套接字入口函数的评论 (共 条)

分享到微博请遵守国家法律