sysfs attr
来源:互联网 发布:h5获取json数据实例 编辑:程序博客网 时间:2024/06/06 19:10
1. dev->kobj 下面创建属性
方法一:
static inline int __must_check sysfs_create_file(struct kobject *kobj, const struct attribute *attr)
方法二:
就是方法一的封装
int device_create_file(struct device *dev, const struct device_attribute *attr){ int error = 0; if (dev) { error = sysfs_create_file(&dev->kobj, &attr->attr); } return error;}
2. dev->kobj下面创建属性组
方法一:
int sysfs_create_files(struct kobject *kobj, const struct attribute **ptr){ int err = 0; int i; for (i = 0; ptr[i] && !err; i++) err = sysfs_create_file(kobj, ptr[i]); if (err) while (--i >= 0) sysfs_remove_file(kobj, ptr[i]); return err;}
方法二
int sysfs_create_group(struct kobject *kobj, const struct attribute_group *grp)
3.demo
static struct class *my_class = NULL;static dev_t my_devno;struct device *mysys_dev = NULL;static int my_flag=0;static ssize_t xxx_read(struct device *dev, struct device_attribute *attr, char *buf){ int ret = 0; sprintf(buf, "%d\n",my_flag); ret = strlen(buf) + 1; printk(" %s my_flag=%d\n",__func__,ret); return ret;}static ssize_t xxx_write(struct device *dev, struct device_attribute *attr, const char *buf, size_t size){ my_flag = simple_strtoul(buf, NULL, 10); return size;}static DEVICE_ATTR(xxx, 0664 , xxx_read, xxx_write);static int __init mycreat_sys_attr(void){ if( alloc_chrdev_region(&my_devno, 0, 1,"mysys") ) { return -EAGAIN; } my_class = class_create(THIS_MODULE, "mysys"); mysys_dev = device_create(my_class, NULL, my_devno, NULL, "mysys_dev"); if(NULL == mysys_dev) { return -EIO; } err = device_create_file(mysys_dev, &dev_attr_xxx);}module_init(mycreat_sys_attr)
阅读全文
0 0
- sysfs attr
- sysfs
- sysfs
- sysfs
- sysfs
- sysfs
- sysfs
- sysfs
- sysfs
- sysfs
- sysfs
- sysfs
- sysfs
- sysfs
- Sysfs
- sysfs
- sysfs
- sysfs
- Windows下Nginx的启动、停止等命令
- 延迟加载算法微服务的模型
- php去掉最后一个字符
- jquery前端递归打印出树状结构的多层复杂map或json键值对数据
- Unicode编码的emoji表情如何在前端页面展示(JS)
- sysfs attr
- Qt中的析构函数
- HNUST 1411 矩阵转置
- 深圳城市交通文明7月份测评指数为84.06分
- afdfd
- python 获取mac地址
- AndroidStudio编码设置
- 进程池与列表循环多参传递
- GreenPlum入门