社区
Linux_Kernel
帖子详情
内核代码中的: int reboot(int flag) 这个函数在哪里?
ZhangYv
2004-11-11 06:53:21
我需要知道包含在
/usr/include/sys/reboot.h文件中的
extern int reboot (int __howto) __THROW
这个函数的实现在那哪个C程序文件中?内核代码是2.4.20版本。
能否帮我找找?很急的。写过
...全文
372
11
打赏
收藏
内核代码中的: int reboot(int flag) 这个函数在哪里?
我需要知道包含在 /usr/include/sys/reboot.h文件中的 extern int reboot (int __howto) __THROW 这个函数的实现在那哪个C程序文件中?内核代码是2.4.20版本。 能否帮我找找?很急的。写过
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
aria
2004-11-18
打赏
举报
回复
就是在redhat 9下编译2.4.27的内核然后安装,重启系统后再reboot,此时可以看到终端上有打印加入的调试信息。reboot的方法是直接用reboot命令。
ZhangYv
2004-11-17
打赏
举报
回复
我在用户态调用了reboot(), 在machine_restart()-->machine_real_restart()加了调试信息,但是这两个函数根本没有执行,这是怎么回事???
ZhangYv
2004-11-17
打赏
举报
回复
不会吧?我测试了半天都不行。楼上你是怎么测试得?
aria
2004-11-17
打赏
举报
回复
手头没有2.4.20的内核,用redhat 9 + 2.4.27内核在x86上测试的结果是machine_restart()有调用,测试方法是在arch/i386/kernel/process.c中machine_restart()的开始加了一句打印和延时。是否你加的调试信息位置不对?
aria
2004-11-14
打赏
举报
回复
不是很明白,如果是在用户态调用reboot(),x86体系最终是会调用到内核中的sys_reboot()-->machine_restart()-->machine_real_restart(),只要修改相应位置应就可以了吧
ZhangYv
2004-11-12
打赏
举报
回复
我不明白,我现在需要得是reboot的源代码,并且我要修改它。这和syscall有什么关系?具体的说:
reboot的最后一步是跳到ljmp 0xffff, 0x0000的BIOS处重新开始自检,我现在要让它ljmp 0x0000, 0x7c00处,并且在跳转之前,我需要做一些预处理(比如验证权限和加载)的事情。syscall可以实现么?
zhouqingyuan
2004-11-11
打赏
举报
回复
我是来帮你顶的!!!
Wolf0403
2004-11-11
打赏
举报
回复
所以你需要的就是直接用 syscall 而不是用 reboot
ZhangYv
2004-11-11
打赏
举报
回复
不是啊,我在程序里直接调用
reboot(0x1234567); //让系统重启
但是reboot函数不能满足我当前的需要,所有我要进行修改,所以要直接找到reboot的实现然后修改代码。
Wolf0403
2004-11-11
打赏
举报
回复
syscall(sys_reboot, ...)
ZhangYv
2004-11-11
打赏
举报
回复
就是调用时候就是reboot(magic),让系统重启,我需要修改这个函数,但是没地方找在哪里,应该不在process.c中。希望高人出手帮助。
Linux_Kernel
4,436
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章