2014-11-03 3 views
1

Я porting lwIP для Android, и есть шаг, который говорит:Android NDK. Читайте/записать неровные адреса

Если ваш процессор не может читать/писать неровные адреса, то вам нужно указать ваш компилятор что данные могут быть не выровнены, и он должен генерировать несколько байтов или загружать/хранить слова для доступа к нему.

Теперь я задаюсь вопросом, как писать в заголовочном файле: «Если вы можете читать/писать на несогласованные адреса, ничего не делайте. В противном случае сделайте свою магию выравнивания».

ответ

1

Оказывается, что Linux обеспечивает портативные макросы для выполнения выровненным читать и писать, и они присутствуют в NDK включает в себя:

#include <asm/unaligned.h> 

put_unaligned() 
get_unaligned() 

Тем не менее, утилита пытается запустить LwIP на Android, кажется, немного под вопросом. Android работает на ядре Linux, которое включает в себя собственный сетевой стек. Он также обычно запрещает обычным (прикладным) пользовательским процессам выполнять необработанные сетевые операции. Один вид случая, когда я мог бы видеть это, может иметь смысл, если бы у вас был собственный пользовательский канал связи (сетевой адаптер USB или что-то в этом роде), который вы хотели полностью управлять в непривилегированном коде приложения и разговаривать по IP, без подключая его к ядру в качестве сетевого интерфейса.

+0

Я создаю приложение вроде этого: https://play.google.com/store/apps/details?id=app.greyshirts.firewall Эти ребята использовали lwIP для такой задачи (видео на русском языке) http://www.youtube.com/watch?v=pqMqfVlGyWM –

 Смежные вопросы

  • Нет связанных вопросов^_^