DMA между буфером пользовательского пространства и отображенным в память файлом

memcpy через пользовательское пространство DMA: возможно ли достичь memcpy через пользовательское пространство DMA в linux? Я знаю, что есть способы скопировать буферы ядра в буфер пространства пользователя через DMA, но хотелось бы расширить это для memcpy через DMA в пространстве пользователя? Какие-нибудь мысли ?

0

Решение

DMA работает на физической памяти и отображаемых в памяти устройствах, тогда как большинство приложений пользовательского пространства работают на виртуальной памяти. Это представляет две проблемы:

  • Отображение виртуальной памяти в физическую память: вам нужно убедиться, что кэш очищен, выгружен, заблокирован, чтобы его нельзя было выгружать снова, и он вряд ли будет смежным — он будет разбросан по всей физической памяти маленьким ломти
  • Безопасность доступа к физической памяти: это дает приложениям пространства пользователя доступ ко всей физической памяти, отлично подходит для прослушивания паролей и криптографических ключей.

На современном процессоре memcpy (), вероятно, будет достаточно эффективным как в программном, так и в аппаратном обеспечении, пока вы не скопируете 10 мегабайт за раз, после чего вам все равно нужно тщательно продумать кеширование и виртуальную память. Короче, я бы не стал беспокоиться.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]