uevent之kobject_uevent_env

定义

kobject_uevent_env函数:


结构体kobj_uevent_env定义:

145 struct kobj_uevent_env {                                                                                                                                                                                
146         char *argv[3];                                                          
147         char *envp[UEVENT_NUM_ENVP];                                            
148         int envp_idx;                                                           
149         char buf[UEVENT_BUFFER_SIZE];                                           
150         int buflen;                                                             
151 }; 

"ACTION=add"和"DEVPATH=/dev/pci"保存结构中的什么地方?字符串保存在buf中。
之前都是一个一维数组保存一个字符串,如果多个字符串,会申请多个数组。

现在这样设计数组,把所有数据保存在buf的字符数组中,然后指针数组envp[UEVENT_NUM_ENVP],数组envp中的每个指针元素指向一个字符串。
比如:env->envp[0]=&env->buf[0];env->envp[1] = &env->buf[11]
env->buff[11]=‘D’。

ACTION=add\0DEPATH=/dev/pci\0

结构kobj_uevent_env成员含义:

  1. envp是指向buf中的每一个字符串。
    2)envp_idx是指明buf中的字符串的个数。
    3)buflen,buf含有字符串的个数,指向buf中即将存储字符串处。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: kobject_uevent_env是一个内核函数,用于发送内核事件通知。它可以在内核中创建一个kobject对象,并将其与一个事件关联起来,然后将事件发送到用户空间。这个函数可以用于驱动程序中,以通知用户空间有关设备状态的变化。 ### 回答2: kobject_uevent_env是一个内核级别的函数,用于通知用户空间的udev守护进程设备的状态变化。在Linux内核中,每个设备都被抽象成一个kobject结构体。当设备的状态发生改变(如插入或移除设备),内核调用kobject_uevent_env函数生成一个事件消息,该消息包含了设备发生变化的相关信息。这个事件消息将被传递给udev守护进程,从而触发相应的设备操作。 kobject_uevent_env函数的原型如下: ``` int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, char **envp); ``` 其中: - kobj:要发送事件消息的设备的kobject结构体。 - action:设备发生的操作,如添加(KOBJ_ADD)或删除(KOBJ_REMOVE)。 - envp:指向要发送给udev的事件消息的缓冲区指针。 kobject_uevent_env函数也支持环境变量的传递。在发送事件消息时,可以将一些自定义的环境变量随消息一起传递给udev守护进程,以便udev能够根据这些环境变量执行相应的操作。 通常来说,kobject_uevent_env函数是由内核模块中的设备驱动程序所调用的。设备驱动程序在操作设备时,会调用kobject_uevent_env函数向用户空间的udev守护进程发送事件消息,通知它设备的状态变化。在用户空间,udev守护进程将根据这些事件消息执行相应的设备管理操作。 ### 回答3: kobject_uevent_env 是一个内核函数,它用于通知用户空间有关内核对象的事件。通知是通过用户空间的 uevent 机制实现的,这个机制允许内核将事件通知到用户空间的程序中。kobject_uevent_env 函数将事件的环境信息作为参数传递给 uevent 机制,所以用户空间程序可以根据环境信息来处理事件。 kobject_uevent_env 函数的参数是一个指向 kobject 结构体的指针和一个环境变量数组。kobject 结构体表示内核对象,环境变量数组包含事件相关的环境变量。环境变量数组的每个元素都是一个字符串,格式为 "key=value"。其中,key 表示环境变量的名称,value 表示环境变量的值。 kobject_uevent_env 函数的调用者通常是内核驱动程序,当驱动程序中的某个内核对象发生事件时,驱动程序会调用 kobject_uevent_env 函数来通知用户空间。用户空间程序可以使用 libudev 库来监视 uevent 事件并相应地处理。 总之,kobject_uevent_env 是内核中实现 uevent 机制的重要函数之一,它允许内核将事件通知到用户空间,并传递事件相关的环境信息。通过 uevent 机制,用户空间程序可以监视内核对象的事件并做出相应的处理,这对于管理设备和驱动程序非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值