加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux字符设备 – 如果读取缓冲区太小,该怎么办?

发布时间:2020-12-14 00:43:18 所属栏目:Linux 来源:网络整理
导读:我正在创建一个创建角色设备的 linux设备驱动程序. 它在读取时返回的数据在逻辑上分为16个字节的单位. 我计划通过返回许多单位适合读缓冲区来实现这个除法,但是我不知道如果读缓冲区太小(16字节)该怎么办. 我该怎么办?或者,有没有更好的方法来实现我想要代
我正在创建一个创建角色设备的 linux设备驱动程序.
它在读取时返回的数据在逻辑上分为16个字节的单位.

我计划通过返回许多单位适合读缓冲区来实现这个除法,但是我不知道如果读缓冲区太小(<16字节)该怎么办. 我该怎么办?或者,有没有更好的方法来实现我想要代表的分工?

解决方法

您可以像数据报套接字设备驱动程序一样:它始终只返回一个数据报.如果读取缓冲区较小,则丢弃超出部分 – 调用者有责任为整个数据报提供足够的空间(通常,应用程序协议指定最大数据报大小).

您的设备文档应指定它以16字节为单位工作,因此调用者没有理由想要提供小于此的缓冲区.因此,由于上述丢弃而导致的任何丢失数据都可能被视为调用应用程序中的错误.

但是,如果调用者要求它一次返回超过16个也是合理的 – 这表明应用程序将其分解为单元本身.这可能会提高性能,因为它可以最大限度地减少系统调用.但如果缓冲区不是16的倍数,则可以丢弃最后一个单元的剩余部分.只要确保这是记录在案的,所以他们知道要使它成为一个倍数.

如果您担心像猫这样的通用应用程序,我认为您不需要.我希望他们使用非常大的输入缓冲区,仅仅是出于性能原因.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读