悟空学Linux专栏----第35篇

  因为悟空昨晚好好研究了一下软中断,所以悟空今天上课心里终于有底了。

  悟空:Linux内核采用softirq_action结构体来表示软中断,具体结构体如下

  struct softirq_action{

  void (*action)(struct softirq_action *)

  };

  为了管理这些软中断,Linux内核中定义了一个数组,static struct softirq_action softirq_vec[NR_SOFTIRQS];一般情况下“NR_SOFTIRQS”为32,所以Linux内核的软中断最多只有32个。

  2号童鞋:老师,为什么是32个啊,而不是其他的数字啊?

  被2号童鞋这么一问,悟空竟然无法回答,悟空也感觉到很奇怪,为什么Linux内核设计了这么少的软中断,既然是个好东西Linux应该多设计一些啊。哎呀,为什么2号童鞋需要的一杯水不在我的桶里啊。悟空心想,瞎编吧。

  悟空:因为Linux系统很多时候采用了32位的系统,所以采用32个,刚好可以用每位表示一个软中断。

  2号童鞋:哦……

  悟空:而且软中断和中断有一个比较大的区别就是,一个中断的执行可以被其他中断打断,而软中断却不能被中断打断。

  2号童鞋:那么老师,软中断可以打断中断吗?

  悟空:软中断一般是由中断触发的,所以软中断一般不能打断中断,但是中断可以打断软中断。打个比喻,老师可以打断学生说话,但是学生不能打断老师上课,2号童鞋你明白了吗?

  2号童鞋无语,只好点点头。

  悟空:

  软中断的注册函数为:

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

  nr为软中断号,action为软中断的处理函数。

  软中断的挂起函数为:

  void raise_softirq(unsigned int nr);

  void raise_softirq_irqoff(unsigned int nr)。

  这时2号童鞋心里产生了一个很大的疑问,为什么悟空老师没有说软中断的注销函数啊?2号童鞋很想问,但是又不敢问。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值