Требование: ядро и пользовательское пространство используют огромную память через mmap. Пользовательское пространство является производителем, а ядро является потребителем.синхронизация ядра и пользовательского пространства на mmap-области
Я написал модуль ядра, который создает устройство и реализует системный вызов mmap и выделяет буфер ядра. Пользовательское пространство открывает устройство и вызывает mmap и что-то пишет. Ядро считывает поток через таймер каждые 5 секунд, и он отлично работает.
Проблема заключается в том, как синхронизировать эту область mmap'ed.
Solutions я думал:
1) После записи области MMAP, посылает пользовательское NETLINK уведомление, которое отмечает глобальный флаг говорят данные готовы и ядро готово читать прямо сейчас.
2) После записи в область mmap пользовательское пространство ioctl, которое отмечает глобальный флаг, говорит, что данные готовы, и ядро готово к чтению сейчас.
Есть ли лучшие подходы?