博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内核ACPI函数API之acpi_bus_generate_netlink_event
阅读量:4215 次
发布时间:2019-05-26

本文共 1268 字,大约阅读时间需要 4 分钟。

acpi_bus_generate_netlink_event 这个函数会根据形参来组建一个netlink的message,并发送这个message到user space其源码分析如下:int acpi_bus_generate_netlink_event(const char *device_class,				      const char *bus_id,				      u8 type, int data){	struct sk_buff *skb;	struct nlattr *attr;	struct acpi_genl_event *event;	void *msg_header;	int size;	/* allocate memory */	#申请一个用于保存message的内存空间	size = nla_total_size(sizeof(struct acpi_genl_event)) +	    nla_total_size(0);	#用申请到的内存生成一个sk_buff	skb = genlmsg_new(size, GFP_ATOMIC);	if (!skb)		return -ENOMEM;	/* add the genetlink message header */	#给sk_buff 天剑header	msg_header = genlmsg_put(skb, 0, acpi_event_seqnum++,				 &acpi_event_genl_family, 0,				 ACPI_GENL_CMD_EVENT);	if (!msg_header) {		nlmsg_free(skb);		return -ENOMEM;	}	/* fill the data */	attr =	    nla_reserve(skb, ACPI_GENL_ATTR_EVENT,			sizeof(struct acpi_genl_event));	if (!attr) {		nlmsg_free(skb);		return -EINVAL;	}	#给要发送的event赋值	event = nla_data(attr);	memset(event, 0, sizeof(struct acpi_genl_event));	strcpy(event->device_class, device_class);	strcpy(event->bus_id, bus_id);	event->type = type;	event->data = data;	#标志skb结束	/* send multicast genetlink message */	genlmsg_end(skb, msg_header);	#发送event	genlmsg_multicast(&acpi_event_genl_family, skb, 0, 0, GFP_ATOMIC);	return 0;}

转载地址:http://hdnmi.baihongyu.com/

你可能感兴趣的文章
pycharm2019版本去掉下划线的方法
查看>>
九度OJ 1091:棋盘游戏 (DP、BFS、DFS、剪枝)
查看>>
leetcode 13: Roman to Integer
查看>>
a标签中调用js方法
查看>>
js函数中传入的event参数
查看>>
[hive]优化策略
查看>>
c++14现代内存管理
查看>>
右值引用,move语义和完美转发
查看>>
c++使用宏检测类是否包含某个函数或者变量属性
查看>>
CSS之Multi-columns的column-gap和column-rule
查看>>
CSS之Multi-columns的跨列
查看>>
CSS之浮动(一)
查看>>
CSS之浮动(二)
查看>>
AtomicInteger源码解析
查看>>
CopyOnWriteArraySet源码学习
查看>>
Openfiler 配置 NFS 示例
查看>>
Oracle 11.2.0.1 RAC GRID 无法启动 : Oracle High Availability Services startup failed
查看>>
Oracle 18c 单实例安装手册 详细截图版
查看>>
Oracle Linux 6.1 + Oracle 11.2.0.1 RAC + RAW 安装文档
查看>>
Oracle 11g 新特性 -- Online Patching (Hot Patching 热补丁)说明
查看>>