我必须每秒从Linux内核模块向用户空间传输数兆字节的数据,并且我不希望错过来自模块的任何消息if我从中读取。 这样做的最好方法是什么?将大数据从内核传输到用户空间的最佳方式
这里有很多可能的解决方案:命名管道,proc文件和块设备 但我不确定哪一个可以选择,哪一个承诺最好的性能,因为我是一个内核新手。
目前我在内核模块中使用Ring-Buffer(带有自旋锁)来存储消息,并且如果正在读取Proc文件,我将来自Ring-Buffer的数据放到Proc文件中; 在用户端我有一个程序重复运行cat /proc/procfile
并显示输出。这种解决方案的问题是,而不是让
消息1 消息2 消息3
的输出,我看(有时,一次几千元的消息)
MESSAGE 1 MESSMESSAGE3