在linux中,我可以找到所有系统调用的源代码,因为我拥有源代码树?另外,如果我想查找特定系统调用的源代码和程序集,是否有我可以键入终端的内容,如-my_system_call?我在哪里可以找到系统调用源代码?
回答
您将需要Linux内核资源以查看系统调用的实际来源。手册页(如果安装在本地系统上)只包含呼叫的文档,而不包含其来源本身。
不幸的是,系统调用并不存储在整个内核树的一个特定位置。这是因为各种系统调用可能涉及系统的不同部分(进程管理,文件系统管理等),因此将它们存储在与系统特定部分相关的树部分之外是不可行的。
您可以做的最好的事情是寻找SYSCALL_DEFINE[0-6]
宏。它被用来(明显地)将给定的代码块定义为系统调用。例如,fs/ioctl.c
有以下代码:
SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg)
{
/* do freaky ioctl stuff */
}
这种定义意味着该系统调用ioctl
被声明和使用三个参数。 SYSCALL_DEFINE
旁边的数字表示参数的数量。例如,在getpid(void)
的情况下,宣布kernel/timer.c
,我们有下面的代码:
SYSCALL_DEFINE0(getpid)
{
return task_tgid_vnr(current);
}
希望扫清事情了一点。
从应用的角度来看,system call是由kernel完成的基本和原子操作。
Assembly Howto解释了在机器指令方面正在发生的事情。
当然,内核在处理系统调用时会做很多事情。实际上,你几乎可以相信整个内核代码专门用于处理所有系统调用(这不完全正确,但几乎;从应用程序的角度来看,内核只能通过系统调用可见)。 Daniel Kamil Kozar的其他answer解释了什么是内核函数开始处理某些系统调用(但很多时候,内核的许多其他部分间接参与系统调用;例如,调度程序间接参与实现fork
,因为它管理由成功的系统调用创建的子进程)。
我知道这是老了,但是我正在寻找的源_system_call()
过,发现这个珍闻
为system_call入口点实际的代码可以在/ usr/src/linux目录/内核/ sys_call找到。 S很多系统调用的实际代码可以在/usr/src/linux/kernel/sys.c中找到,其他地方可以在其他地方找到。找到是你的朋友。
我认为这是过时的,因为我甚至没有该文件。但是,grep在arch/x86/kernel/entry_64.S中发现ENTRY(system_call)
,似乎是调用单个系统调用的东西。我现在还没有用我的intel-syntax x86 asm,所以你必须看看是否这是你想要的。
'entry_64.S'不再存在于主线4.8中。 – sherrellbc 2016-12-28 20:07:53
- 1. 在哪里可以找到Linux系统调用的源代码?
- 2. 我在哪里可以找到Vigenere密码的Java源代码?
- 3. 我在哪里可以找到FlexMonkium源代码?
- 4. 我在哪里可以找到springloaded-core jar的源代码?
- 5. 我在哪里可以找到itertools.combinations()函数的源代码
- 6. 我在哪里可以找到C++的generic.h的源代码?
- 7. 我在哪里可以找到TextView.setText(..)方法的源代码?
- 8. 我在哪里可以找到Mnesia源代码?
- 9. 我在哪里可以找到Singular(AngularJS for GWT)的源代码?
- 10. Git - 我在哪里可以找到实现.gitignore的源代码
- 11. 我在哪里可以找到android的firefox源代码?
- 12. 我在哪里可以找到TagLib#库的源代码?
- 13. 我在哪里可以找到RSA的官方源代码?
- 14. 我在哪里可以找到JavaEE软件包的源代码?
- 15. 我在哪里可以找到“暂停”工具的源代码?
- 16. 我在哪里可以找到J2ME的源代码?
- 17. 我在哪里可以找到NServicebus 2.1源代码?
- 18. 我在哪里可以找到Java数组的源代码?
- 19. 我在哪里可以找到gitk的源代码?
- 20. 我在哪里可以找到Ubuntu ARM init的源代码?
- 21. 我在哪里可以找到JavaScript本机函数源代码?
- 22. 我在哪里可以找到httpsURLConnection的源代码?
- 23. 哪里可以找到sitemesh 2.4.1源码?
- 24. Selenium IDE - 我可以在哪里找到assertTextPresent的源代码js代码?
- 25. 哪里可以得到Android源代码?
- 26. 哪里可以得到libc_p.so源代码?
- 27. 在哪里可以找到c源代码
- 28. 在哪里可以找到代码块Sfml图像资源
- 29. 在哪里可以找到Python源代码内置的open()
- 30. 在哪里可以找到amzn回购的源代码rpm?
http://kernel.org/ – TJD 2012-04-13 23:36:20