diff --git a/README_zh.md b/README_zh.md new file mode 100644 index 0000000..c5cf379 --- /dev/null +++ b/README_zh.md @@ -0,0 +1,76 @@ +# eudev +eudev 是一个通用的内核设备管理器。它运行在用户空间, 在Linux 系统上作为守护程序运行,并侦听(通过 netlink 套接字)在初始化新设备或从系统中删除设备时内核发出的内容。通过其提供的规则与事件的导出值和发现设备的属性匹配,命名并创建设备节点,并运行已配置的程序来设置和配置设备。 + +每当设备结构发生变化时,内核都会发出一个由设备管理器获取的 uevent ,然后设备管理器查找声明的规则,根据uevent中包含的信息,它会找到触发和执行所需操作所需的规则。这些动作可能涉及设备文件的创建或删除,还可能触发将特定固件文件加载到内核内存中。 + +## 目录结构 + +``` +README.md 英文说明 +README_zh.md 中文说明 +COPYING 版权文件 +hwdb/ 硬件数据库文件 +rules.d/ 规则文件 +export_include/ 导出头文件 +src/ C++源码 +test/ 测试文件 +man/ 帮助文件 +``` + +## OpenHarmony如何集成libudev +### 1.头文件引入 +```cpp +#include "libudev.h" +``` +### 2.BUILD.gn添加引用 +```cpp +deps += [ "//third_party/eudev:libudev" ] +``` +### 3.调用udev函数过程举例 +```cpp +#include +#include "libudev.h" + +void test_device(struct udev *udev, const char *syspath) +{ + struct udev_device *device; + printf("looking at device: %s\n", syspath); + device = udev_device_new_from_syspath(udev, syspath); + if (device == NULL) { + printf("no device found\n"); + return; + } + printf("*** device: %p ***\n", device); + const char *str = udev_device_get_devnode(device); + if (str != NULL) { + printf("devname: '%s'\n", str); + } + dev_t devnum = udev_device_get_devnum(device); + if (major(devnum) > 0) { + printf("devnum: %u:%u\n", major(devnum), minor(devnum)); + } + udev_device_unref(device); +} + +int main(int argc, char *argv[]) +{ + struct udev *udev = udev_new(); + printf("udev context: %p\n", udev); + if (udev == NULL) { + printf("no context\n"); + return 1; + } + const char *path = "/sys/devices/virtual/mem/null"; + test_device(udev, path); + udev_unref(udev); + return 0; +} +``` + +## udev使用文档 + +官方文档 https://github.com/eudev-project/eudev + +## COPYING + +见 [COPYING](COPYING).