Linux resume流程
目录
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流程相关推荐
- linux待机流程,Linux睡眠喚醒機制--Kernel態
一.對於休眠(suspend)的簡單介紹 在Linux中,休眠主要分三個主要的步驟: 1) 凍結用戶態進程和內核態任務 2) 調用注冊的設備的suspend的回調函數, 順序是按照注冊順序 3 ...
- EBB-11、Linux启动流程
一.Linux开机流程 (一)power on 开机后加载BIOS(Basic Input Output System,基本的输入输出系统),BIOS加载 CMOS中所存放的当前主机各项硬件配置.系统 ...
- Linux 系统启动流程及其介绍
熟悉Linux系统启动流程可以更好的排除Linux系统在启动的过程中所遇到的错误,下面介绍Linux系统在启动过程. 开机,BIOS自检:检测外置设备,目的是为了把外围设备的信息提供给操作系统使用 寻 ...
- linux c 读写mbr_一文看懂Linux开机流程BIOS-MBR-GRUB-Kernel-Init-Runlevel
概述 Linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布.在加上用户空间的应用程序之后,成为Linux操作系统.Linux是自由软件和 ...
- Linux 进内核,arm linux 启动流程之 进入内核
原标题:arm linux 启动流程之 进入内核 还是从编译链接生成vm 的过程来看吧,由一大堆.o文件链接而成,第一个就是 kernel/arch//kernel/head-armv.o ,而且我们 ...
- linux系统启动流程及常见问题的解决
一.前言 计算机开机是一个神秘的过程.我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面.然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一 ...
- Linux系统启动流程(4)制作自定义linux之一
Linux系统启动流程(4)制作自定义linux之一 平时使用的服务器类型的linux系统一般都会装载各种软件与服务,而在某些情况下,并不能一直直接使用公司管理的系统,一是可能会出现故障,二是在处理一 ...
- Linux引导流程(第二版)
Linux引导流程 固件 按下电源的第一个启动步骤:启动固件firmware → POST加电自检 检查硬件的加载情况,如,键盘,内存等. 跟操作系统无关.但不同的硬件平台,固件不同; 当你新添加了一 ...
- Linux 启动流程学习
Linux 启动流程学习 开机自检(加载BIOS) 无论什么机器,在开机后都要进行通电自检(硬件),如果硬件有问题,则无法继续下去. (例如当内存条松动时或者损坏,就会发出嘀嘀嘀警报声).接着开始加载 ...
最新文章
- (C++)1011 World Cup Betting
- 计算机在轻工行业中的应用,计算机在不同领域中的具体应用
- mysql 字段存放小图标_让MySQL支持emoji图标存储
- 一次DB2数据库连接失败(SQLSTATE=08001)的解决方法
- vue.js实战 第一篇 1-3章计算属性
- Qt窗口部件与布局之二:布局管理
- k3s helm3功能介绍
- macOS zip 打包加密和 unzip 解压
- 如何自定义SAP Spartacus店铺的界面颜色风格
- 向云上迁移数据时如何避免停机和中断
- 记一次nsp解包(nscb解包nsp/xci,cpk解包,转hca、adx到MP3,转nsm、m2v到MP4方法集锦)
- SpringMVC文件上传下载实战(单文件、多文件)
- android之DEX文件格式
- STM32_4键位触摸按键实现单击、双击、三击、长按1s、长按2s以上每隔200ms、左右滑动1-3个键位等多功能程序
- android 拍照申请权限,Android拍照6.0以上动态获取权限
- 费马小定理在ACM中的应用
- 轻量级程序编辑器的选择:EmEditor、Editplus等---Web开发系列之工具篇(一)
- 傲慢与偏见之 - 防火墙与竞争力
- Scapy3.0 Documentation ( Usage )
- 弃掉Android 4.4获取系统图片出错之坑,实现 自定义相册库