⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 irq.c

📁 linux2.6驱动模块
💻 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 + -