如何记录并发现异常唤醒系统的中断源

无论是android系统还是VxWorks等实时系统,在开发调试过程中经常会存在系统被中断异常唤醒的情形,系统被唤醒有时是正常的唤醒,比如定时器到时来中断唤醒系统来处理业务,有时是异常的唤醒,比如定时器设置超时时间不合理,频繁唤醒系统会导致系统耗电量增加,电池电源很快被耗尽,减短终端待机或者使用时间,此时我们需要一定的手段来记录是谁唤醒的系统,然后分析是否合理唤醒,不合理就让相关责任人修改。那么在android系统中(Linux类似),我们可以在syscore级别的resume 回调注册回调函数来记录中断状态;

为什么选择syscore级别的回调函数呢,主要是syscore级别的suspend和resume回调是完全处于锁中断的,此时系统是不响应中断的,我们可以在此记录中断状态。有人可能会问,为什么不注册dpm里边的suspend_noirq或者resume_noirq级别的回调函数呢?举个例子来讲,在唤醒时,在执行完syscore级别的resume后,在执行dpm的resume_noirq前,系统就已经可以响应中断了,如果注册resume_noirq级别的回调,则在调用回调函数获取中断状态之前系统就已经响应中断并把中断清除掉了,此时是不可能获取到并记录中断状态的。

原理介绍完了,下边我们还是简单看一下使用方法吧。

1、首先,定义自己的回调函数

static void my_resume(void)

{

/*获取中断状态,根据实际需要选择是打印出来还是另作处理*/

}

2、定义自己的注册变量

static syscore_ops  my_pm_ops = {

.resume = my_resume,

};

3、在自己的初始化函数中注册syscore ops

static int __init my_init(void){

register_syscore_ops(&my_pm_ops);

return 0;

}

感兴趣的同学可以参考Linux内核syscore_ops.h和syscore.c

如何记录并发现异常唤醒系统的中断源

时间: 2024-10-12 17:42:54

如何记录并发现异常唤醒系统的中断源的相关文章

如何记录和不寻常的唤醒中断源

是否android系统或VxWorks与其他实时系统,经常有这样的情况系统中清醒过来发育异常和调试过程中断.系统被唤醒,有时是正常的唤醒,例如,当中断定时器来唤醒系统处理业务,有时,异常的觉醒,让我们设定的超时时间不合理,统会导致系统耗电量添加,电池电源非常快被耗尽,减短终端待机或者使用时间,此时我们须要一定的手段来记录是谁唤醒的系统,然后分析是否合理唤醒.不合理就让相关责任人改动. 那么在android系统中(Linux类似),我们能够在syscore级别的resume 回调注冊回调函数来记录

Kafka+Flink 实现准实时异常检测系统

1.背景介绍异常检测可以定义为"基于行动者(人或机器)的行为是否正常作出决策",这项技术可以应用于非常多的行业中,比如金融场景中做交易检测.贷款检测:工业场景中做生产线预警:安防场景做***检测等等. 根据业务要求的不同,流计算在其中扮演着不同的角色:既可以做在线的欺诈检测,也可以做决策后近实时的结果分析.全局预警与规则调整等. 本文先介绍一种准实时的异常检测系统. 所谓准实时,即要求延迟在100ms以内.比如一家银行要做一个实时的交易检测,判断每笔交易是否是正常交易:如果用户的用户名

Linux学习记录--文件IO操作相关系统编程

文件IO操作相关系统编程 这里主要说两套IO操作接口,分别是: POSIX标准 read|write接口,函数定义在#include<unistd.h> ISO C标准 fread|fwrite接口,函数定义在#include<stdio.h> 有书上说POSIX标准与ISO C标准的区别在于文件读写是否带缓冲区,我则不是很认同,因此POSIX标准下的IO操作也是带缓冲区的,至于这两个标准下的IO性能谁更加好则不一定,因为这和缓冲区的大小,以及用户逻辑有很大关系. POSIX标准

如何开发一个异常检测系统:如何评价一个异常检测算法

利用数值来评价一个异常检测算法的重要性 使用实数评价法很重要,当你用某个算法来开发一个具体的机器学习应用时,你常常需要做出很多决定,如选择什么样的特征等等,如果你能找到如何来评价算法,直接返回一个实数来告诉你算法的好坏,那样你做决定就会更容易一些.如现在有一个特征,要不要将这个特征考虑进来?如果你带上这个特征运行你的算法,再去掉这个特征运行你的算法,得到返回的实数,这个实数直接告诉你加上这个特征算法是变好了还是变坏了,这样你就有一种更简单的算法来确定是否要加上这个特征. 为了更快地开发出一个异常

.NET异常 由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作。

操作系统环境:Windows XP 异常描述:异常不定时.随机抛出.抛出异常的语句一般都是需要建立socket连接的语句. 原因:在XP系统下,默认最大的TCP端口号为5000,当超出该值时抛出如上异常. 解决方法: 1)启动注册表编辑器. 2)在注册表中,找到以下注册表子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 3)在编辑菜单上,单击新建,然后添加以下注册表项: 值名称: MaxUserPo

信用卡空卡代还APP平台垫资系统开发送源码

信用卡空卡代还APP平台垫资系统开发送源码请致电王经理-153-1555-9232微信号同号你是否有用过信用卡低还款,结果每月支付的高利息,让你难以承受?你是否有过因为要还大额信用卡,找朋友借,发现钱真不是那么好借?你是否有过为还信用卡拆了东墙补西墙,多张信用卡互还,让你焦头烂额?稍不留心逾期了,导致被降额度.上征信名单,简直欲哭无泪.该怎么办?此时如果有一款产品可以让你可以轻松还款,解决还款和逾期难题是不是很好呢?垫付app智能信用卡管家软件.正是你需要的信用卡还款神器,具备如下几大特性:低费

添加系统以外 yum源 epel&rpmfore

添加系统以外的软件库 [1]Add rpmfore repositories # yum -y install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm # 把 "enabled=0" 避免安装软件包发生冲突 # sed -i -e "s/enabled = 1/enabled = 0/g" /etc/yum.repos.d/rpmfor

H264音视频直播系统 服务器端+客户端源码 可用于视频聊天、视频会议

H264音视频直播系统  服务器端+客户端源码 可用于视频聊天.视频会议 RTP协议实现音视频网络实时直播,采用H.264和AAC编码,码率极低,同时有较高的视频清晰度和音频音质,可用于视频聊天.视频会议.摄像头监控等多种应用场景. 发布端,选择视频和音频设备,指定服务器发布直播源 接收端,接收发布者的音视频并播放.占用带宽很低,如图所示.采用动态码率,平时在4~5KB/s左右,动作幅度较大时在8KB/s. C++代码,VS2010工程,包含全部代码,不用其它依赖项,可直接编译 接口调用简单

配置RedHat 6系统YUM网易源

配置RedHat 6系统YUM网易源 卸载redhat自带yum,然后下载centos的yum,安装后修改配置文件   1. 首先到http://mirrors.163.com/centos下载软件包 x86_64 地址:http://mirrors.163.com/centos/6/os/x86_64/Packages/ 必要下载的软件包有(以64位系统为例): a python-iniparse-0.3.1-2.1.el6.noarch.rpm b yum-3.2.29-40.el6.cen