The Linux Programming Interface在第三章有一个练习是这样的:
使用Linux特定的重新启动()时
手册页告诉我们,magic2
可以是LINUX_REBOOT_MAGIC2(672274793)、LINUX_REBOOT_MAGIC2A(85072278)、LINUX_REBOOT_MAGIC2B(369367448)或LINUX_REBOOT_MAGIC2C(537993216)中的一种.我没能用十六进制解释它们的意思.我还看了/usr/include/linux/reboot.h
,它也没有给出任何有用的 comments .
然后我在内核的源代码中搜索sys_reboot
的定义.我只在头文件中找到了一个声明.
因此,我的第一个问题是,这些数字的意义是什么?我的第二个问题是,sys_reboot
的定义在哪里,你是如何找到它的?
EDIT:我在kernel/sys.c
年找到了这个定义.我只打了sys_reboot
分,忘了打魔法数字.我想这个定义一定隐藏在一些宏技巧后面,所以我查看了/boot
下的System.map
文件,发现它在ctrl_alt_del
旁边.然后我搜索那个符号,找到了正确的文件.如果我从源代码编译内核,我可以try 找到定义符号的对象文件,然后从那里开始.