linux内核kobject事件处理详解

/*所有事件的名称列表*/
static const char *kobject_actions[] = {
	[KOBJ_ADD] =		"add",
	[KOBJ_REMOVE] =		"remove",
	[KOBJ_CHANGE] =		"change",
	[KOBJ_MOVE] =		"move",
	[KOBJ_ONLINE] =		"online",
	[KOBJ_OFFLINE] =	"offline",
};

/*用于事件处理的函数列表*/
struct kset_uevent_ops {
	/*事件过滤器,返回0表示不用向用户空间报告事件*/
	int (* const filter)(struct kset *kset, struct kobject *kobj);
	/*返回子系统的名字*/
	const char *(* const name)(struct kset *kset, struct kobject *kobj);
	/*添加子系统特有的环境变量*/
	int (* const uevent)(struct kset *kset, struct kobject *kobj,
		      struct kobj_uevent_env *env);
}

/*内核表示的环境*/
struct kobj_uevent_env {
	//环境变量/值数组
	char *envp[UEVENT_NUM_ENVP];
	//当前环境变量值索引
	int envp_idx;
	//环境数据缓冲区
	char buf[UEVENT_BUFFER_SIZE];
	//环境数据缓冲区的长度
	int buflen;
};


/**
 * kobject_uevent_env - send an uevent with environmental data
 *
 * @action: action that is happening
 * @kobj: struct kobject that the action is happening to
 * @envp_ext: pointer to environmental data
 *
 * Returns 0 if kobject_uevent() is completed with success or the
 * corresponding error when it fails.
 */
int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
		       char *envp_ext[])
{
	struct kobj_uevent_env *env;
	//获得事件的名称
	const cha
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值