驱动class create
模版demo代码如下:
struct class *pSmClass = NULL; //设备类指针
//读取xxx节点
static ssize_t xxx_show(struct class *class, struct class_attribute *attr,
char *buf)
{
return 0;
}
//写入xxx节点
static ssize_t xxx_store(struct class *class, struct class_attribute *attr,
const char *buf, size_t count)
{
return count;
}
/**声明文件属性为rw**/
CLASS_ATTR_RW(xxx);
static int __init _sm_class_create(void)
{
int err;
/**创建一个class 对象**/
pSmClass = class_create(THIS_MODULE, "share_mem");
if(IS_ERR(pSmClass))
{
pr_err("class_create error..\n");
return -1;
}
/**创建class 文件节点,节点名为xxx**/
err = class_create_file(pSmClass, &class_attr_xxx);
if (err)
{
pr_err("class create file error\r\n");
goto CLASS_CREATE_FAIL;
}
return 0;
CLASS_CREATE_FAIL:
/**摧毁一个class文件节点**/
class_destroy(pSmClass);
return err;
}
说明:
使用步骤
- 通过struct class *定义一个class对象的全局变量指针
- 通过class_create() 创建一个class对象,并把全局变量指针指向该对象
- 通过CLASS_ATTR_RW(xxx) 定义一个文件名为"xxx"的文件节点变量
- 声明文件写入回调函数为xxx_store
- 声明文件读取回调函数为xxx_show
- 通过class_create_file() 为class对象创建对应的xxx文件节点