linux驱动子系统之输入子系统(5)

发布时间:2016-12-8 4:13:24 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"linux驱动子系统之输入子系统(5)",主要涉及到linux驱动子系统之输入子系统(5)方面的内容,对于linux驱动子系统之输入子系统(5)感兴趣的同学可以参考一下。

linux驱动子系统之输入子系统(5) 5. 总结 5.1 事件信息的上报过程分析 l  上报的大致过程:设备驱动层->核心层->事件处理层->应用层 l  具体调用的函数(以evdev为例):input_event()->input_handle_event() ->input_pass_event() ->handle->handler->event(handle,type, code, value) ->evdev_event() ->evdev_pass_event() ,然后通过client->buffer[client->head++]= *event赋值给client(是struct evdev_client) 很奇怪,这不还是在内核空间,根本就没传递到应用空间。别忘了事件驱动层还实现了一个file_operations,我们先来看下evdev_read函数: static ssize_t evdev_read(struct file *file, char __user *buffer,                               size_t count, loff_t *ppos) {          struct evdev_client *client =file->private_data;          struct evdev *evdev =client->evdev;          struct input_eventevent;            while (retval +input_event_size() <= count &&                 evdev_fetch_next_event(client,&event)) {                      if (input_event_to_user(buffer +retval, &event))                             return-EFAULT;                      retval +=input_event_size();          } } 看明白了吧,通过input_event_to_user()-> copy_to_user()把信息传递到用户空间。   5.2   input_dev、input_handler和input_handle三者的关系 l  input_dev、input_handler和input_handle关系图:

上一篇:MyEclipse下的Debug调试
下一篇:第四部分 测试的补充

相关文章

相关评论