1

我正在为 Android移植 lwIP,并且有一个步骤说:

如果您的处理器无法读取/写入未对齐的地址,那么您需要告诉编译器数据可能未对齐,并且它必须生成多个字节或字加载/存储才能访问它。

现在我想知道如何在头文件中写入,“如果您可以读取/写入未对齐的地址,请不要做任何事情。否则,请使用对齐魔法。”

4

1 回答 1

1

事实证明,Linux 提供了用于进行非对齐读写的可移植宏,这些宏存在于 NDK 中,包括:

#include <asm/unaligned.h>

 put_unaligned()
 get_unaligned()

也就是说,尝试在 Android 上运行 lwIP 的实用性似乎有点可疑。Android 运行在 Linux 内核之上,其中包括自己的网络堆栈。它通常还会禁止典型(应用程序)用户进程进行原始网络操作。我可以看到这可能有意义的一种情况是,如果您有自己的自定义通信通道(USB 网络适配器或类似的东西),您希望完全在非特权应用程序代码中进行管理并通过 IP 进行通信,而无需插入它作为网络接口进入内核。

于 2014-11-03T17:57:34.933 回答