lxu*_*usr 9 linux linux-device-driver
当用户要求在Linux用户空间中使用命令时,可以显示我们的自定义硬件的一些统计信息.此实现目前使用PROC接口.我们开始添加更多的统计信息然后我们遇到了一个问题,其中特定的统计命令必须执行两次才能获得整个数据,因为PROC接口被限制为1页.
如上所述,内核和用户空间之间的数据传输并不重要,但根据数据,用户可能会做出一些决定.我们对这种接口设计的要求是它应该能够传输大于8192字节的数据量并且命令需要使用最少的内核资源(如锁等),并且它需要快速.
使用ioctl可以解决问题,但由于命令完全不是控制设备而是收集一些统计信息,因此不确定它是否是一个很好的机制,可以按照Linux使用.我们目前正在使用3.4内核; 不确定Netlink在这个版本中是否有损(以前的版本我遇到的问题就像队列变满,socket开始丢弃数据).mmap是另一种选择.任何人都可以建议我使用什么是最好的界面
您可以执行 ioctl IO 调用(而不是 IOR、IOW 或 IORW)。Ioctl 对于收集信息非常有用。通过这种方式,您将拥有很大的灵活性,因为您可以传递不同大小的缓冲区或结构来填充数据。