Jef*_*ffV 7 c api embedded buffer
我正在为一个小型嵌入式系统(多点,rs485类型的东西)开发一个简单的协议栈.在这个堆栈中,在OSI层之后丢失模型:
每个图层都有自己的页眉/页脚部分,用于包裹图层上方的有效负载.
我将使用自己的静态缓冲池静态分配固定大小的块来存储二进制数据包.(此应用程序中没有malloc /免费.)
在其他API中,我已经看到数据通常作为具有相关长度的const指针传递.以这种方式,数据将需要在每层的复制操作,因为上面层的有效载荷被放置在当前层的新分配的缓冲区中.
对于三层堆栈,这将是2个复制操作和3个分配的缓冲区.
有没有更好的方法来做到这一点,仍然保持协议层的清晰分离?
为了更好地锚定讨论,我们可以说数据包通常大约为2k,处理器是8Mhz的小型8位微处理器.
您可以通过让每个层从下一个较低层请求一个空缓冲区而不是分配一个自身来避免副本:
buffer + phdr_len到数据链路层.buffer + phdr_len + dhdr_len网络层.buffer + phdr_len + dhdr_len + nhdr_len到应用层.