当前位置: 首页 > news >正文

linux 休眠唤醒中设备、总线、用户进程、内核线程调试分析流程

一、suspending consoles打印

代码位置:Kernel/power/suspend.c

函数调用流程:devices_and_enter(suspend_state_t state)  --> suspend_console();

void suspend_console(void)

{

if (!console_suspend_enabled)   注释这一行,可以看到休眠后printk的打印

    return;

printk("Suspending console(s) (use no_console_suspend to debug)\n");

console_lock();

console_suspended = 1;

up(&console_sem);

}

 

二、打印linux 内核 bus总线休眠唤醒流程

代码位置:Kernel/drivers/base/power/main.c

dpm_suspend() --> device_suspend() --> __device_suspend()

修改位置:

static void pm_dev_dbg(struct device *dev, pm_message_t state, char *info)
{dev_printk(KERN_ERR,dev, "%s%s%s\n", info, pm_verb(state.event),((state.event & PM_EVENT_SLEEP) && device_may_wakeup(dev)) ?", may wakeup" : "");
}

内核 log如下:

bus suspend:

[  329.576315] reg-fixed-voltage soc:emac_lan_vreg: bus suspend
[  329.581997] reg-fixed-voltage soc:rome_vreg: bus suspend
[  329.587245] reg-fixed-voltage soc:sdcard_ext_vreg: bus suspend
[  329.593177] qcom,mem-acc-regulator 1942131.regulator: bus suspend
[  329.599144] pps-gpio soc:pps: bus suspend
[  329.603183] platform 7c50000.qcom,emac: bus suspend

 

bus resume:

[  331.355074] msm_serial_hs 98b1000.uart: noirq driver resume
[  331.361022] PM: noirq resume of devices complete after 17.017 msecs
[  331.367635] PM: early resume of devices complete after 0.543 msecs
[  331.372985] reg-dummy reg-dummy: bus resume

三、设备休眠唤醒流程打印

代码位置:driver/base/platform.c

3.1 linux设备休眠流程:

int platform_pm_suspend(struct device *dev)
{
struct device_driver *drv = dev->driver;
int ret = 0;
...
...if (drv->pm) {
if (drv->pm->suspend)
ret = drv->pm->suspend(dev);
+pr_info("%s called name = %s\n", __func__, drv->name); //此处添加suspend 设备调试打印
} else {
ret = platform_legacy_suspend(dev, PMSG_SUSPEND);
}

3.2 linux设备唤醒流程

int platform_pm_resume(struct device *dev)
{
struct device_driver *drv = dev->driver;
int ret = 0;...
...if (drv->pm) {
if (drv->pm->resume)
ret = drv->pm->resume(dev);
pr_info("%s called name = %s\n", __func__, drv->name);//此处添加设备resume打印
} else {
ret = platform_legacy_resume(dev);
}

四、linux内核线程和进程休眠过程打印

函数调用流程:

enter_state(suspend.c)--->suspend_prepare--->suspend_freeze_processes()--->freeze_processes(--->try_to_freeze_tasks--->freeze_task)--->freeze_kernel_processes

可以在kernel/power/process.c中添加如下打印:

for_each_process_thread(g,p)...pr_info("userspace pid %d, %d\n", p->pid, current->pid);...

打印效果如下:

[  327.812216] PM: suspend entry 2018-09-18 11:53:17.879150194 UTC
[  327.817117] PM: Syncing filesystems ... done.
[  327.823632] Freezing user space processes ... userspace pid 1
[  327.828524] userspace pid 6
[  327.831545] userspace pid 124
[  327.834264] userspace pid 1345
[  327.837216] userspace pid 2150

对于内核线程休眠的打印可以参考上面在freeze_kernel_processes中添加打印。

五、late_resume和earlysuspend.c加打印

在部分内核版本中可以添加如下log分析问题:

late_resume函数中:

list_for_each_entry_reverse(pos, &early_suspend_handlers, link)
if (pos->resume != NULL) {
pos->resume(pos);
+pr_info("late_resume: func %p\n",pos->resume);

}

early_suspend late_resume添加log
在earlysuspend.c中
static int debug_mask = DEBUG_USER_STATE;
->
static int debug_mask = DEBUG_USER_STATE | DEBUG_SUSPEND |
DEBUG_VERBOSE;

六、休眠唤醒时间长问题排查

参见之前调试文档说明,链接如下:

休眠唤醒(suspend/resume)时长问题分析思路_sched_clock_suspend-CSDN博客

 

 

 

 

 

 

相关文章:

linux 休眠唤醒中设备、总线、用户进程、内核线程调试分析流程

一、suspending consoles打印 代码位置:Kernel/power/suspend.c 函数调用流程:devices_and_enter(suspend_state_t state) --> suspend_console(); void suspend_console(void) { if (!console_suspend_enabled) 注释这一行,可以看到…...

k8s陈述式资源管理(命令行)

1、资源管理 (1)陈述式资源管理(常用——查、增) 使用kubectl工具进行命令行管理 ①特点:对资源的增删查比较方便,对改不友好 ②优点:90%以上的场景都可以满足 ③缺点:命令冗长…...

五、HTML 标题

在 HTML 文档中&#xff0c;标题很重要。 一、HTML 标题 标题&#xff08;Heading&#xff09;是通过 <h1> - <h6> 标签进行定义的。<h1> 定义最大的标题。 <h6> 定义最小的标题。 <h1>这是一个标题。</h1> <h2>这是一个标题。&l…...

三菱MR-JE伺服脉冲轴应用参数设置

三菱MR-JE伺服在脉冲轴控制上的应用&#xff0c;常用参数设置如下&#xff1a; 1、常用参数 未完......

通信原理课设(gec6818) 006:网络编程

目录 1、概念 2、通信 3、通信基本流程 TCP: UDP: 4、函数 I 创建套接字 II 绑定地址 III 字节序转换 IV 地址转换 V 监听 VI accept VII connect VIII 从套接字接收信息 IX 从套接字发送消息 X 关闭套接字 5、网络配置 1、确保你的网卡里面有两个虚拟网卡&a…...

一体化、一站式!智能视频客服加码全媒体云呼叫中心能力

凭借对电话、短信、邮件、社交媒体、视频等数种沟通渠道强大的统一集成能力&#xff0c;全媒体云呼叫中心已跃升成为现代企业客户服务的核心工具&#xff0c;高效便捷地为企业提供客户服务。而随着消费者需求愈加多元化和个性化&#xff0c;传统的语音通话方式已无法满足部分消…...

Vue的watch功能:实现响应式数据更新

watch是vue内部提供的一个用于侦听功能的更通用的方法&#xff0c;其用来响应数据的变化&#xff0c;通过特定的数据变化驱动一些操作。简言之&#xff1a;当需要被watch监听的数据发生变化时就会被执行watch中的逻辑。实现数据的实时更新&#xff01; 普通监听 <template…...

兔单抗制备方法的发展-杂交瘤技术|卡梅德生物

兔单克隆抗体技术是近年来在抗体研究领域中取得的重要进展之一。研究人员通过改进抗原设计、免疫策略和单克隆B细胞培养条件&#xff0c;提高了单克隆抗体的产量和特异性。相比于传统的小鼠单克隆抗体技术&#xff0c;兔单克隆抗体技术具有更大的抗原特异性和更高的亲和力&…...

【数据结构】图论与并查集

一、并查集 1.原理 简单的讲并查集&#xff0c;就是查询两个个元素&#xff0c;是否在一个集合当中&#xff0c;这里的集合用树的形式进行表示。并查集的本质就是森林, 即多棵树。 我们再来简单的举个例子: 假设此时的你是大一新生&#xff0c;刚进入大学&#xff0c;肯定是…...

冲刺港股IPO,速腾聚创「承压」

对于「光鲜」的激光雷达公司来说&#xff0c;当下最难的问题是&#xff1a;如何说服投资者相信&#xff0c;前装市场能够按照预期定点订单兑现。 今年&#xff0c;作为国内高阶智驾头部车企之一的华为&#xff0c;在陆续推出的新车型上开始「降本」。其中&#xff0c;问界智驾版…...

Linux基础知识点(五-信号)

一、信号的基本概念 1.1 信号的概念 信号&#xff08;signal&#xff09;&#xff0c;又称为软中断信号&#xff0c;用于通知进程发生了异步事件&#xff0c;它是Linux系统响应某些条件而产生的一个事件&#xff0c;它是在软件层次上对中断机制的一种模拟&#xff0c;是一种异…...

SpringBoot 一个注解实现数据脱敏

什么是数据脱敏 数据脱敏是指对某些敏感信息&#xff0c;例如姓名、身份证号码、手机号、固定电话、银行卡号、邮箱等个人信息&#xff0c;通过脱敏算法进行数据变形&#xff0c;以保护敏感隐私数据。 数据脱敏通常涉及以下几种主要方法&#xff1a; 替换&#xff1a; 将原始…...

记录:开始学习网络安全

本文持续更新学习进度 背景 在私企干了5年虚拟化、云原生相关的运维&#xff0c;学到了很多&#xff0c;但不成体系。老板是清华毕业法国留学在德勤干过&#xff0c;最后回国创业的野路子。我工作是为了更好的生活&#xff0c;我挺担心老板因为家庭变故或者炒个原油宝&#x…...

C语言—第1次作业:编译与连接基础知识

常做练习巩固知识 本次作业答案链接如下&#xff1a; 答案解析——C语言—第1次作业&#xff1a;编译与连接基础知识 1.字符串的结束标志是&#xff1a;&#xff08; &#xff09; A.是0 B.是EOF C. 是\0 D.是空格 2.关于C语言关键字说法正确的是&#xff1a;( ) A.关…...

not attached to window manager问题解决

关于出现这个问题&#xff0c;一般是因为Activity已经在finish了&#xff0c;但是还在dialog.show()&#xff0c;或者dialog.dismiss().导致window manager无法管理dialog。解决办法如下&#xff1a; /** * 20210913 安全关闭对话框 . * 避免报&#xff1a;not attac…...

影视后期: PR调色处理,调色工具面板介绍

写在前面 整理一些影视后期的相关笔记博文为 Pr 调色处理&#xff0c;涉及调色工具面板简单认知包括 lumetri 颜色和范围面板理解不足小伙伴帮忙指正 元旦快乐哦 _ 名词解释 饱和度 是指色彩的鲜艳程度&#xff0c;也被称为色彩的纯度。具体来说&#xff0c;它表示色相中灰色…...

ARM AArch64的虚拟化(virtualization)详解(上)

目录 一、概述 开始之前 二、虚拟化介绍 为什么虚拟化很重要...

计算机组成原理知识总结

目录 第一章、计算机系统概述知识框架&#xff1a;1.冯诺依曼机和存储程序的概念&#xff1f;2.计算机的工作过程&#xff1f;3.在计算机系统结构中&#xff0c;什么是编译&#xff1f;什么是解释&#xff1f;4.描述一下指令执行过程&#xff1f;1) 取指令&#xff1a; PC 一&g…...

springboot学习(八十五) 解决springboot3.2找不到资源无法抛出404错误的问题

前言 springboot3.2以下可以定义ErrorPageRegistrar将404错误转发到一个接口地址&#xff0c;但升级到springboot3.2&#xff08;spring6.1&#xff09;后,该配置不生效&#xff0c;抛出了500错误。 以前的错误页面处理如下&#xff1a; ConditionalOnClass(ErrorPageRegist…...

OpenHarmony 应用通用签名

一.背景 由于hap包需要经过签名才能安装到设备上&#xff0c;在DevEco Studio可以进行自动签名&#xff0c;但是自动签名只能安装在当前的设备上&#xff0c;在其他设备上不能安装&#xff0c;所以我们需要进行通用的手动签名&#xff0c;手动签名HarmonyOS和OpenHarmony流程是…...

Redis:原理+项目实战——Redis实战1(session实现短信登录(并剖析问题))

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理速成项目实战——Redis的Java客户端 &#x1f4da;订阅专栏&#xff1a;Redis速成 希望文章对你们有所帮助…...

交叉编译aarch64架构支持openssl的curl、libcurl

本文档旨在指导读者在x86_64平台上交叉编译curl和openssl库以支持aarch64架构。在开始之前&#xff0c;请确保您的系统环境已正确配置。 1. 系统环境准备 系统是基于Ubuntu 20.04 LTS&#xff0c;高版本可能会有问题。首页&#xff0c;安装必要的开发工具和库文件。打开终端并…...

扩展名是.KEY的文件可能有不同的存在,打开方式也因此不同

本文解释了使用KEY文件扩展名的所有不同格式&#xff0c;以及如何在可能的情况下打开和转换每种格式。 KEY文件的定义 KEY文件扩展名可能是用于注册软件程序的纯文本或加密的通用许可证密钥文件。不同的应用程序使用不同的KEY文件来注册各自的软件&#xff0c;并证明用户是合…...

软件工程总复习笔记

软件工程课程复习提纲 文章目录 软件工程课程复习提纲一、基本知识点1. 软件工程的概念及目标2. 软件危机的概念及典型表现3. 瀑布模型的概念及特点4. 快速原型模型的特点5. 螺旋模型的基本思想6. 软件生命周期的概念及划分为哪几个阶段7. 软件需求的定义8. 常见的软件需求获取…...

蓝桥杯-每日刷题-030

打印等边三角形 一、题目要求 题目描述 输出等边三角形&#xff1a;输入n值&#xff0c;输出高度为n的等边三角形。输入格式 输入存在多组测试数据。对于每组测试数据输入一个正整数n(1<n<100)。输出格式 对于每组测试数据输出对应的等边三角形。每组测试数据最后输出一…...

AI赋能游戏开发,如何更好地处理随之而来的海量数据,更好地利用开发游戏?

人工智能&#xff08;AI&#xff09;正在改变我们所知的游戏行业。它为3A工作室、独立开发者和业余爱好者提供了工具&#xff0c;让他们能够更轻松地创建以前需要大量时间和资源的项目。尤其是&#xff0c;虚幻引擎的AI工具已经取得了显著的进步。 虚幻引擎AI拥有专门用于游戏…...

Serverless架构学习路线及平台对比

在云计算领域&#xff0c;Serverless架构已经成为了一个重要的趋势。本文将为你提供一条清晰的Serverless架构学习路线&#xff0c;帮助你系统地掌握这个领域的知识&#xff0c;并对比国内外的Serverless平台的优缺点。 一、基础理论学习 首先&#xff0c;我们需要理解Server…...

解决ROS含动态参数的Config文件无法正确识别的错误

问题描述 功能包名为paddle_detection 在工作空间下, 通过catkin_make可以正常通过编译且执行无异常, 可以通过bloom-generate rosdebian生成依赖 但是在将其打包成deb包的过程中fakeroot debian/rules binary报错 fatal error: paddle_detection/paddle_detectionConfig.…...

探索 PyTorch 中的 torch.nn 模块**(1)

目录 引言 torch.nn使用和详解 Parameter 函数作用 使用技巧 使用方法和示例 UninitializedParameter 特点和用途 可进行的操作 使用示例 UninitializedBuffer 特点和用途 可进行的操作 使用示例 Module**&#xff08;重点&#xff09; 关键特性和功能 举例说…...

【WPF.NET开发】预览事件

本文内容 先决条件预览标记为“已处理”的事件通过控件解决事件禁止问题 预览事件&#xff0c;也称为隧道事件&#xff0c;是从应用程序根元素向下遍历元素树到引发事件的元素的路由事件。 引发事件的元素在事件数据中报告为Source 。 并非所有事件场景都支持或需要预览事件。…...

dede网站地图不显示文章列表/百度seo 优化

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼{printf("请输入正确日期&#xff01;/n");goto aaa;}}int LeapYear(int intoYear,int intoMonth,int intoDay)//闰年计算{int today;switch(intoMonth){case 1:today0;break;case 2:today31;break;case 3:today60;break…...

晋城网站设计/指数搜索

学习Tensorflow之基本操作Tensorflow基本操作1. 创建张量(1) 创建标量(2) 创建向量(3) 创建矩阵(4) shape属性(5) 判别张量类型(6) 列表和ndarray转张量2. 创建特殊张量(1) tf.ones与tf.ones_like(2) tf.zeros与tf.zeros_like(3) tf.fill(3) tf.random.normal(4) tf.random.uni…...

wordpress 付费下载/长沙百度快照优化排名

找1-3三个你所做的创新的关键词 分别在IEEE&#xff0c;sci-hub&#xff0c;知网上按以上关键词查找会议&#xff0c;期刊...

asp 网站 购物车/怎样才能上百度

1.修改表的字段&#xff1a;修改一个列的数据类型(一般限于修改长度&#xff0c;修改为一个不同类型时有诸多限制):语法: ALTER TABLE 表名 MODIFY(列名 数据类型);eg1: alter table skate_test modify (author number(10,0) );在修改列的长度时,只能改为比现有字段实际存的长…...

做自己看视频的网站/免费域名服务器

2019独角兽企业重金招聘Python工程师标准>>> Fiori里的busy dialog有两种表现形式&#xff0c;一种是下图里的花朵形状&#xff0c;由5个不断旋转的花瓣组成。另一种是下图的3/4个圆环不断旋转的效果。 关于前者的效果&#xff0c;可以看我制作的这个视频。这个视频…...

wordpress卡片式/青岛百度竞价

1、如果想使用IIS配置PHP的话&#xff0c;那么需要选择NonThreadSafe(NTS)版本的PHP2、32位操作系统、64位操作系统&#xff0c;分别表示为X86、X643、VC&#xff0c;即VisualC&#xff0c;VC9和VC11分别为VisualStudio2008和VisualStudio2012编译出来的版本因此在下载带有“VC…...