📄 irq.c
字号:
#include <asm/irq.h>#include <asm/arch-s3c2410/irqs.h>#include "../inc/inc.h"extern MANAGER *Mg_p;static DECLARE_WAIT_QUEUE_HEAD(keys_waitq);static volatile int env_keys = 0;int Liid_keys_read(void *vptr, void *arg){ unsigned long err; int i; wait_event_interruptible(keys_waitq, env_keys); env_keys = 0; for(i = 0; i < 4 ; i ++){ printk("%x ", Mg_p->press_cnt[i]); } printk("\n");}irqreturn_t Liid_interrupts_hand(int irq, void *dev_id, struct pt_regs *regs){ volatile int *cnt = (volatile int *)dev_id; *cnt = *cnt + 1; switch(irq){ case IRQ_EINT0: printk("~"); break; case IRQ_EINT2: printk("!"); break; case IRQ_EINT11: printk("@"); break; case IRQ_EINT19: printk("#"); break; default: printk("|_|"); break; } env_keys = 1; wake_up_interruptible(&keys_waitq); //printk("keys--->%d:%#x \n", irq, *cnt); return 0;}int Liid_init_irq(void *vptr, void *arg){ int error, i; for(i = 0; i < 4; i++){ error = request_irq(Mg_p->key_irqs[i]->irq_num, Liid_interrupts_hand, Mg_p->key_irqs[i]->flags, Mg_p->key_irqs[i]->name, (void *)(&(Mg_p->press_cnt[i]))); if(error){ printk("request irq(%d) error:%d\r\n", i, error); break; } } if(error){ }}int Liid_rm_irq(void *vptr, void *arg){ int i; for(i = 0; i < 4; i++){ free_irq(Mg_p->key_irqs[i]->irq_num, (void *)(&(Mg_p->press_cnt[i]))); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -