首页 > 代码库 > [linux驱动][linux中断]——中断处理
[linux驱动][linux中断]——中断处理
一,中断处理函数
中断处理函数运行在中断上下文,不可抢占、调度。
中断上下文编程需要注意以下几点:
不能睡眠或调用 schedule 放弃CPU
不能调用任何可能睡眠的函数,例如:获取信号量
不能访问用户空间数据,例如:copy_from_user,因为它不是在进程上下文中执行的。
执行时间尽可能短
int request_irq (unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev_id)
请求中断,返回0表示成功,负数表示错误码
irq :中断号
handler:中断处理函数
flags:中断标志
name:中断名字,显示在 /proc/interrupts中
dev_id:用作共享中断指针,用于标识不同共享中断int
void free_irq(unigned int irq, void *dev_id)
释放中断
中断处理函数一般是在驱动初始化或者设备第一次打开的时候安装,系统上中断线有限,所以在驱动初始化的时候就安装中断处理函数会显得浪费,一般是在设备第一次打开的时候安装。使用free_irq一般是在设备最后一次被关闭的时候。
[linux驱动][linux中断]——中断处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。