为了处理数据,函数需要一个指向数据缓冲区的指针。
fooFunction(..., uint8_t *buffer, ...)
我面临的问题是,缓冲区的数据部分位于较小的缓冲区中,该缓冲区是BSS部分的一部分,其余的(大多数数据)可通过内存映射访问(来自外部设备) CPU地址范围。由于我想避免将数据复制到缓冲区(资源有限),我想知道是否有办法以某种方式对齐内存区域,以确保两个缓冲区(本地缓冲区和内存映射的数据) )彼此相邻对齐,这样我就可以简单地将指针传递给函数缓冲区。
为了更清楚地说明这个缓冲区现在如何与内存对齐:
---------------- ---------------
| local buffer | ... somewhere else in memory... | data buffer |
---------------- ---------------
^
|
Pointer for fooFunction
这是函数缓冲区的样子:
------------------------------
| local buffer | data buffer |
------------------------------
^
|
Pointer for fooFunction