a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 93|回复: 0

[综合辅导] Linux认证之应编写带有参数的中断模块

[复制链接]
发表于 2012-8-4 12:07:07 | 显示全部楼层 |阅读模式
Linux认证之应编写带有参数的中断模块5 E1 U( f( j3 a1 G6 A$ C% L
编写带有参数的中断模块7 b3 Y3 P/ X9 X/ a2 [* I
在上一部分“编写带有参数的中断模块”中,这个看似简单的程序,你调试并运行以后思考了哪些方面的问题?% u7 h5 S3 A( u1 K, C
(1)给模块传递参数,使得这个模块的扩展和应用有了空间,例如,在我的机器上查看/proc/interrupts
8 D1 C7 n- P2 p: C* W# H0 z CPU0
, M" M/ X' {% B0 y1 b6 v$ D- f    0:   10655925    IO-APIC-edge      timer& B* T2 I6 n# c1 e2 V
    1:       9148         IO-APIC-edge      i8042' D% F) ?1 M! s7 w0 q: L7 j
    6:          4          I O-APIC-edge      floppy
/ s/ \6 V1 k: h( ^" W9 Z2 j    7:          0          IO-APIC-edge      parport0
, Z; X# Y+ C$ N1 J  |5 A) B! t% c    8:          3           IO-APIC-edge      rtc
1 I& y: A% K5 _. h9 G2 r0 e    9:          0           IO-APIC-fasteoi   acpi
9 C3 e! O: q6 l. y2 M7 X% O. I9 T    12:      41970      IO-APIC-edge      i8042
8 J1 F# q, D, q    15:     106157      IO-APIC-edge      ide1
6 e0 T2 ]( L  w7 L4 R9 T3 {    16:      57823      IO-APIC-fasteoi   ioc0
: F# d. M8 Q6 S6 K    17:       8090       IO-APIC-fasteoi   eth0
# |2 b2 u4 n  n+ y0 G+ j: V# }6 k    18:        245       IO-APIC-fasteoi   uhci_hcd:usb1, Ensoniq AudioPCI, usb6 a! Q. @( C3 f5 ]% n3 [! ~, n1 x1 H" z
    NMI:          05 A. w' ]. F' d
    LOC:   10249542" v# q2 B, ~7 F. ~' l+ ]
    ERR:          00 |3 q# o( a+ h1 V+ r
    MIS:           05 }; ]* e$ C9 l4 }5 ]& i9 v0 a
然后,在插入模块时,你对每个中断都作为参数试运行一下,看看会出现什么问题?思考一下irq为0,3等值时,为什么插入失败?这就引出中断的共享和非共享问题,从而促使你分析Linux对共享的中断到底如何处理,共享同一个中断号的中断处理程序到底如何执行?
! m. B& Q7 w5 i: C3 J! ^7 @2. 对于myinterrupt()函数,可以进行怎样的改进,使得这个自定义的中断处理程序变得有实际意义?
+ X( N* Z) r9 }& R* pstatic irqreturn_t myinterrupt(int irq, void *dev_id, struct pt_regs *regs)
( ?7 w6 l1 q1 s+ d& J1 _& _{  [8 J0 X6 e' n2 p
static int mycount = 0;
5 b/ s- B6 y9 J: \( N+ {if (mycount 《 10) {
. K" u% R7 O( D- p. Z- kprintk(“Interrupt!\n”);; l5 O3 c8 h  B6 b5 E4 p7 y3 r
mycount++;
' s8 \$ @* L( t5 W. @, f}: e. @1 Q3 w$ l  l
return IRQ_NONE;
8 |7 q9 n0 K; Y6 f  G}
* H2 t4 g9 `/ S) Q7 ^$ b比如,对于网卡中断,在此收集每一次中断发生时,从网卡接收到的数据,把其存入到文件中。以此思路,随你考虑应用场景了。
3 K, {% n! F9 v0 M2 F# X* \3. 模块机制给Linux内核的扩展和应用提供了方便的入口,在我们内核之旅http://www.kerneltravel.net 的电子杂志部分,针对内核相关的内容,每一部分都有相对比较实际的内核应用题目,感兴趣者可以去实践,前提是对内核相关内容的彻透理解。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-5 02:31 , Processed in 0.331867 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表