Relay是Linux系统内核程序向用户空间快速且高效传输大量数据的一种机制。Relay文件系统也是Linux系统中的一种重要的文件系统。其中,channel是Relay文件系统最重要的概念。在Relay文件系统中,每一个CPU有一个对应的Channel,而每个Channel则由一组内核缓存组成。内核使用Relay提供的写函数把需要传输给用户空间的数据快速地写入当前CPU对应的Channel内核缓存中,而用户空间则可以通过标准的文件I/O函数从channel所处的用户空间文件中读取出来。
在多种内核与用户空间通信的方式中,Relay特别适用于内核空间有大量数据需要传输到用户空间的情形。因此,本人尝试翻译Relay的内核文档,以便增强自己的记忆和理解。但是,翻译了几段之后,发现自己文笔太烂,读之索然无味,无奈放弃。重读英文的文档,依旧感觉,原汁原味那才叫酸爽。
所以,给出Relay的原有英文文档,各位读者自行阅读,定有收获。
https://www.kernel.org/doc/Documentation/filesystems/relay.txt
http://relayfs.sourceforge.net/
代码范例:
使用debugfs系统做一个简单的例子。在debugfs文件系统下创建relay_test_dir目录,并往里面写入10次 cnt = %d\n。