免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1559 | 回复: 0
打印 上一主题 下一主题

[驱动] 中断处理函数 进程休眠 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-14 10:57 |只看该作者 |倒序浏览
本人菜鸟一枚,写驱动有许多问题,请大家指教
     我在写hsi驱动的中断时,在read函数中调用wait_event_interrupbile()函数,当前进程就会挂起。这时候触发中断,进入中断处理函数,想在中断处理函数中wake_up唤醒当前进程,但是wake_up中的参数不会传递,代码如下:

static ssize_t hsc_read(struct *file, char __user *buf, size_t len, loff_t *ppos __maybe_unused)
{
    struct hsc_channel *channel = file->private_data;
    struct hsi_msg *msg;
    ssize_t ret;
    ... ...
    ret = wait_event_interruptible(channel->rx_wait, !list_empty(&channel->free_msgs_list));
    ... ...
    msg = hsc_get_first_msg(channel->free_msgs_list);
   ... ...

   copy_to_user((void __user *)buf, sg_virt(msg->sgt.sgl), len);
   ... ...

}
中断处理函数:

static irqreturn_t hsi_imx_isr(int irq, void *dev_id)
{
    struct hsi_imx_data *hsi_imx = dev_id;
    .... ....

    wake_up(&channel->rx_wait);

    return IRQ_HANDLED;

}

其中wake_up函数的参数正式wait_event_interruptible中的第一个参数,但是中断处理函数位于hsi_imx.c文件中,read函数位于hsi_char.c中,那么关于这个参数channel怎么才能传递?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP