ioctl vs netlink vs memmap在内核空间和用户空间之间进行通信

当用户要求在Linux用户空间使用命令时,获得我们定制硬件的一些统计信息。 这个实现目前使用PROC接口。 我们开始添加更多的统计信息,然后我们遇到了一个问题,其中特定的统计命令必须执行两次才能获取整个数据,因为PROC界面被限制为1页。

如上所述,内核和用户空间之间的数据传输并不重要,但根据数据,用户可能会做出一些决定。 我们对这个接口devise的要求是它应该能够传输8192字节以上的数据量,而且这个命令需要使用最less的内核资源(如锁等),而且需要很快。

使用ioctl可以解决这个问题,但是由于命令完全不是在控制设备,而是为了收集一些统计信息,所以不能确定它是否是一个很好的Linux机制。 我们目前使用3.4内核; 不知道Netlink在这个版本中是否有损(以前的版本,我遇到的问题,如队列变满时,套接字开始丢弃数据)。 mmap是另一种select。 任何人都可以build议我什么是最好的接口使用

Solutions Collecting From Web of "ioctl vs netlink vs memmap在内核空间和用户空间之间进行通信"