六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 31|回复: 0

Linux内核网络协议栈2-socket从库函数到内核

[复制链接]

升级  30.67%

24

主题

24

主题

24

主题

秀才

Rank: 2

积分
96
 楼主| 发表于 2013-1-26 13:03:03 | 显示全部楼层 |阅读模式
 
<div style="background-color: transparent; margin-top: 0px; margin-left: 0px; margin-bottom: 0px; margin-right: 0px;">
一、socket()库函数到系统调用,再到内核

<div style="background-color: transparent; margin-top: 0px; margin-left: 0px; margin-bottom: 0px; margin-right: 0px;">1、Linux运行的C库是glibc;
2、socket()调用如下:
1) socket()->__socket():glibc-2.3.6/sysdept/generic/socket.c (weak_alias(name1, name2))
2) __socket():glibc-2.3.6/sysdept/unix/sysv/linux/i386/socket.S
3) ENTER_KERNEL:
movl $SYS_ify(socketcall), %eax/* System call number in %eax.  *//* Use ## so `socket' is a separate token that might be #define'd.  */movl $P(SOCKOP_,socket), %ebx/* Subcode is first arg to syscall.  */lea 4(%esp), %ecx/* Address of args is 2nd arg.  */        /* Do the system call trap.  */ENTER_KERNEL这里,
SYS_ify宏定义为:glibc-2.3.6/sysdept/unix/sysv/linux/i386/Sysdept.h
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表