当前位置: 首页 > news >正文

政务公开网站建设管理网站建设带后台

政务公开网站建设管理,网站建设带后台,成都网站app开发,seo网站首页推广文章目录 input_handle结构体详解配对的input设备与input事件处理器实例input核心层对驱动层和事件层之间的框架建立流程图 本文章中与input子系统相关的结构体可参考input子系统结构体解析 input函数路径#xff1a;drivers/input/input.c input_handle结构体详解 input_ha… 文章目录 input_handle结构体详解配对的input设备与input事件处理器实例input核心层对驱动层和事件层之间的框架建立流程图 本文章中与input子系统相关的结构体可参考input子系统结构体解析 input函数路径drivers/input/input.c input_handle结构体详解 input_handle结构体属于核心层代表一个配对的input设备与input事件处理器。 int input_register_handle(struct input_handle *handle) {struct input_handler *handler handle-handler;struct input_dev *dev handle-dev;int error;/* 获取互斥锁 */error mutex_lock_interruptible(dev-mutex);if (error)return error;/* 将handle的d_node链接到其相关的input_dev的h_list链表中 */if (handler-filter)list_add_rcu(handle-d_node, dev-h_list);elselist_add_tail_rcu(handle-d_node, dev-h_list);/* 释放锁 */mutex_unlock(dev-mutex);/* 将handle的h_node链接到其相关的input_handler的h_list链表中 */list_add_tail_rcu(handle-h_node, handler-h_list);if (handler-start)handler-start(handle);return 0; } EXPORT_SYMBOL(input_register_handle);配对的input设备与input事件处理器实例 当 input设备注册Input_register_device 和 一个新的input事件注册input_register_handler 匹配上都会调用回调函数handler-connect(handler, dev, id) 以事件处理器evdev为例 /* drivers/input/evdev.c */ static int evdev_connect(struct input_handler *handler, struct input_dev *dev,const struct input_device_id *id) {struct evdev *evdev;int minor;int dev_no;int error;/* 获取次设备号从evdev_table中找到一个未使用的最小的数组项最大值32 */minor input_get_new_minor(EVDEV_MINOR_BASE, EVDEV_MINORS, true);if (minor 0) {error minor;pr_err(failed to reserve new minor: %d\n, error);return error;}/* 分配空间 */evdev kzalloc(sizeof(struct evdev), GFP_KERNEL);if (!evdev) {error -ENOMEM;goto err_free_minor;}/* 初始化client_list链表头代表多少应用读写这个设备 */INIT_LIST_HEAD(evdev-client_list); spin_lock_init(evdev-client_lock); /* 加锁 */ mutex_init(evdev-mutex); /* */init_waitqueue_head(evdev-wait); /* 初始化等待队列当evdev没有数据可读时就 在 该队列上睡眠 */evdev-exist true; /* 设备存在 */dev_no minor;if (dev_no EVDEV_MINOR_BASE EVDEV_MINORS)dev_no - EVDEV_MINOR_BASE;dev_set_name(evdev-dev, event%d, dev_no); /* 设置设备名为eventX */evdev-handle.dev input_get_device(dev); /* 获取设备 */evdev-handle.name dev_name(evdev-dev); /* 设备名称 */evdev-handle.handler handler; /* handler绑定 */ evdev-handle.private evdev; /* evdev数据指向 */evdev-dev.devt MKDEV(INPUT_MAJOR, minor); /* sysfs下的设备号 */evdev-dev.class input_class; /* 将input_class作为设备类 */evdev-dev.parent dev-dev; /* input_dev作为evdev的父设备 */evdev-dev.release evdev_free; /* 释放函数 */device_initialize(evdev-dev); /* 初始化设备 *//* 注册一个handle处理事件 */error input_register_handle(evdev-handle); if (error)goto err_free_evdev;cdev_init(evdev-cdev, evdev_fops); /* 字符设备初始化 */error cdev_device_add(evdev-cdev, evdev-dev); /* 添加字符设备 */if (error)goto err_cleanup_evdev;return 0;err_cleanup_evdev:evdev_cleanup(evdev); err_unregister_handle:input_unregister_handle(evdev-handle); err_free_evdev:put_device(evdev-dev); err_free_minor:input_free_minor(minor);return error; }1保存驱动设备名字event0是表示input子系统驱动名字就由event1、event2…递增 2保存驱动设备的主次设备号其中主设备号INPUT_MAJOR13次设备号EVSEV_MINOR_BASE驱动程序本身设备号。 3会在/sys/class/input类下创建驱动设备event%d比如键盘驱动event1 4最终进入input_register_handler()函数来注册handle。 input核心层对驱动层和事件层之间的框架建立流程图 input核心层对驱动层和事件层之间的框架建立流程图
http://www.tj-hxxt.cn/news/233651.html

相关文章:

  • 营口 微网站建设wordpress怎么查看域名绑定
  • 广州网站建设 易点宠物医院网站开发
  • wordpress 下载站主题建设银行网上流览网站
  • 网站子目录绑定二级域名网页设计个人
  • 17网站一起做网店打不开做那种网站
  • 如何统计网站pv买了个网站后怎么做的
  • 网站seo策划wordpress页脚设计
  • 网站管理平台扩展插件建设网站需要多少费用
  • 天河区门户网站教育专栏茶百道加盟费大概要多少
  • 博湖网站建设丽水网站建设明恩玉杰
  • 美食网站建设书创新作品及其设计方案
  • fedora做网站服务器营销网络遍布全国
  • 公司网站百度搜索的描述怎么做做网站一般需要多久
  • 网站开发 php模板做网站有2个前提条件 一个是网站
  • 网站开发得多长时间wordpress 什么是插件吗
  • wordpress 视频站网站客户端怎么做的
  • 设计师网站库dw做了网站还可以做淘宝详情吗
  • 网站开发实验报告总结手机视频网站怎么做
  • 网站开发朋友圈广告免费网页空间
  • 网站建设关键字优化免费建站系统软件
  • 网站建设几种语言对比微信开放平台怎么解除
  • 推广类网站奉贤庄行网站建设
  • 医院做网站运维公司做网站还是做app
  • 哪里有建网站的公司王妃貌美还狠凶
  • 做网站心得asp源码自助建站
  • 建设将网站加入受信网站再试支持wordpress空间
  • 做平面素材好的网站摄影网站源码
  • wordpress登录修改松江网站关键词优化
  • 山东青岛网站制作公司大数据抓取客户软件
  • 徐州建设企业网站网站数据库是谁提供