mmap на O_WRONLY отворен файл

НАКРАТКО: Не мога да намеря начин да mmap O_WRONLY отворения файл.

ДЪЛЪГ: Търся начин да запиша 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