linux 中断处理
中断处理
在 2.4 内核和 2.6内核中都使用 request_irq()
函数来注册中断服务函数。在 2.4
内核中,需要包含的头文件是 #include <linux/sched.h> ,2.6 内核中需要包含的头文件则是 #include
<linux/interrupt.h> 。函数原型如下:
2.4 内核
int
request_irq
(unsigned
int
irq
,
void
(*
handler
)(int
,
void
*
,
struct
pt_regs
*
),
unsigned
long
frags
,
const
char
*
device
,
void
*
dev_id
);
2.6 内核
request_irq
(unsigned
int
irq
,
irq_handler_t
handler
,
unsigned
long
flags
,
const
char
*
name
,
void
*
dev
);
在发生对应
于第 1个参数 irq
的中断时,则调用第 2 个参数 handler
指定的中断服务函数(也就是把 handler() 中断服务函数注册到内核中 )。
第 3 个参数 flags
指定了快速中断或中断共享等中断处理属性。在 2.6 教新的内核里(我的是 2.6.27 ~ 2.6.31 ),在
linux/interrupt.h 中定义操作这个参数的宏如下:
/*
* These flags used only by the kernel as
part of the
*
irq handling routines.
*
*
IRQF_DISABLED - keep irqs disabled when calling the action handler
* IRQF_SAMPLE_RANDOM - irq is used to
feed the random generator
* IRQF_SHARED - allow sharing the irq among several devices
* IRQF_PROBE_SHARED - set by callers
when they expect sharing mismatches to occur
* IRQF_TIMER - Flag to mark this
interrupt as timer interrupt
* IRQF_PERCPU - Interrupt is per cpu
* IRQF_NOBALANCING - Flag to exclude
this interrupt from irq balancing
* IRQF_IRQPOLL - Interrupt is used for polling (only
the interrupt that is
* registered first in an shared interrupt is
considered for
*
performance reasons)
*/
#define
IRQF_DISABLED 0x00000020
#define IRQF_SAMPLE_RANDOM 0x00000040
#define IRQF_SHARED&
相关文档:
咱就说说linux怎么一步到位设置系统时间。拿linux虚拟机做实验的朋友会知道。当你把linux还原到某个点的时候,vmware帮不了你把系统时间也给重设了。所以这时候就要手工来搞。关于咋设linux时间。网上介绍也很多,但是都是抄来抄去的东西。那怎么才能高效快捷的设置系统时间呢?
&nb ......
usb_hcd_omap_probe (const struct hc_driver *driver) (dev/ohci/ohci-omap.c)
在模块初始化时被platform_driver_register()调用,用来初始化与ohci_hcd_omap_driver
相匹配的usb主控制器.
->usb_create_hcd(driver); 创建一个代表host-controller的数据结构(struct usb_hcd)并初始化 core/hcd.h
->hcd = kz ......
前段时间拜读fudan_abc的文章后根据自己的理解写的一些分析
[url=http://blog.chinaunix.net/u1/57901/showart.php?id=1855876][color=#02368d][size=10pt]LINUX下USB1.1设备学习小记(1) [/size][/color]
[url=http://blog.chinaunix.net/u1/57901/showart.php?id=1856447][color=#02368d][size=10pt]LINUX下USB1. ......
(1)三星的触摸屏驱动s3c-ts.c:
s3c_ts_init-》platform_driver_register(&s3c_ts_driver);
static struct platform_driver s3c_ts_driver = {
.probe = s3c_ts_probe,
.dri ......