我可以在内核中使用protobufs吗?

时间:2011-05-05 21:44:43

标签: c linux-kernel driver protocol-buffers

我需要使用Linux设备驱动程序定义通信协议。 Protobufs看起来非常好,而且有active C port

是否可以在Linux设备驱动程序中使用protobufs? 显然,vanilla c代码不能正常工作,因为它会调用malloc等等。是否存在针对内核的protobufs实现?

如果解决方案有所下降,那么移植C库以在内核中使用需要付出多少努力?

奖金问题:使用Windows驱动程序编写时答案是否有明显不同?

1 个答案:

答案 0 :(得分:7)

从理论上讲,你可以做到这一点 - 但这样做真的没有任何意义。创建协议缓冲区是为了简化在不同机器和使用不同表示形式的二进制数据的语言之间传输数据的任务 - 但是内核驱动程序和用户空间之间的接口位于相同的机器上(通常是相同的) language - C语言库通常在用户空间一侧使用,即使用另一种语言编写应用程序代码也是如此。

这意味着不会出现不同的表示问题 - 您只需在头文件中定义struct并将其传递到内核/用户空间边界。