Краткая версия
Можно ли использовать семафор (или любую другую блокировку синхронизации) между пользовательским пространством и пространством ядра? Именованные семафоры POSIX имеют стойкость ядра, поэтому мне было интересно, можно ли создавать и/или получать доступ к ним из контекста ядра.
Поиск в Интернете не сильно помог из-за моря информации о нормальном использовании семафоров POSIX.
Длинная версия
Я разрабатываю унифицированный интерфейс для систем реального времени, в которых у меня есть некоторые дополнительные книги, которые нужно соблюдать, защищенные семафором, Эти учетные записи выполняются по распределению ресурсов и освобождению, которые выполняются в контексте, не относящемся к реальному времени.
В RTAI поток, ожидающий и отправляющий семафор, должен быть в режиме реального времени. Это означает, что использование RTAI семафора означает переключение между контекстом реального времени и не в реальном времени при каждом ожидании/сообщении в пользовательском пространстве и, что еще хуже, создание короткого потока в реальном времени для каждого сеанса sem/wait в пространстве ядра.
Я ищу способ поделиться обычным семафором Linux или POSIX между ядром и пользовательскими пространствами, чтобы я мог спокойно ждать/публиковать его в контексте, отличном от реального времени.
Любая информация по этому вопросу будет принята с благодарностью. Если это невозможно, есть ли у вас какие-либо другие идеи о том, как эта задача может быть выполнена? 1
1 Одним из способов было бы добавить системный вызов, иметь семафор в пространстве ядра и заставить процессы пространства пользователя вызывать этот системный вызов, и семафор будет управляться в пространстве ядра, Я был бы счастливее, если бы мне не пришлось исправлять ядро только из-за этого.