Linux中断笔记
来源:互联网 发布:淘宝汽车 编辑:程序博客网 时间:2024/05/10 23:25
函数参数说明:int irq :在这里很明显传递过来的是中断号
void *dev_id :这个传递来的是设备的id号,可以根据这个设备id号得到相应设备的数据结构,进而的到相应设备的信息和相关数据。下面以提取网路数据为例来说明一下。
struct net_device *dev=( struct net_device *)dev_id; (这里的dev_id的值是注册中断的时候宏传递过来的,是注册中断函数的最后一个参数。特别说明)
在这之后就可以用dev->name; dev->irq;等得到网络设备的信息了,当然提取ip数据报还得进行一些其它的工作。
struct pt_regs *regs :它指向一个数据结构,此结构保存的是中断之前处理器的寄存器和状态。主要用在程序调试。
关于中断处理函数的返回值:中断程序的返回值是一个特殊类型—irqreturn_t。但是中断程序的返回值却只有两个—IRQ_NONE和IRQ_HANDLED。
/* irqreturn.h */
#ifndef _Linux_IRQRETURN_H
#define _Linux_IRQRETURN_H
typedef int irqreturn_t;
/*
* For 2.4.x compatibility, 2.4.x can use
*
* typedef void irqreturn_t;
* #define IRQ_NONE
* #define IRQ_HANDLED
* #define IRQ_RETVAL(x)
* To mix old-style and new-style irq handler returns.
*
* IRQ_NONE means we didn't handle it.
* 中断程序接收到中断信号后发现这并不是注册时指定的中断原发出的中断信号.
*此时返回次值
* IRQ_HANDLED means that we did have a valid interrupt and handled it.
* 接收到了准确的中断信号,并且作了相应正确的处理
* IRQ_RETVAL(x) selects on the two depending on x being non-zero (for handled)
*/
#define IRQ_NONE (0)
#define IRQ_HANDLED (1)
#define IRQ_RETVAL(x) ((x) != 0) //这个宏只是返回0或非0
#endif
以上是在Linux/irqreturn.h中的内容,我加了一定的注释.我想是可以说明问题的
void *dev_id :这个传递来的是设备的id号,可以根据这个设备id号得到相应设备的数据结构,进而的到相应设备的信息和相关数据。下面以提取网路数据为例来说明一下。
struct net_device *dev=( struct net_device *)dev_id; (这里的dev_id的值是注册中断的时候宏传递过来的,是注册中断函数的最后一个参数。特别说明)
在这之后就可以用dev->name; dev->irq;等得到网络设备的信息了,当然提取ip数据报还得进行一些其它的工作。
struct pt_regs *regs :它指向一个数据结构,此结构保存的是中断之前处理器的寄存器和状态。主要用在程序调试。
关于中断处理函数的返回值:中断程序的返回值是一个特殊类型—irqreturn_t。但是中断程序的返回值却只有两个—IRQ_NONE和IRQ_HANDLED。
/* irqreturn.h */
#ifndef _Linux_IRQRETURN_H
#define _Linux_IRQRETURN_H
typedef int irqreturn_t;
/*
* For 2.4.x compatibility, 2.4.x can use
*
* typedef void irqreturn_t;
* #define IRQ_NONE
* #define IRQ_HANDLED
* #define IRQ_RETVAL(x)
* To mix old-style and new-style irq handler returns.
*
* IRQ_NONE means we didn't handle it.
* 中断程序接收到中断信号后发现这并不是注册时指定的中断原发出的中断信号.
*此时返回次值
* IRQ_HANDLED means that we did have a valid interrupt and handled it.
* 接收到了准确的中断信号,并且作了相应正确的处理
* IRQ_RETVAL(x) selects on the two depending on x being non-zero (for handled)
*/
#define IRQ_NONE (0)
#define IRQ_HANDLED (1)
#define IRQ_RETVAL(x) ((x) != 0) //这个宏只是返回0或非0
#endif
以上是在Linux/irqreturn.h中的内容,我加了一定的注释.我想是可以说明问题的
- Linux中断笔记
- linux 中断自学笔记
- Linux 中断笔记
- linux 中断下半部自学笔记
- Linux中断处理学习笔记
- 嵌入式 LINUX中断学习笔记
- Linux中断异步通知笔记
- linux内核分析笔记----中断和中断处理程序
- linux内核分析笔记----中断和中断处理程序
- Linux Kernel Development 笔记(六)中断以及中断处理
- linux内核分析笔记----中断和中断处理程序
- linux内核分析笔记----中断和中断处理程序
- linux内核分析笔记----中断和中断处理程序
- 个人学习笔记--linux中断下半部之软中断
- Linux源代码阅读笔记-硬件中断
- Linux设备驱动-中断处理笔记
- linux内核学习笔记:中断与异常
- linux内核分析笔记---中断实现
- php const 用法详解 定义 常量
- Mongodb开启与关闭
- 一句话评论设计模式六大原则
- 再续.ashx
- C#遍历文件夹及其子目录
- Linux中断笔记
- C工程的组织方式(头文件的功能)以及Linux下常用的头文件的作用
- PHP 类的 继承 extends 简单的类继承
- 关于Chrome沙箱技术(沙盒技术)
- 撒时候写出这样的js就好了
- 通杀IIS7.0畸形解析0day漏洞
- 占领互联网:黑客加入全球示威
- Multi-process Architecture
- C++ 求数组中最大值