Linux驱动-ConfigFS-读写属性操作知识点
文章目录
前言
前面的知识点从ConfigFS 概念 -> ConfigFS基础必备 ->ConfigFS注册子系统->ConfigFS注册group组->ConfigFS 注册Item-> ConfigFS 释放资源->再到这里ConfigFS 属性读取。 其实都是从一个简单例子,一步一步到各个知识点,对同一个实例不断添加知识点的功能。 这里就开始理解属性相关知识了。
参考资料
重温一下前面的知识点,方便后续查看资料时候对知识点进行再一次的脉络梳理:
Linux驱动-设备树插件语法
设备树插件基础必备
设备树插件注册子系统
驱动-设备树插件-注册group
RK3568驱动指南|第八篇 设备树插件-第78章 用户空间创建item实验
驱动-设备数插件-创建Item
设备树插件-第79章 完善drop和release函数实验
驱动-ConfigFS-释放资源篇
设备树插件 注册attribute实验
迅为设备树插件模块知识点
一、ConfigFS 属性读写知识点
程序实例
这里我们直接先给出测试代码示例,后面看代码结果和分析
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/configfs.h>
// 定义一个名为"mygroup"的config_group结构体
static struct config_group mygroup;
// 自定义的配置项结构体
struct myitem
{
struct config_item item;
int size;
void *addr;
};
// 配置项释放函数
void myitem_release(struct config_item *item)
{
struct myitem *myitem = container_of(item, struct myitem, item);
kfree(myitem);
printk("%s\n", __func__);
};
// 读取配置项内容的回调函数
ssize_t myread_show(struct config_item *item, char *page)
{
struct myitem *myitem = container_of(item, struct myitem, item);
memcpy(page, myitem->addr, myitem->size);
printk("%s\n", __func__);
return myitem->size;
};
// 写入配置项内容的回调函数
ssize_t mywrite_store(struct config_item *item, const char *page, size_t size)
{
struct myitem *myitem = container_of(item, struct myitem, item);
myitem->addr = kmemdup(page, size, GFP_KERNEL);
myitem->size = size;
printk("%s\n", __func__);
return myitem->size;
};
// 创建只读配置项
CONFIGFS_ATTR_RO(my, read);
// 创建只写配置项
CONFIGFS_ATTR_WO(my, write);
// 配置项属性数组
struct configfs_attribute *my_attrs[] = {
&myattr_read,
&myattr_write,
NULL,

最低0.47元/天 解锁文章
808

被折叠的 条评论
为什么被折叠?



