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);
最新文章
- Websocket通讯简析
- 稳定灵活的 HTML 列式布局
- 一些常用的SQL查询语句
- ASP.NET中处理异常的几种方式
- 利用ZABBIX的RPC-JSON作API扩展应用示例
- Memcached 集群的高可用(HA)架构
- DNS 域名系统 (Domain Name System)
- POJ 3061 Subsequence 尺取法 POJ 3320 Jessica's Reading Problem map+set+尺取法
- ubuntu不能联网的问题
- MySQL最基本的概念梳理
- C语言博客作业3--函数
- servlet 会话管理
- Android 提高 gradle 的编译速度
- linux下视频转gif
- (原)GAN之pix2pix
- Thymeleaf select 数据回显 选中
- Nginx下轻松开启Drupal简洁链接
- 两个java小练习
- FFmpeg再学习 -- FFmpeg+SDL+MFC实现图形界面视频播放器
- [Ubuntu Setup] Ubuntu 13.04 安装 ia32-libs
热门文章
- 用五种不同的布局方式实现“左右300px中间自适应”的效果
- oracle怎么捕获表上的DML语句(不包括select)语句)
- 阿里巴巴资深技术专家无相:我们能从 InteliJ IDEA 中学到什么?
- 洛谷P3455 [POI2007]ZAP-Queries (莫比乌斯反演)
- php7 新内容
- jQuery 图片跟着鼠标动
- 胡喜:从 BASIC 到 basic ,蚂蚁金服技术要解决两个基本的计算问题
- @codeforces - 1205B@ Shortest Cycle
- eBPF Tracing 入门教程与实例
- 关于RESTful一些注意事项,和自己整理的接口开发规范