linux内核模块编程之进阶(三)

在上一部分“编写带有参数的中断模块”中,这个看似简单的程序,你调试并运行以后思考了哪些方面的问题?CPU0
0:   10655925    IO-APIC-edge      timer
1:       9148         IO-APIC-edge      i8042
6:          4          I O-APIC-edge      floppy
7:          0          IO-APIC-edge      parport0
8:          3           IO-APIC-edge      rtc
9:          0           IO-APIC-fasteoi   acpi
12:      41970      IO-APIC-edge      i8042
15:     106157      IO-APIC-edge      ide1
16:      57823      IO-APIC-fasteoi   ioc0
17:       8090       IO-APIC-fasteoi   eth0
18:        245       IO-APIC-fasteoi   uhci_hcd:usb1, Ensoniq AudioPCI, usb
NMI:          0
LOC:   10249542
ERR:          0
MIS:          0
然后,在插入模块时,你对每个中断都作为参数试运行一下,看看会出现什么问题?思考一下irq为0,3等值时,为什么插入失败?这就引出中断的共享和非共享问题,从而促使你分析Linux对共享的中断到底如何处理,共享同一个中断号的中断处理程序到底如何执行?

(1)给模块传递参数,使得这个模块的扩展和应用有了空间,例如,在我的机器上查看/proc/interrupts

 

 

2. 对于myinterrupt()函数,可以进行怎样的改进,使得这个自定义的中断处理程序变得有实际意义?
static irqreturn_t myinterrupt(int irq, void *dev_id, struct pt_regs *regs)
{
static int mycount = 0;
if (mycount < 10) {
printk(”Interrupt!/n”);
mycount++;
}
return IRQ_NONE;
}

比如,对于网卡中断,在此收集每一次中断发生时,从网卡接收到的数据,把其存入到文件中。以此思路,随你考虑应用场景了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值