Linux 内核bin+attribute 结构二进制属性
sysfs 惯例调用所有属性来包含一个单个的人可读文本格式的值. 就是说, 只是偶然地很 少需要来创建能够处理大量二进制数据的属性. 这个需要真正地只出现在必须传递数据, 不可动地, 在用户空间和设备. 例如, 上载固件到设备需要这个特性. 当这样一个设备在 系统中遇到, 一个用户程序可以被启动( 通过热插拔机制); 这个程序接着传递固件代码 到内核通过一个二进制 sysfs 属性, 如同在"内核固件接口"一节中所示.
二进制属性使用一个 bin+attribute 结构来描述:
struct bin_attribute { struct attribute attr; size_t size;
ssize_t (*read)(struct kobject *kobj, char *buffer, loff_t pos, size_t size); ssize_t (*write)(struct kobject *kobj, char *buffer, loff_t pos, size_t size);
};
这里, attr 是一个属性结构, 给出名字, 拥有者, 和这个二进制属性的权限, 并且 size 是这个二进制属性的最大大小(或者 0 , 如果没有最大值). read 和 write 方法类似于 正常的字符驱动对应物; 它们一次加载可被多次调用, 每次调用最大一页数据. 对于
sysfs 没有办法来指示最后一个写操作, 因此实现二进制属性的代码必须能够以其他方式 决定数据的结束.
二进制属性必须明确创建; 它们不能建立为缺省属性. 为创建一个二进制属性, 调用: int sysfs_create_bin_file(struct kobject *kobj, struct bin_attribute *attr); 去除二进制属性可用:
int sysfs_remove_bin_file(struct kobject *kobj, struct bin_attribute *attr);
相关文章
- [转] linux 查找文本过滤grep正则表达式命令详解用法
- Linux后台运行和关闭jar项目
- centos linux忘记密码进行重置
- Linux有问必答:Linux上如何查看种子文件的内容
- linux多线程随机数,随机数SecureRandom在Linux下阻塞
- 用navicat访问linux数据库,成功实现Navicat访问Linux中安装的MySQL数据库
- Linux 内核总线属性
- Linux 内核kobject非 缺省属性
- Linux系统性能调优之性能分析
- Linux设备树(三 属性)
- 【正点原子Linux连载】第六章 Qt Creator的使用技巧 摘自【正点原子】I.MX6U嵌入式Qt开发指南V1.0.2
- 【Linux】linux经常使用基本命令
- Linux学习笔记(24)linux发邮件 mailx发邮件
- linux sendmail 邮件服务器架设