作用
configfs是一个很有用的接口,可以通过创建文件和创建夹开启和关闭相应的。同时可以通过相应的文件创建相应的属性。
开启支持
要使用configfs需要在内核开启CONFIG_CONFIGFS特性
相关API和数据结构
config_group_init(struct config_group *);
configfs_register_subsystem(struct configfs_subsystem *subsys);
configfs_unregister_subsystem(struct configfs_subsystem *subsys);
实验代码
static struct config_group *testfs_make(struct config_group *group, const char *name)
{
}
static void testfs_drop(struct config_group *group, struct config_item *item)
{
config_item_put(item);
}
static struct configfs_group_operations testfs_ops = {
.make_group = &testfs_make,
.drop_item = &testfs_drop,
};
static struct configfs_item_type testfs_type = {
.ct_group_ops = &testfs_ops,
.ct_owner = THIS_MODULE,
};
static struct configfs_subsystem testfs_subsys = {
.su_group = {
.cg_item = {
.ci_namedbuf = "test",
.ci_type = &testfs,
},
.su_mutex = __MUTEX_INITIALIZER(testfs_subsys.su_mutex),
};
static int __init testfs_init(void)
{
config_group_init(&testfs_subsys.su_group);
return configfs_register_subsystem(&testfs_subsys);
}
static void __exit testfs_exit(void)
{
configfs_unregister_subsystem(&testfs_subsys);
}
module_init(testfs_init);
module_exit(testfs_exit);
以上代码是一个最基本的功能测试代码
测试
mkdir config创建一个文件夹,该文件夹用于挂configfs,也可以使用内核默认的位置/sys/kernel/config
mount -t configfs nodev config
上述代码正常工作的情况下,config目录会有一个test文件夹
代码简要说明
testfs_ops对应的是在test目录mkdir,rmdir操作。
mkdir操作会调用testfs_make函数,该函数需要返回config_group类型的指针。