当前位置:  技术问答>linux和unix

request_irq和free_irq出错了,大家帮忙看看。

    来源: 互联网  发布时间:2016-11-21

    本文导语:  本帖最后由 HEHE8737 于 2010-12-02 11:45:54 编辑 static irqreturn_t adc_irq(int irq,void *dev_id) {  if(!ev_adc)  {    adc_data=readl(adc_base+S3C2410_ADCDAT0)&0x3ff;    ev_adc=1;    wake_up_interruptible(&adc_waitq);  }  return IRQ_HANDLED; } static int a...

本帖最后由 HEHE8737 于 2010-12-02 11:45:54 编辑
static irqreturn_t adc_irq(int irq,void *dev_id)
{
 if(!ev_adc)
 {
   adc_data=readl(adc_base+S3C2410_ADCDAT0)&0x3ff;
   ev_adc=1;
   wake_up_interruptible(&adc_waitq);
 }
 return IRQ_HANDLED;
}


static int adc_open(struct inode *inode,struct file *filep)
{
  int ret;
  ret=request_irq(IRQ_ADC,adc_irq,IRQF_SHARED,DEVICE_NAME,1);
  if(ret)
  {
    printk(KERN_ERR"IRQ %d erro %dn",IRQ_ADC,ret);
    return -EINVAL;
  }
  return 0;
}



static ssize_t adc_read(struct file *filp,char *buffer,size_t count,loff_t *ppos)
{
  if(down_trylock(&ADC_LOCK))
  { 
     return -EBUSY;
  }
  if(!ev_adc)
  {
    if(filp->f_flags&O_NONBLOCK)
    {
        return -EAGAIN;
    }
    else
    {
       start_adc();
       wait_event_interruptible(adc_waitq,ev_adc);
    }
  }
  ev_adc=0;
  copy_to_user(buffer,(char*)&adc_data,sizeof(adc_data));
  up(&ADC_LOCK);
  return sizeof(adc_data);
}


static void __exit adc_exit(void)
{
  free_irq(IRQ_ADC,1);
  iounmap(adc_base);
  if(adc_clk)
  {
   clk_disable(adc_clk);
   clk_put(adc_clk);
   adc_clk=NULL;
  } 
  misc_deregister(&adc_miscdev);
  printk("2440ADC device Removed!n ");
}

打印的警告信息如下(驱动也打不开):
/home/xiong/drivers/adc-armfriendly/adcfriendly.c: In function `adc_open':
/home/xiong/drivers/adc-armfriendly/adcfriendly.c:41: warning: passing arg 5 of `request_irq' makes pointer from integer without a cast
/home/xiong/drivers/adc-armfriendly/adcfriendly.c: In function `adc_exit':
/home/xiong/drivers/adc-armfriendly/adcfriendly.c:142: warning: passing arg 2 of `free_irq' makes pointer from integer without a cast
/usr/src/linux-2.6.28.7/arch/arm/include/asm/uaccess.h: In function `adc_read':
/home/xiong/drivers/adc-armfriendly/adcfriendly.c:82: warning: ignoring return value of `copy_to_user', declared with attribute warn_unused_result

请问这是什么问题阿?我的内核是linux-2.6.28.7,主机是fedora13

|
void free_irq(unsigned int irq, void *dev_id) 这是2.6.28的函数原型,参数类型不对

    
 
 

您可能感兴趣的文章:

  • request_irq 與free_irq問題
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • request_irq() enable_irq() and disable_irq() 如何使用、、、???
  • request_irq中断,驱动加载后出现init_module:Device or resource busy
  • request_irq问题,大家指教。
  • 2.6下的request_irq()的问题!!!
  • request_irq 在linux-2.4.4 注册中断的问题,基于PowerPC
  • 2.6下用request_irq引起的问题!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3