g.r*_*ket 4 linux linux-device-driver linux-kernel android-kernel
我正在创建一个创建角色设备的linux设备驱动程序.它在读取时返回的数据在逻辑上分为16个字节的单位.
我计划通过返回许多适合读缓冲区的单元来实现这个除法,但是我不知道如果读缓冲区太小(<16字节)该怎么办.
我该怎么办?或者,有没有更好的方法来实现我想要代表的分工?
您可以像数据报套接字设备驱动程序一样:它始终只返回一个数据报.如果读取缓冲区较小,则丢弃超出部分 - 调用者有责任为整个数据报提供足够的空间(通常,应用程序协议指定最大数据报大小).
您的设备文档应指定它以16字节为单位工作,因此调用者没有理由要提供小于此的缓冲区.因此,由于上述丢弃而导致的任何丢失数据都可能被视为调用应用程序中的错误.
但是,如果调用者要求它一次返回超过16个也是合理的 - 这表明应用程序将其分解为单元本身.这可能会提高性能,因为它可以最大限度地减少系统调用.但如果缓冲区不是16的倍数,则可以丢弃最后一个单元的剩余部分.只要确保这是记录在案的,所以他们知道要使它成为一个倍数.
如果您担心类似的通用应用程序cat,我认为您不需要.我希望他们使用非常大的输入缓冲区,仅仅是出于性能原因.
| 归档时间: |
|
| 查看次数: |
339 次 |
| 最近记录: |