kernel/reboot.c文件是重新启动过程的与体系结构无关的部分。

arch/x86/kernel/reboot.c和所有其他arch/*/kernel/reboot.c是某些功能的体系结构特定版本,由kernel/reboot.c使用。

例如,在arch/x86/kernel/reboot.c中有machine_real_restart() function(假设我们使用BIOS启动,实际选择在native_machine_emergency_restart),这是最后调用的内核函数。它要求BIOS做实际重新引导:

69 void __noreturn machine_real_restart(unsigned int type)

73 /*

74 * Write zero to CMOS register number 0x0f, which the BIOS POST

75 * routine will recognize as telling it to do a proper reboot. (Well

76 * that's what this book in front of me says -- it may only apply to

77 * the Phoenix BIOS though, it's not clear). At the same time,

78 * disable NMIs by setting the top bit in the CMOS address register,

79 * as we're about to do peculiar things to the CPU. I'm not sure if

80 * `outb_p' is needed instead of just `outb'. Use it to be on the

81 * safe side. (Yes, CMOS_WRITE does outb_p's. - Paul G.)

82 */

84 CMOS_WRITE(0x00, 0x8f);

96 /* Jump to the identity-mapped low memory code */

97 #ifdef CONFIG_X86_32

98 asm volatile("jmpl *%0" : :

99 "rm" (real_mode_header->machine_real_restart_asm),

100 "a" (type));

53 /**

54 * emergency_restart - reboot the system

55 *

56 * Without shutting down any hardware or taking any locks

57 * reboot the system. This is called when we know we are in

58 * trouble so this is our best effort to reboot. This is

59 * safe to call in interrupt context.

60 */

61 void emergency_restart(void)

62 {

63 kmsg_dump(KMSG_DUMP_EMERG);

64 machine_emergency_restart();

65 }

66 EXPORT_SYMBOL_GPL(emergency_restart);

125 /**

126 * kernel_restart - reboot the system

130 * Shutdown everything and perform a clean reboot.

131 * This is not safe to call in interrupt context.

132 */

133 void kernel_restart(char *cmd)

134 {

135 kernel_restart_prepare(cmd);

...

143 machine_restart(cmd);

144 }

145 EXPORT_SYMBOL_GPL(kernel_restart);

我们可以看到,这个通用函数调用特定achine_restart做一切必要的行动来告诉我们重启硬件架构。在x86的它会做......是的,它会调用restart function pointer from machine_ops:

658 void machine_restart(char *cmd)

659 {

660 machine_ops.restart(cmd);

661 }

X86的restart points to的native_machine_restart再次呼吁__machine_emergency_restart,它将调用相同machine_real_restart。

linux 重启内核,Linux内核文件重启相关推荐

  1. linux磁盘混乱,Linux磁盘设备文件混乱源于Linux内核自身

    在Linux下往往会碰到这样的问题,磁盘的设备文件,比如/dev/sda, sdb, sdc等等在某些情况下会混乱掉,比如sda变成了sdb或者sdc变成了sdb等等,这样无形中会导致磁盘设备管理的混 ...

  2. 移植linux内核-映像文件,移植Linux内核-映像文件

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://tigerwang202.blogbus.com/logs/43927976.html 首先从Blackfin uCli ...

  3. linux内核中cent文件夹,Centos 中如何快速定制二进制的内核 RPM 包

    1.rpm 制作前的环境准备: yum install -y ncurses-devel qt-devel rpm-build redhat-rpm-config asciidoc hmaccalc ...

  4. 如何解决编译linux内核(解决声卡问题),遭遇fatal error: linux/limits.h: 没有那个文件或目录

    如何解决编译linux内核(解决声卡问题),遭遇fatal error: linux/limits.h: 没有那个文件或目录 参考文章: (1)如何解决编译linux内核(解决声卡问题),遭遇fata ...

  5. Linux中文件描述符1,linux内核中的文件描述符(一)--基础知识简介

    原标题:linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blo ...

  6. linux存储--从内核文件系统看文件读写过程(四)

    系统调用 操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境,但是计算机系统的各种硬件资源是有限的,因此为了保证每一个进程都能安全的执行.处理器设有两种模式:"用户模式&q ...

  7. linux make编译卡死,为linux内核编译make文件时出现问题?

    我刚刚开始使用Linux内核开发,并且遇到了编译make文件的问题.为linux内核编译make文件时出现问题? 这是hello世界的教程. 我的HELLO-1.C文件 * * hello−1.c − ...

  8. linux内核合并dtb文件,c – 如何修改内核DTB文件

    摘要 我目前正在使用一些自定义板的自定义驱动程序编译Linux内核(内核,模块和DTB).有时我会编译内核并意识到DTB文件中的兼容性字符串不是自定义驱动程序要查找的内容.现在,我可以解决这个问题的唯 ...

  9. Linux内核中读写文件数据的方法

    Linux内核中读写文件数据的方法     有时候需要在Linuxkernel--大多是在需要调试的驱动程序--中读写文件数据.在kernel中操作文件没有标准库可用,需要利用kernel的一些函数, ...

  10. 【转】 Linux内核中读写文件数据的方法--不错

    原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954 Linux内核中读写文件数据的方法     有时候需要在Linuxkernel ...

最新文章

  1. Android 一个绚丽的loading动效分析与实现!
  2. DEDE列表缩图中 给缩图添加alt锚文本信息的方法
  3. 如果知道两点的经纬度 如何算两点之间的距离
  4. CSS清除浮动_清除float浮动
  5. 使用MySQL验证Open***用户登录访问
  6. Mac版Endnote X9在word中无法插入文献怎么办?
  7. C语言 | 二维数组
  8. 前端学习(1870)vue之电商管理系统电商系统之配置message全局弹框组件
  9. 领域应用 | 人工智能+知识图谱:如何规整海量金融大数据?
  10. 两张图告诉你tnsnames.ora 的配置详解
  11. Day6-HTML 特殊字符-实体
  12. pythoninit作用_简介Python中的__init__的作用
  13. 辐射避难所买了东西显示服务器异常,辐射避难所常见问题汇总 专治疑难杂症...
  14. 数据结构笔记(十三)-- 串的堆分配存储表示
  15. 左程云 Java 笔记--图
  16. Photoshop 换脸大法
  17. 中国邮政国际航空挂号信是可以网上查询跟踪的
  18. 深度系统安装移动硬盘启动_如何安装PE系统(移动硬盘) ?
  19. 考研学校的爬虫(自己写的可能会有点菜
  20. 大家说说房价还会不会涨?

热门文章

  1. [MRCTF2020]Ez_bypass
  2. 干电池电量采集_干电池电量的检测方法,干电池的常用保存方法
  3. 基于springboot的校园二手交易系统-JAVA【数据库设计、论文、源码、开题报告】
  4. java期未项目_Java项目实战知到期末答案
  5. Codevs P1814 最长链
  6. 《div图层被鼠标划过时其背景色变色的五种方式》
  7. Ubuntu共享文件夹设置
  8. MSDN(VS2010版)使用问题小记
  9. php采集喜马拉雅,喜马拉雅数据 JSSDK API 接入 demo WEB版 标准登录 、免登陆
  10. 真正拖垮年轻人认知水平的,是幸存者偏差!