|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API request_irq()和free_irq(),7 d" ] ]/ y( i- g
1 g7 u! T M' R) J
request_irq()的原型为:# Y- Z& B! R) J* Z9 }/ p! w
& s( ], A1 J+ ^5 W" @
int request_irq(unsigned int irq,
V, _* l- m4 @' p8 I4 S8 x% X6 k2 i
4 Q _! b7 t8 E" V2 c# u4 C+ W& [void (*handler)(int irq, void *dev_id, struct pt_regs *regs),5 ]% l- ^* B. j% H) w" P$ S
8 z9 k0 q# F8 p9 h* |- y* j, l- kunsigned long irqflags,6 E/ i( N* ~ V8 l) P; o
0 n5 ?, c/ N# Z" D3 u# b+ k
const char * devname,) Y) Y; z4 Z" Q5 g9 ]8 M$ S( d7 N
( y" h# N# q" mvoid *dev_id);1 z3 `/ {: Q, A" q4 e. c* e
6 x4 J) C, r' E) w" I1 v' c
irq是要申请的硬件中断号;
/ D1 b- T( f5 h( d: w4 r# \
, W" h4 f+ M4 L* z+ H8 N9 fhandler是向系统登记的中断处理函数,是一个回调函数,中断发生时,系统调用这个函数,dev_id参数将被传递;8 l3 l2 Y2 @7 R! @$ o; u3 M
, g, r& f; ~. E Q+ H5 i1 x# t
irqflags是中断处理的属性,若设置SA_INTERRUPT,标明中断处理程序是快速处理程序,快速处理程序被调用时屏蔽所有中断,慢速处理程 序不屏蔽;若设置SA_SHIRQ,则多个设备共享中断,dev_id在中断共享时会用到,一般设置为这个设备的device结构本身或者NULL。( m( D& F; N4 k9 k8 i3 ~( r
0 m- Z& M2 c" G Tfree_irq()的原型为:- B2 m8 C Q- e; h$ Y+ m
7 K8 k: [4 O& C' H" O4 C
void free_irq(unsigned int irq,void *dev_id);
7 L3 X; R, W6 D4 z# x& v0 l4 ]. o4 `7 k% O2 ~( d
. Y: N6 r! c- Z
1 X* d- d0 C% `+ ?& W! h1 V
" L# d( z, E; ^' j* q6 q: {
. y! r3 P8 L/ r, ~( i) D* _1 L- X8 g% b% P8 B3 |$ F f
' }8 G4 h8 \0 s% Z z* P6 _
|
|