免费注册 查看新帖 |

Chinaunix

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

底层驱动的poll函数-poll_wait疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-27 15:57 |只看该作者 |倒序浏览
本帖最后由 lanlovehua 于 2010-09-27 15:59 编辑



  1. typedef void (*poll_queue_proc)(struct file *, wait_queue_head_t *, struct poll_table_struct *);
  2.    
  3.    typedef struct poll_table_struct {
  4.     poll_queue_proc qproc;
  5.   } poll_table;
  6.    
  7.    static inline void poll_wait(struct file * filp, wait_queue_head_t * wait_address, poll_table *p)
  8. {
  9.     if (p && wait_address)
  10.     p->qproc(filp, wait_address, p);
  11. }
复制代码




     
以上代码来自: linux+v2.6.28/include/linux/poll.h
第10行代码 : p->qproc(filp, wait_address, p);
请问这个函数在哪里阿?我在内核里找不到阿。谢谢了。



论坛徽章:
0
2 [报告]
发表于 2010-09-27 17:08 |只看该作者
include/linux/poll.h


static inline void init_poll_funcptr(poll_table *pt, poll_queue_proc qproc)
{
        pt->qproc = qproc;
}

论坛徽章:
0
3 [报告]
发表于 2012-03-14 13:17 |只看该作者
回复 2# linyunxian


    你好,这个问题我还是没懂,你能再解释清楚点吗?谢谢了

论坛徽章:
0
4 [报告]
发表于 2012-03-14 14:45 |只看该作者
  1. void poll_initwait(struct poll_wqueues *pwq)
  2. {
  3.         init_poll_funcptr(&pwq->pt, __pollwait);
  4.         pwq->polling_task = current;
  5.         pwq->triggered = 0;
  6.         pwq->error = 0;
  7.         pwq->table = NULL;
  8.         pwq->inline_index = 0;
  9. }
复制代码
  1. static inline void init_poll_funcptr(poll_table *pt, poll_queue_proc qproc)
  2. {
  3.         pt->qproc = qproc;
  4.         pt->key   = ~0UL; /* all events enabled */
  5. }
复制代码
所以pwq->pt.qproc = __pollwait,所以
p->qproc(filp, wait_address, p) 即是__pollwait(filp,wait_address,p)

我上面引用的是3.2.2的代码,看来跟2.6.28没什么变化。

论坛徽章:
0
5 [报告]
发表于 2012-03-14 16:22 |只看该作者
MagicBoy2010 发表于 2012-03-14 14:45
所以pwq->pt.qproc = __pollwait,所以
p->qproc(filp, wait_address, p) 即是__pollwait(filp,wait_addre ...


赞成!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP