中断唤醒系统流程

作者:smcdef 发布于:2018-1-1 17:03 分类:中断子系统

1) 设备唤醒cpu之后是立即跳转中断向量表指定的位置吗?如果不是,那么是什么时候才会跳转呢?

2) 已经跳转到中断服务函数开始执行代码,后续就会调用你注册的中断handle 代码吗?如果不是,那中断服务函数做什么准备呢?而你注册的中断handle又会在什么时候才开始执行呢?
3) 假如register_thread_irq方式注册的threaded irq中调用msleep(1000),睡眠1秒,请问系统此时会继续睡下去而没调度回来吗?因此导致msleep后续的操作没有执行。
4) 如果在注册的中断handle中把主要的操作都放在delayed work中,然后queue delayed work,work延时1秒执行,请问系统此时会继续睡下去而没调度delayed work 吗?因此导致delayed work 中的操作没有执行呢?
5) 如果4)成立的话,我们该如何编程避免这个问题呢?
好了,本片文章就为你解答所有的疑问。
注:文章代码分析基于linux-4.15.0-rc3。

阅读全文>>

标签: 电源管理 中断处理 中断子系统 中断唤醒

评论(10) 浏览(6218)

linux kernel的中断子系统之(三):IRQ number和中断描述符

作者:linuxer 发布于:2014-8-26 17:03 分类:中断子系统

本文主要围绕IRQ number和中断描述符(interrupt descriptor)这两个概念描述通用中断处理过程。第二章主要描述基本概念,包括什么是IRQ number,什么是中断描述符等。第三章描述中断描述符数据结构的各个成员。第四章描述了初始化中断描述符相关的接口API。第五章描述中断描述符相关 的接口API。

阅读全文>>

标签: irq 中断子系统 中断描述符

评论(71) 浏览(48583)

Linux kernel的中断子系统之(一):综述

作者:linuxer 发布于:2014-8-14 19:12 分类:中断子系统

一个合格的linux驱动工程师需要对kernel中的中断子系统有深刻的理解,只有这样,在写具体driver的时候才能:

1、正确的使用linux kernel提供的的API,例如最著名的request_threaded_irq(request_irq)接口

2、正确使用同步机制保护驱动代码中的临界区

3、正确的使用kernel提供的softirq、tasklet、workqueue等机制来完成具体的中断处理

基于上面的原因,我希望能够通过一系列的文档来描述清楚linux kernel中的中断子系统方方面面的知识。一方面是整理自己的思绪,另外一方面,希望能够对其他的驱动工程师(或者想从事linux驱动工作的工程师)有所帮助。


阅读全文>>

标签: 软件框架 中断子系统

评论(79) 浏览(41969)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog