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這函數在哪了


   
页: [1] 2
查看完整版本: 系统调用的实现在么找