标题: linux中sendto()的源代码怎么找?
xinling101
新生入学
Rank: 1



UID 210673
精华 0
积分 15(积分有什么用?)
帖子 5
阅读权限 10
注册 2007-9-10
状态 离线
发表于 2008-4-16 21:30  资料  个人空间  短消息  加为好友 
linux中sendto()的源代码怎么找?

这几天看pppoe的源代码,看到send_disc()这个函数最后调用socket中的sendto()来发送数据包(通过PF_PACKET这个特殊的协议族直接访问驱动)。想看看sendto()的源代码,竟然在linux源码中找不到,我猜最终是调用的
sys_sendto()这个函数,但我不知道sendto()是如何跳到sys_sendto()去的,从源代码中搜寻不到任何信息。能有人给我解释一下吗?非常感谢![/
b]

[ 本帖最后由 xinling101 于 2008-4-16 21:33 编辑 ]

顶部
不容错过的IBM 集群技术资源汇总
zltjiangshi
版主
Rank: 7Rank: 7Rank: 7
注册用户


UID 160339
精华 0
积分 78(积分有什么用?)
帖子 502
阅读权限 100
注册 2006-6-8
状态 离线
发表于 2008-4-16 22:39  资料  个人空间  短消息  加为好友 
这个比较复杂,难以说清楚,可以百度一下“系统调用的进入"
主要步骤:
1,glibc里面的封装函数,一般是_syscalln(),执行一下int 0x80;
2,发生上下文切换,进到内核里面
3,根据预定义的系统调用号查找系统调用表,找到处理函数的地址
4,跳转到该地址执行(如sys_sendto())





1,本人乃Linux伊甸园“Linux内核学习”,“红旗等发行版”版主,请大家捧场。
2,红旗Linux在设备驱动,系统设置,中文美化,易用性方面做得非常好,建议大家使用。
3,本人是红旗Linux的粉丝,不是枪手。
顶部
xinling101
新生入学
Rank: 1



UID 210673
精华 0
积分 15(积分有什么用?)
帖子 5
阅读权限 10
注册 2007-9-10
状态 离线
发表于 2008-4-17 07:33  资料  个人空间  短消息  加为好友 


QUOTE:
原帖由 zltjiangshi 于 2008-4-16 22:39 发表
这个比较复杂,难以说清楚,可以百度一下“系统调用的进入"
主要步骤:
1,glibc里面的封装函数,一般是_syscalln(),执行一下int 0x80;
2,发生上下文切换,进到内核里面
3,根据预定义的系统调用号查找系 ...

明白了,多谢版主!

顶部
不容错过的IBM 集群技术资源汇总
xinling101
新生入学
Rank: 1



UID 210673
精华 0
积分 15(积分有什么用?)
帖子 5
阅读权限 10
注册 2007-9-10
状态 离线
发表于 2008-4-17 10:16  资料  个人空间  短消息  加为好友 
基本的原理明白了,另外再请教一下版主具体的问题:这个"sendto"我在linux源代码里找了一下,没有找到它具体是如何对应到一个系统调用的,我猜是通过一些宏吧!但没有找到。请版主指点。

另外,我之前只做过windows和vxworks的开发,从没看过linux这样大规模的源程序,现在有一点读代码的疑问,就是在linxu代码中,经常有:

#include <sys/stdio.h>

这样的语句,本来很简单,但我却经常找不到这个头文件到底在哪里,有时搜索整个源文件目录都找不到,另外sys的目录也找不到,请问这个sys是否是在makefile里面定义的?

问题或许简单了一点,但我确实不明白,能否请版主再指点一下,多谢!

顶部
不容错过的IBM 集群技术资源汇总
zltjiangshi
版主
Rank: 7Rank: 7Rank: 7
注册用户


UID 160339
精华 0
积分 78(积分有什么用?)
帖子 502
阅读权限 100
注册 2006-6-8
状态 离线
发表于 2008-4-17 17:52  资料  个人空间  短消息  加为好友 
sendto是glibc的函数,内核里没有,内核里只有sys_sendto
头文件都在/usr/include下面,sys是它的子目录。





1,本人乃Linux伊甸园“Linux内核学习”,“红旗等发行版”版主,请大家捧场。
2,红旗Linux在设备驱动,系统设置,中文美化,易用性方面做得非常好,建议大家使用。
3,本人是红旗Linux的粉丝,不是枪手。
顶部
xinling101
新生入学
Rank: 1



UID 210673
精华 0
积分 15(积分有什么用?)
帖子 5
阅读权限 10
注册 2007-9-10
状态 离线
发表于 2008-4-18 14:33  资料  个人空间  短消息  加为好友 
回复 #5 zltjiangshi 的帖子

我明白了,多谢斑竹!

顶部
不容错过的IBM 集群技术资源汇总
 



当前时区 GMT+8, 现在时间是 2008-5-17 01:37

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.078393 second(s), 5 queries

清除 Cookies - 联系我们 - Linux伊甸园 - Archiver - WAP