libudev使用说明书

转http://blog.csdn.net/coroutines/article/details/38067805

1. 初始化

首先调用udev_new,创建一个udev library context。udev library
context采用引用记数机制,创建的context默认引用记数为1,使用udev_ref和udev_unref增加或减少引用记数,如果引用记数为0,则释放内部资源。

2. 枚举设备

使用udev_enumrate_new创建一个枚举器,用于扫描系统已接设备。使用udev_enumrate_ref和udev_enumrate_unref增加或减少引用记数。

使用udev_enumrate_add_match/nomatch_xxx系列函数增加枚举的过滤器,过滤关键字以字符表示,如"block"设备。

使用udev_enumrate_scan_xxx系列函数扫描/sys目录下,所有与过滤器匹配的设备。扫描完成后的数据结构是一个链表,使用udev_enumerate_get_list_entry获取链表的首个结点,使用udev_list_entry_foreach遍历整个链表。

3. 监控设备插拔 udev的设备插拔基于netlink实现。

使用udev_monitor_new_from_netlink创建一个新的monitor,函数的第二个参数是事件源的名称,可选"kernel"或"udev"。基于"kernel"的事件通知要早于"udev",但相关的设备结点未必创建完成,所以一般应用的设计要基于"udev"进行监控。

使用udev_monitor_filter_add_match_subsystem_devtype增加一个基于设备类型的udev事件过滤器,例如: "block"设备。

使用udev_monitor_enable_receiving启动监控过程。监控可以使用udev_monitor_get_fd获取一个文件描述符,基于返回的fd可以执行poll操作,简化程序设计。

插拔事件到达后,可以使用udev_monitor_receive_device获取产生事件的设备映射。调用udev_device_get_action可以获得一个字符串:"add"或者"remove",以及"change",
"online", "offline"等,但后三个未知什么情况下会产生。

4、获取设备信息

使用udev_list_entry_get_name可以得到一个设备结点的sys路径,基于这个路径使用udev_device_new_from_syspath可以创建一个udev设备的映射,用于获取设备属性。获取设备属性使用udev_device_get_properties_list_entry,返回一个存储了设备所有属性信息的链表,使用udev_list_entry_foreach遍历链表,使用udev_list_entry_get_name和udev_list_entry_get_value获取属性的名称和值。

时间: 2024-10-07 03:44:29

libudev使用说明书的相关文章

清澈启凡工作室KI3T part1使用说明书.doc

清澈启凡工作室KI3T part1使用说明书 1.     操作 a)       打开后备箱,拉出开关,按一下开关,即可运行灯光和声音 b)      再按一下开关,即可断开总电源,停止运行的灯光和声音. 2.     充电 a)       打开后备箱,关闭开关,停止灯光和声音的运行. b)      把充电线插入充电口,另一端插入电脑USB口. c)       看到充电电路板上蓝色灯和红色灯同时亮起,表示正在充电. d)      待充电口电路板上只有蓝色灯亮时,表示充电完成. e)  

OSChina 娱乐弹弹弹 —— 程序猿使用说明书,你媳妇看了吗?

今天周日啦,心情有点慌慌慌,但是还是很期待上班,可以和大家一起逗逗逗- 最近天气冷啦,大家要注意保暖保湿,养好白白胖胖的大腿和手臂,过年有用,嘿嘿 既然天气已经这么冷了,再冷一点大家也不会介意的,对不对? 冷笑话开启- 今天你上班了吗? 为什么Java开发人员要戴眼镜?  --因为他们无法C# 复制-粘贴,我有神器在手,赚钱就这样简单! 每当我看到有人使用如此多的#话题标签,我就忍不住了... 极客杰作--电脑床 程序员是一个有机体,然后,问题来了... 谁说Mac不支持Windows?敢不敢再

error while loading shared libraries: libudev.so.0 的问题

在linux下运行koala的时候遇到了问题: 应该是缺少文件libudev.so.0 在/lib和/lib64目录下也都没有这个文件.然后网上找解决方案,在/lib/x86_64-linux-gnu/目录下找到一个文件:libudev.so.1 于是做了一个软连接: sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0 搞定. 参考自: error while loading share

Beetl2.2使用说明书20151201

李家智<[email protected]> Table of Contents 1. 什么是Beetl 2. 基本用法 2.1. 从GroupTemplate开始 2.2. 模板基础配置 2.3. 模板资源加载器 2.4. 定界符与占位符号 2.5. 注释 2.6. 临时变量定义 2.7. 全局变量定义 2.8. 共享变量 2.9. 模板变量 2.10. 引用属性 2.11. 算数表达式 2.12. 逻辑表达式 2.13. 循环语句 2.14. 条件语句 2.15. try-catch 2.

Alpha版使用说明书

游戏规则:             玩家是黑色的小煤球哦!             通过方向键或者ASDW,来控制小球移动(上.下.左.右).             累计时间,直到碰到了红色的小球,游戏结束.注意哦!街机模式福利多多!              碰到绿色的蘑菇小球会变大:              碰到星星小球会变小:              获得金币可以提高分数!!              赶快开始吧……

AndroidAnnotations使用说明书—简介

一.AndroidAnnotations是什么: AndroidAnnotations是一个利用注解方式来简化代码结构,提高开发效率的开源框架,类似开源框架还有:roboguice .butterknife .dagger 等. AndroidAnnotations的目标是使Android应用程序易于开发和维护,而它使用的主要手段是通过注解减少代码量来实现这个目标. 开发者可以通过注解来表明自己的意图,然后AndroidAnnotations会在程序编译的时候生成和意图对应的代码. Androi

git以及gitHub的使用说明书

一.使用说明 1.Git与github的功能: Git是世界上最先进的分布式版本控制系统,也就是用来记录你的项目代码历史变更信息的工具:github就是用来存储你的代码以及变更信息的云端平台: 2.优点: 先进并且免费(免费只是说在你的代码项目完全开源的状态下才是): 3.缺点: Github属于国外站点,国内上传速度较慢(这里顺便再给码农们推荐一下“码云”这个版本管理器是中文版的属于国内的吧,相对于个人来说感觉还是不错的). 二.开发步骤说明 1.安装 去https://git-for-win

软件使用说明书

一. 软件概述 本软件面向广大简易图片使用者,旨在为用户提供简单方便的不对其他软件产生依赖的截图软件,可以脱机使用. 二. 软件功能 本次发布版本为测试版本,只开放部分功能,敬请谅解.目前可以使用的功能有 a) 实现基本截图功能 b) 简单的图片涂鸦功能 c) 图片标识功能 d) 图片文本编辑功能 e) 快捷键唤醒功能 f) 后台运行功能 三. 软件使用方法 a) 下载安装包,点击安装包中的setup.exe进行安装 b) 安装完成后,单击桌面图标可以开启本软件 c) 软件开启后,会在任务栏显示

最新出炉程序猿使用说明书

[品名]民间俗称程序猿.攻城狮.晚睡讲师(僵尸),正式场合一般仅仅称为程序猿:古称不具体,未有史料表明古时有此物种 [成分]水.血液.脂肪类碳水化合物. 注意,大部分可能含有尼古丁成分,可是不影响使用 [性状]本品形状不一.腰部既中间部分可能稍微肥大: [功能主治]主治"客户需求变更强迫症",尤其对智障客户和白痴领导效果最佳.但后者可能会有些副作用和并发症 [使用方法用量]随意服用,无需忌口.加班时服用效果更明显. [注意事项]尽量独自使用.不要和朋友分享.否则非常可能会被你朋友偷走.