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

网站品牌栏目建设情况广州竞价托管代运营

网站品牌栏目建设情况,广州竞价托管代运营,建e网3d模型库,网站代理怎么做的文章目录 input_handle结构体详解配对的input设备与input事件处理器实例input核心层对驱动层和事件层之间的框架建立流程图 本文章中与input子系统相关的结构体可参考input子系统结构体解析 input函数路径: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_MAJOR=13,次设备号=EVSEV_MINOR_BASE+驱动程序本身设备号。
(3)会在/sys/class/input类下创建驱动设备event%d,比如键盘驱动event1
(4)最终进入input_register_handler()函数来注册handle。


input核心层对驱动层和事件层之间的框架建立流程图

在这里插入图片描述
input核心层对驱动层和事件层之间的框架建立流程图

http://www.khdw.cn/news/35853.html

相关文章:

  • 哈尔滨建设网站公司吗天津做优化好的公司
  • 网站找人做备案的价格漯河seo公司
  • 线上培训网站开发南宁seo关键词排名
  • 南京市建筑工程网站新东方培训机构官网
  • 网页设计与制作课程标准构建搜索引擎优化目标
  • 空间站 参考消息上海疫情又要爆发了
  • 通江移动网站建设国际热点新闻
  • 中国政府网站建设与应用游戏优化是什么意思?
  • 网站建设阝金手指科杰十二爱站网关键词长尾挖掘工具
  • 网站建设开发软件有哪些站长工具seo综合查询推广
  • 发布网站后备案襄阳seo优化排名
  • 小程序自助建站百度移动应用
  • 远程教育网站开发网站生成
  • 网络专业有哪些网店产品seo如何优化
  • 怎么知道一个网站是谁做的品牌推广专员
  • wordpress 摘要图片杭州seo搜索引擎优化
  • 自学网网站怎么做一个自己的网站
  • 房地产网站建设解决方案微博付费推广有用吗
  • 营销型 网站 品牌网站seo快速排名
  • 医院网站怎么做运营新东方一对一辅导价格
  • 做播放器电影网站需要多少钱凡科建站后属于自己的网站吗
  • 医疗机械网站怎么做网络推广网站推广淘宝运营商
  • 做推广便宜的网站建站系统哪个好
  • 西宁市网站建设公司自己的网站怎么推广
  • 日本女做受网站企业网络组建方案
  • 网络营销的工作内容包括哪些优化搜狗排名
  • 做一家电商网站需要多少钱正规的推文平台
  • 公司的网站推广费怎么做分录长沙h5网站建设
  • 泗阳做网站公司世界足球排名最新
  • wordpress谁开发的长春seo优化