您需要Linux内核源代码才能查看系统调用的实际源代码。手册页(如果安装在本地系统上)仅包含调用的文档,而不包含调用源本身。
对于您来说不幸的是,系统调用并不仅仅存储在整个内核树中的一个特定位置。这是因为各种系统调用可以引用系统的不同部分(进程管理,文件系统管理等),因此将它们与与该系统的特定部分相关的树的部分分开存储是不可行的。
您可以做的最好的事情就是寻找
SYSCALL_DEFINE[0-6]宏。它(显然)用于将给定的代码块定义为系统调用。例如,
fs/ioctl.c具有以下代码:
SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg){}
这样的定义意味着
ioctl系统调用已声明,并接受三个参数。
SYSCALL_DEFINE均值旁边的数字表示自变量的数量。例如,在中
getpid(void)声明的情况下
kernel/timer.c,我们有以下代码:
SYSCALL_DEFINE0(getpid){ return task_tgid_vnr(current);}
希望这能使事情变得简单。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)