acpi_reboot 这个函数用于写pci/io/memory的相关寄存器让其重启其源码分析如下:void acpi_reboot(void)
{struct acpi_generic_address *rr;struct pci_bus *bus0;u8 reset_value;unsigned int devfn;if (acpi_disabled)return;#得到reboot寄存器的地址rr = &acpi_gbl_FADT.reset_register;/* ACPI reset register was only introduced with v2 of the FADT */if (acpi_gbl_FADT.header.revision < 2)return;/* Is the reset register supported? The spec says we should be* checking the bit width and bit offset, but Windows ignores* these fields */if (!(acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER))return;#要reboot寄存器的值reset_value = acpi_gbl_FADT.reset_value;/* The reset register can only exist in I/O, Memory or PCI config space* on a device on bus 0. */#根据space_id 判断要reboot是pcie 还是 io/memoryswitch (rr->space_id) {case ACPI_ADR_SPACE_PCI_CONFIG:/* The reset register can only live on bus 0. */#看起来reboot的寄存器只能在bus 0bus0 = pci_find_bus(0, 0);if (!bus0)return;/* Form PCI device/function pair. */devfn = PCI_DEVFN((rr->address >> 32) & 0xffff,(rr->address >> 16) & 0xffff);printk(KERN_DEBUG "Resetting with ACPI PCI RESET_REG.");/* Write the value that resets us. */#写配置空间寄存器来rebootpci_bus_write_config_byte(bus0, devfn,(rr->address & 0xffff), reset_value);break;#如果是io/memory的话,需要调用acpi_reset这个函数来进行.case ACPI_ADR_SPACE_SYSTEM_MEMORY:case ACPI_ADR_SPACE_SYSTEM_IO:printk(KERN_DEBUG "ACPI MEMORY or I/O RESET_REG.\n");acpi_reset();break;}
}

内核ACPI函数API之acpi_reboot相关推荐

  1. 内核ACPI函数API之acpi_get_devices

    acpi_get_devices(const char *HID, acpi_walk_callback user_function, void *context, void **return_val ...

  2. 内核ACPI函数API之acpi_bind_one和acpi_unbind_one

    int acpi_bind_one(struct device *dev, struct acpi_device *acpi_dev)用于将一个acpi_dev和dev在sys中建立symlink,主 ...

  3. 内核ACPI函数API之acpi_scan_add_handler

    int acpi_scan_add_handler(struct acpi_scan_handler *handler)用于将一个acpi handler添加到acpi_scan_handlers_l ...

  4. tensorflow函数API总结

    tensorflow函数API总结: 首推官网查询 tf.keras.Input:创建输入层 别名: tf.keras.Input tf.keras.layers.Input tf.keras.Inp ...

  5. HTML5 Audio标签方法和函数API介绍

     问说网 > 文章教程 > 网页制作 > HTML5 Audio标签方法和函数API介绍 Audio APIHTML5HTML5 Audio预加载 HTML5 Audio标签方法和函 ...

  6. php内核函数手册,深入理解PHP内核(五)函数的内部结构,深入理解内部结构

    深入理解PHP内核(五)函数的内部结构,深入理解内部结构 php的函数包括用户定义的函数.内部函数(print_r count...).匿名函数.变量函数($func = 'print_r'; $fu ...

  7. 【小白学习keras教程】八、Sequential Model和模型函数API两种模型建立方法

    @Author:Runsen 文章目录 Load dataset Sequential Model API 方法1 方法2 模型函数API 单输入输出 合并图层 1.连接 2. add, subtra ...

  8. decode函数_「实践」云函数 + API,你也可以做个天气信息系统

    为什么要把云函数 SCF 与 API 网关进行结合?本文告诉你答案! 通常,我们用云函数 SCF 写一个函数应用,这个应用可能多种多样.例如之前介绍过的 OJ 系统判题功能,通过 NLP 实现文本摘要 ...

  9. [tensorflow]tensorflow 2.1 函数API(The Functional API)

    目录 1.函数API介绍 2.创建模型 3.训练和评估模型 4.保存模型 5.模型的嵌套 1.函数API介绍 Keras的函数API是一种创建模型的方法,该模型比tf.keras.Sequential ...

最新文章

  1. 胆固醇竟是新冠最隐蔽同伙!协助病毒入侵细胞,普林斯顿、哈佛医学院首次观察到全过程...
  2. LNK1181 无法打开输入文件“myelin64_1.lib“
  3. windows phone 快捷键
  4. mysql的limit优化_mysql数据库limit优化例子(百万级数据)
  5. 手把手教你部署VSAN见证虚拟设备 (Cormac)
  6. oracle那些基本知识
  7. 提升有监督学习效果的实战解析
  8. 2台电脑一根网线传文件_黑龙江工程专用网线报价,黑电源线配件厂家
  9. 请教各位前辈一个问题。
  10. android 对象传输及parcel机制
  11. jupyter notebook使用基础及其快捷键,包括对文档操作、cell操作、快捷键、markdown
  12. 文本密度 php,基于最大文本密度的网页正文抽取方法
  13. Oracle实现网吧计费系统,毕业设计(论文)-网吧计费管理系统设计.doc
  14. Technorati 100个最受关注的博客的CMS分布
  15. 系统地学习打字(个人见解)
  16. GC调优基础知识之工具篇--jdk为我们提供的命令行命令 jps,jstat,jmap,jinfo,jstat,jstack,jhat 等
  17. optionally enclosed by
  18. 人迹罕至的android要完全退出程序的一种方法
  19. Cesium自定义几何体
  20. 操作系统课程,绕了很多弯路,转身回归本质

热门文章

  1. 谈一谈浅拷贝和深拷贝
  2. linux搭建git服务管理仓库
  3. CTF-web做题记录(狼组/BUUCTF)【一】
  4. Linux之父—托瓦尔兹
  5. Linux之父10大名言
  6. 二叉树的5个重要性质
  7. Spring Boot 中的 Starters
  8. WebRTC 项目研究
  9. php查询数组长度,php如何查询数组长度
  10. hwd分别是长宽高_WP2000系列PoE注入器 - H3C_S5120LI-CMW520-R1513P95 版本软件及说明书- 新华三集团-H3C...