目录

resume执行流程:

resume各阶段主要动作:


本文主要介绍Linux系统resume唤醒的软件执行流程,相对于Linux suspend过程,resume是一个完全逆向过程。

resume执行流程:

Arm核linux系统的Suspend待机过程,是由suspend_ops->enter进入到Arm核固件级别的待机状态。Resume过程时也是由suepend_ops->enter退出固件及待机进入Linux系统的唤醒流程,resume过程也是分多个阶段执行: sys_resume  ->  suspend_resume_noirq-> suspend_resume_early -> suspend_resume,如图所示。

resume各阶段主要动作:

sys_resume : 调用注册在syscore_ops_list链表上的resume函数,需要在系统阶段进行suspend和resume的机制或者设备会注册到该链表上(自己的划分的阶段,是为更好理解resume和suspend相对性)。

sys_resume 阶段的位置1:因此时只有boot cpu为active状态,所以arch_suspend_enable_irq函数使能是boot cpu的中断功能;又因为系统的唤醒动作基本都是由中断触发的,所以此处boot cpu中断使能后会立即响应唤醒系统irq,进入irq handle的处理流程。

suspend_resume_noirq:调用设备的resume_noirq唤醒函数,之后再使能suspend过程关闭的irq。resume_onirq是在非irq状态下执行,其目的更多的是为执行唤醒系统irq的 irq handle执行做准备。如:通过I2C总线与CPU连接外设唤醒系统时,在进入该外设的irq handle前需要保证系统的I2C controller已被唤醒,之后irq handle才可通过I2C 总线访问外设,否则I2C总线没有被唤醒时外设的irq handle将不能成功访问外设。

suspend_resume_early:  调用设备的resume_early函数,进行设备唤醒;resume_early会在resume函数前调用,因此可以在resume_early函数做唤醒准备或唤醒需要更早唤醒的设备。

suspend_resume:调用设备resume唤醒设备,更多的外设是在这个阶段本唤醒的。

问题:

arch_suspend_enable_irq后就有机会切入执行唤醒系统的irq handle,但如果唤醒系统的设备依赖其他系统总线,哪唤醒系统irq 的irq handle执行的具体流程应该是怎样?

Linux resume流程相关推荐

  1. linux待机流程,Linux睡眠喚醒機制--Kernel態

    一.對於休眠(suspend)的簡單介紹   在Linux中,休眠主要分三個主要的步驟:   1) 凍結用戶態進程和內核態任務 2) 調用注冊的設備的suspend的回調函數, 順序是按照注冊順序 3 ...

  2. EBB-11、Linux启动流程

    一.Linux开机流程 (一)power on 开机后加载BIOS(Basic Input Output System,基本的输入输出系统),BIOS加载 CMOS中所存放的当前主机各项硬件配置.系统 ...

  3. Linux 系统启动流程及其介绍

    熟悉Linux系统启动流程可以更好的排除Linux系统在启动的过程中所遇到的错误,下面介绍Linux系统在启动过程. 开机,BIOS自检:检测外置设备,目的是为了把外围设备的信息提供给操作系统使用 寻 ...

  4. linux c 读写mbr_一文看懂Linux开机流程BIOS-MBR-GRUB-Kernel-Init-Runlevel

    概述 Linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布.在加上用户空间的应用程序之后,成为Linux操作系统.Linux是自由软件和 ...

  5. Linux 进内核,arm linux 启动流程之 进入内核

    原标题:arm linux 启动流程之 进入内核 还是从编译链接生成vm 的过程来看吧,由一大堆.o文件链接而成,第一个就是 kernel/arch//kernel/head-armv.o ,而且我们 ...

  6. linux系统启动流程及常见问题的解决

    一.前言 计算机开机是一个神秘的过程.我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面.然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一 ...

  7. Linux系统启动流程(4)制作自定义linux之一

    Linux系统启动流程(4)制作自定义linux之一 平时使用的服务器类型的linux系统一般都会装载各种软件与服务,而在某些情况下,并不能一直直接使用公司管理的系统,一是可能会出现故障,二是在处理一 ...

  8. Linux引导流程(第二版)

    Linux引导流程 固件 按下电源的第一个启动步骤:启动固件firmware → POST加电自检 检查硬件的加载情况,如,键盘,内存等. 跟操作系统无关.但不同的硬件平台,固件不同; 当你新添加了一 ...

  9. Linux 启动流程学习

    Linux 启动流程学习 开机自检(加载BIOS) 无论什么机器,在开机后都要进行通电自检(硬件),如果硬件有问题,则无法继续下去. (例如当内存条松动时或者损坏,就会发出嘀嘀嘀警报声).接着开始加载 ...

最新文章

  1. (C++)1011 World Cup Betting
  2. 计算机在轻工行业中的应用,计算机在不同领域中的具体应用
  3. mysql 字段存放小图标_让MySQL支持emoji图标存储
  4. 一次DB2数据库连接失败(SQLSTATE=08001)的解决方法
  5. vue.js实战 第一篇 1-3章计算属性
  6. Qt窗口部件与布局之二:布局管理
  7. k3s helm3功能介绍
  8. macOS zip 打包加密和 unzip 解压
  9. 如何自定义SAP Spartacus店铺的界面颜色风格
  10. 向云上迁移数据时如何避免停机和中断
  11. 记一次nsp解包(nscb解包nsp/xci,cpk解包,转hca、adx到MP3,转nsm、m2v到MP4方法集锦)
  12. SpringMVC文件上传下载实战(单文件、多文件)
  13. android之DEX文件格式
  14. STM32_4键位触摸按键实现单击、双击、三击、长按1s、长按2s以上每隔200ms、左右滑动1-3个键位等多功能程序
  15. android 拍照申请权限,Android拍照6.0以上动态获取权限
  16. 费马小定理在ACM中的应用
  17. 轻量级程序编辑器的选择:EmEditor、Editplus等---Web开发系列之工具篇(一)
  18. 傲慢与偏见之 - 防火墙与竞争力
  19. Scapy3.0 Documentation ( Usage )
  20. 弃掉Android 4.4获取系统图片出错之坑,实现 自定义相册库

热门文章

  1. java接口能定义非抽象方法吗_接口中只能定义常量和抽象方法,对么
  2. 能被2、3、4、5、6、7、8、9、11、13等数整除的数的特征(含详细证明)
  3. 【python-Day3】
  4. MongoDB副本集搭建、连接php
  5. Unity平铺地板砖【无需代码】
  6. A4纸的象素分辨率计算
  7. EXC_RETURN
  8. 电竞战队LOGO标志模板素材
  9. classes是什么意思怎么读_孩子几岁读什么书,怎么读,这篇全都告诉你
  10. 整理形成3752个上市公司资产负债收益数据(2006-2018年)