mmap открытого файла O_WRONLY

КРАТКОЕ ОПИСАНИЕ: я не могу найти способ mmap открыть O_WRONLY файл.

LONG: Я ищу способ записать DMA (режим s/g) предоставленные данные на раздел диска (!) как можно быстрее, избегая буферизации ядра. O_DIRECT не работает и Линус запрещает его использовать.
Для этого я mmap устанавливаю каждый DMA буфер с MAP_FIXED и соответствующим смещением в файле. Но если файл открывается как O_RDWR, это заставляет ядро ​​конкурировать с DMA при заполнении входной RAM данными файла. В большинстве случаев выигрывает ядро...:)
Итак, мне нужно объяснить ядру, что оно не должно трогать мои страницы, а просто записывать их в маппируемый файл, когда я вызываю msync(). Как?


person leonp    schedule 27.12.2014    source источник
comment
Какую комбинацию флагов вы используете для mmap?   -  person lonewasp    schedule 27.12.2014
comment
@lonewasp Я много пробовал. Но наиболее логичным для меня выглядит: mmap(TBuf, TSIZE, PROT_WRITE, MAP_FIXED|MAP_SHARED, fdo, offs) На самом деле любой рабочий будет ОК... :)   -  person leonp    schedule 27.12.2014