Информация об изменениях

Сообщение Как узнать адрес физической памяти, передаваемой DMA? от 25.03.2016 13:17

Изменено 25.03.2016 13:20 IgorVlasov

Есть контроллер SATA, работающий в режиме IDE.
Нашёл способ трансляции виртуального адреса памяти в физический из-под юзермода.

Если я пишу/читаю на диск функциями write()/read(), то для того, чтобы узнать физический адрес памяти, по которому пишет/читает контроллер DMA, достаточно преобразовать виртуальный адрес памяти, переданный функциям write()/read(), в физический?

Или Linux копирует память для DMA контроллера в другое место(может сперва копирует в какой-нибудь кэш или буфер отскока и т.п.)?
Как узнать адрес физической памяти, передаваемой DMA?
Есть контроллер SATA, работающий в режиме IDE.
Нашёл способ трансляции виртуального адреса памяти в физический из-под юзермода.

Если я пишу/читаю на диск функциями write()/read(), то для того, чтобы узнать физический адрес памяти, который будет передан контроллеру DMA, достаточно преобразовать виртуальный адрес памяти, переданный функциям write()/read(), в физический?

Или Linux копирует память для DMA контроллера в другое место(может сперва копирует в какой-нибудь кэш или буфер отскока и т.п.)?