安卓NDK。读取/写入未对齐的地址

标签 android porting lwip

我是 porting lwIP对于 Android,有一个步骤说:

If your processor cannot read from/write to misaligned addresses, then you need to tell your compiler that the data may be not aligned and it must generate multiple byte or word load/stores to access it.

现在我想知道如何在头文件中写入,“如果您可以读取/写入未对齐的地址,请不要执行任何操作。否则,请执行您的对齐魔术。”

最佳答案

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

#include <asm/unaligned.h>

 put_unaligned()
 get_unaligned()

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

关于安卓NDK。读取/写入未对齐的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26714610/

相关文章:

c - 如何使用 LWIP 和 FreeRTOS 让多播在 stm32f7 上工作

c++ - STM32 LWIP PPPos 实现

gcc - 如何将lwIP原始源代码包含到我的项目中?

android - 如何将 mapbox 语言更改为波斯语/波斯语

android - 从软键盘 android xamarin 禁用表情符号

wicket - wicket 1.5 中 IVisitor.CONTINUE TRAVERSAL 的等价物是什么

windows - AF_UNIX 等效于 Windows

java - 将对象引用传递给 Intent

java - react-native-admob 中的错误,有人可以帮助我吗?

c++ - 构建遗留 Turbo C++ 代码