2014-11-03 53 views
1

porting lwIP爲Android,並有其說,一個步:Android NDK。讀/寫錯位地址

如果您的處理器無法讀取/寫入未對齊的地址,然後 你需要告訴你的編譯器數據可能沒有對齊,並且它必須生成多個字節或字加載/存儲才能訪問它。

現在我不知道如何在頭文件中寫道,「如果你可以從讀/寫錯位地址,不要做任何事情,否則,做你的定位法寶」。

回答

1

事實證明,Linux提供了便攜宏做不對齊的讀,寫,這些都是存在於NDK包括:

#include <asm/unaligned.h> 

put_unaligned() 
get_unaligned() 

這就是說,試圖在Android上運行lwIP的效用似乎有點可疑的。 Android運行在Linux內核之上,其中包括自己的網絡堆棧。它通常也會禁止典型的(應用)用戶進程執行原始網絡操作。一種情況下,我可以看到這可能是有道理的,如果你有你自己的自定義通信通道(USB網絡適配器或類似的東西),你想完全在非特權應用程序代碼管理和通話IP,沒有將其作爲網絡接口插入內核。

+0

我在創建一個這樣的應用程序:https://play.google.com/store/apps/details?id=app.greyshirts.firewall這些人使用lwIP來完成這樣的任務(視頻是俄語)http://www.youtube.com/watch?v=pqMqfVlGyWM – 2014-11-03 18:01:49