栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

kernel中的completion

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

kernel中的completion

一个实例:
ko insmod 的时候,创建 completion , 然后进行 driver probe/add,init进程使用 wait_for_completion_timeout 等待固定时间,看 driver 是否probe ok,driver probe 成功之后,使用 complete() 通知给等待它的进程

#include 
#include 
#include 
#include 
#include 

static struct completion finish_event;

static int demo_add(struct xxx_device *device)
{
	// 这里干一些事
	// ... ...

	complete(&finish_event);
	return 0;
}


static struct xxx_driver xxx_driver = {
	.name = "xxxx",
	.ops = {
		.add = demo_add,
		.remove = demo_remove,
	},
};

static int __init xxx_init(void)
{
	int ret, t;
	init_completion(&finish_event);

	ret = xxx_bus_register_driver(&xxx_driver);
	if (ret)
		return ret;

	t = wait_for_completion_timeout(&finish_event, 5*HZ);
	if (t == 0) {
		ret = -ETIMEDOUT;
		goto cleanup;
	}
}

具体原理,后面补上

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/513725.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号