Linux驱动开发-8、中断分层机制_软中断

中断分层机制_软中断

1、概念:

软中断是模拟硬件中断的概念,实现宏观上的异步执行效果。其实tasklet也是基于软中断实现的。

2、软中断和硬中断的区别

a) 硬中断是外部设备对CPU的中断,软中断时程序对内核的中断

b) 信号是由内核(或者其他进程)对某个进程的软中断

3、结构表示:

struct softirq_action

{

void (*action)(struct softirq_action *);

};

注:该结构体包含软中断处理函数指针和传递给该函数的参数

4、编程相关函数

a) open_softirq(): 用于注册软中断对应的处理函数

 

void open_softirq(int nr, void (*action)(struct softirq_action *))

{

softirq_vec[nr].action = action;

}

 

b) raise_softirq():触发一个软中断

 

void raise_softirq(unsigned int nr)

{

unsigned long flags;

local_irq_save(flags);

raise_softirq_irqoff(nr);

local_irq_restore(flags);

}

 

5、编程模型

a) 定义一个软中断结构,如果需要传递参数给中断处理函数的话

b) 构建软中断处理函数

c) 注册软软中断

d) 在某个程序中触发软中断

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值