Chinaunix

标题: irq [打印本页]

作者: solinger    时间: 2012-10-17 15:53
标题: irq
insmod irq=9,interface=hello cat/proc/interrupte 查看中断,一直是0 ,怎么触发中断?
#include <linux/module.h>
#include <linux/init.h>
#include <linux/interrupt.h>
static int irq;
static char *interface;
module_param(interface,charp,0644);//表示这个参数要在插入模块时给出值
module_param(irq,int,0644);
int dev_id=127;
static irqreturn_t myinterrupt(int irq,void *dev_id)//中断服务程序
{
  static int count = 0;
  if(count<10)  {
       printk("interrupt :%d,%d\n",irq,*(int *)dev_id);
       count++;
   }
  return IRQ_NONE;
}
static int __init myirqtest_init(void)
{
  printk("my module worked\n");
  if(request_irq(irq,&myinterrupt,IRQF_SHARED,interface,&dev_id)){//注册中断
    printk(KERN_ERR "myirqtest:cannot register IRQ %d\n",irq);
    return -EIO;
   }
  printk("%s request on irq %d success ,dev_id is %d\n",interface,irq,dev_id);
  return 0;
}
static void __exit myirqtest_exit(void)
{
  printk("unloading my module\n");
  free_irq(irq,&irq);
  printk("freeing IRQ %d\n",irq);
}
module_init(myirqtest_init);
module_exit(myirqtest_exit);
MODULE_LICENSE("GPL");
~
~





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2