Где начать узнавать о Linux DMA / драйверы устройств / выделение памяти

Я портирую / отладка драйвера устройства (который используется другим модулем ядра), и направление с тупиком, потому что dma_sync_single_for_device () перестал работать с ядром ой.

У меня нет подсказки, что та функция, как предполагается, делает, и поиск с помощью Google действительно не помогает, таким образом, я, вероятно, должен узнать больше об этом материале всего.

Вопрос, где запустить?

О, да, в случае, если это релевантно, код, как предполагается, работает на PowerPC (и Linux является OpenWRT),

Править: Предпочтительные ресурсы онлайн (книги занимают несколько дней, которые будут поставлены :)

6
задан Kimvais 3 March 2010 в 08:10
поделиться

3 ответа

В сети:

Анатомия slab-распределителя Linux

Общие сведения о диспетчере виртуальной памяти Linux

Драйверы устройств Linux, третье издание

Руководство по программированию модуля ядра Linux

Написание драйверов устройств на Linux: Краткое руководство

Книги:

Разработка ядра Linux (2-е издание)

Основные драйверы устройств Linux (только первые 4–5 глав)

Полезные ресурсы:

Linux Перекрестная ссылка (Доступный для поиска исходный код ядра для всех ядер)

Изменения API в серии ядра 2.6


dma_sync_single_for_device вызовы dma_sync_single_range_for_cpu немного дальше в файле, и это источник документация (я предполагаю, что даже если это для руки, интерфейс и поведение одинаковы):

/**
 380 * dma_sync_single_range_for_cpu
 381 * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
 382 * @handle: DMA address of buffer
 383 * @offset: offset of region to start sync
 384 * @size: size of region to sync
 385 * @dir: DMA transfer direction (same as passed to dma_map_single)
 386 *
 387 * Make physical memory consistent for a single streaming mode DMA
 388 * translation after a transfer.
 389 *
 390 * If you perform a dma_map_single() but wish to interrogate the
 391 * buffer using the cpu, yet do not wish to teardown the PCI dma
 392 * mapping, you must call this function before doing so.  At the
 393 * next point you give the PCI dma address back to the card, you
 394 * must first the perform a dma_sync_for_device, and then the
 395 * device again owns the buffer.
 396 */
10
ответ дан 8 December 2019 в 12:58
поделиться
5
ответ дан 8 December 2019 в 12:58
поделиться

В главах книги Драйверы устройств Linux (из той же серии, что и «Общие сведения о ядре Linux», рекомендованной @Matthew Flaschen), возможно, быть полезным.

Вы можете загрузить отдельные главы с веб-сайта LWN . Глава 16 имеет дело с прямым доступом к памяти.

3
ответ дан 8 December 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: