关于使用这些函数,我有两个问题。我不完全理解编写的这里文档
sysfs分配一个大小缓冲区(PAGE_SIZE)并将其传递给该方法。Sysfs将为每次读或写精确调用一次该方法。这在方法实现上强制执行以下行为:
首先,当我用read/write读取/写入sysfs属性文件时,是否可以保证我读取到的/ store函数中的缓冲区将拥有我想要在该函数中读取的所有字节,而不是以几个块的形式调用它?
另外,空字符是如何添加的?也就是说,假设我编写了n个字节,函数参数中的写字节数是否为n,空字符将放置在n+1?
谢谢
发布于 2018-11-22 22:24:06
第一个问题的答案是是的-部分写不支持,缓冲区总是在一个调用的显示方法。
第二个问题的答案也是肯定的。请参见由sysfs使用的实现kernfs_fop_write() -它将分配到PAGE_SIZE+1字节,以便有足够的空间容纳\0。
发布于 2021-04-06 21:27:06
它分配PAGE_SIZE,如果>= PAGE_SIZE被写入,它会用'\0'截断到PAGE_SIZE,并记录一个错误。如果编写了> PAGE_SIZE,可能会损坏内核内存。
为了进行保护,您应该使用额外的sysfs_emit和sysfs_emit_at来写入缓冲区。见文档。
https://stackoverflow.com/questions/53415524
复制相似问题