您所在的位置: 首页>>读书频道>>操作系统>>Linux>>

12.2.8 触摸屏设备驱动的轮询与异步通知

http://book.51cto.com  2008-03-10 13:26  宋宝华 编著  人民邮电出版社  我要评论(0)
  • 摘要:《Linux设备驱动开发详解》本书全面而详细地讲解了Linux设备驱动开发中涉及的理论以及多种设备驱动的框架。第12章将分析5个典型的字符设备驱动,在这些驱动中,将灵活地运用到前面各章所讲解的内容。本文写的是触摸屏设备驱动的轮询与异步通知。
  • 标签:Linux  设备  驱动  cdev  Linux设备驱动开发详解

12.2.8  触摸屏设备驱动的轮询与异步通知

在触摸屏设备驱动中,通过s3c2410_ts_poll()函数实现了轮询接口,这个函数的实现非常简单。它将等待队列添加到poll_table,当缓冲区有数据时,返回资源可读取标志,否则返回0,如代码清单12.26所示。

代码清单12.26  触摸屏设备驱动的poll()函数

1 static unsigned int s3c2410_ts_poll(struct file *filp, struct poll_table_struct *wait)
2 {
3 poll_wait(filp, &(tsdev.wq), wait);//添加等待队列到poll_table
4 return (tsdev.head == tsdev.tail) ? 0 : (POLLIN | POLLRDNORM); 
5 }

而为了实现触摸屏设备驱动对应用程序的异步通知,设备驱动中要实现s3c2410_ts_fasync()函数,这个函数与第9章给出的模板完全一样,如代码清单12.27所示。

代码清单12.27 触摸屏设备驱动的fasync()函数

1 #ifdef USE_ASYNC
2 static int s3c2410_ts_fasync(int fd, struct file *filp, int mode) 
3 {
4 return fasync_helper(fd, filp, mode, &(tsdev.aq));
5 }
6 #endif

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
Linux——从菜鸟到高手
二手仿冒设备与思科再营销谁更火
Linux/Solaris服务器的安全配置
双机热备技术
Linux 集群技术专题
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有