Chinaunix

标题: 系统调用的实现在么找 [打印本页]

作者: palm008    时间: 2014-03-25 10:42
标题: 系统调用的实现在么找
问题:
阅读kernel源码发现怎么只有系统调用的声明,找不到系统调用的实现呢?
请问,系统调用的实现代码在那个文件呢?比如 sys_getpid 函数
作者: humjb_1983    时间: 2014-03-25 11:23
搜索 SYSCALL_DEFINE
作者: arm-linux-gcc    时间: 2014-03-25 11:36
先找到声明,如sys_abc,数一下有几个参数,比如4个
然后:grep -nr SYSCALL_DEFINE4 ./ | grep abc
作者: palm008    时间: 2014-03-25 13:52
谢谢两位的指教,感激涕零。
作者: kiongf    时间: 2014-03-25 20:18
回复 3# arm-linux-gcc


    赞。好方法。之前都是用cssope搜索正则..
作者: arm-linux-gcc    时间: 2014-03-25 21:34
回复 5# kiongf


    其实我大部分时候都用source insight的,先搜索SYSCALL_DEFINE4,然后在结果里搜索abc
作者: asuka2001    时间: 2014-03-26 09:27
回复 1# palm008

可以在 SI中打开正则表达式搜索,然后搜索 "SYSCALL_DEFINE.(getpid"

这样可以一次性搞定!
作者: humjb_1983    时间: 2014-03-26 09:36
呵呵,正则表达式是个好东西~
作者: 帅绝人寰    时间: 2014-03-26 13:16
--regex-c='/^SYSCALL_DEFINE[[:digit:]]?\(([^,)]*).*/sys_\1/'


这是scripts/tags.sh中的代码, kernel都做好了, 用不着自己折腾。

make tags之后, 我vim中直接:ts sys_open




作者: wth0722    时间: 2014-03-26 13:24
回复 3# arm-linux-gcc

有一招不需要去找有幾個參數

grep -nr SYSCALL_DEFINE[^s] ./ | grep abc

這樣就會直接找到abc這函數在哪了


   
作者: wth0722    时间: 2014-03-26 13:45
回复 9# 帅绝人寰

好資訊 感謝

   
作者: kiongf    时间: 2014-03-26 18:06
回复 9# 帅绝人寰


    赞!!
作者: rip_world    时间: 2014-05-16 17:31
(1)一般的,你可以在这个网站查看游戏系统调用的实现, http://lxr.oss.org.cn/ident?v=2.6.30&i=sys_fork
(2)另外有一些系统调用,你需要搜索VDSO。系统调用的实现和维护还是有些复杂的




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2