每当用户要求在 Linux 用户空间中使用命令时,都会显示我们自定义硬件的一些统计信息。此实现目前使用 PROC 接口。我们开始添加更多统计信息,然后我们遇到了一个问题,其中特定的统计命令必须执行两次才能获取整个数据,因为 PROC 接口被限制为 1 页。
如上所述,内核和用户空间之间的数据传输并不重要,但根据数据,用户可能会做出一些决定。我们对这个接口设计的要求是它应该能够传输可能大于 8192 字节的数据量,并且命令需要使用最少的内核资源(如锁等),并且它需要快速。
使用 ioctl 可以解决这个问题,但是由于该命令并不是控制设备而是收集一些统计信息,因此不确定它是否是按照 Linux 使用的好机制。我们目前使用的是 3.4 内核;不确定 Netlink 在这个版本中是否有损(以前的版本我遇到过队列满时,socket 开始丢弃数据等问题)。mmap 是另一种选择。谁能建议我最好的界面是什么