Wspólny semafor między przestrzeniami użytkownika i przestrzeni jądra

Krótka wersja

Czy jest możliwe udostępnienie semafora (lub jakiejkolwiek innej blokady synchronizacji) między przestrzenią użytkownika a przestrzenią jądra?Nazwane semafory POSIX mają trwałość jądradlatego zastanawiałem się, czy możliwe jest również tworzenie i / lub uzyskiwanie do nich dostępu z kontekstu jądra.

Przeszukiwanie Internetu nie pomogło zbytnio z powodu morza informacji o normalnym korzystaniu z semaforów POSIX.

Długa wersja

Rozwijam azunifikowany interfejs do systemów czasu rzeczywistego w którym mam dodaną księgowość do opieki, chronioną przez semafor. Te zapisy księgowe są dokonywane na alokacji zasobów i zwalnianiu zasobów, co odbywa się w kontekście nie w czasie rzeczywistym.

W przypadku RTAI wątek oczekujący i wysyłanie semafora musi jednak znajdować się w kontekście czasu rzeczywistego. Oznacza to, że używanie nazwanego semafora RTAI oznacza przełączanie się między kontekstem czasu rzeczywistego i nie w czasie rzeczywistym na każdym czekaniu / postie w przestrzeni użytkownika, a co gorsze, tworzenie krótkiego wątku w czasie rzeczywistym dla każdego sem / wait w przestrzeni jądra.

To, czego szukam, to sposób na udostępnienie normalnego semafora systemu Linux lub POSIX między przestrzeniami jądra i przestrzeni użytkownika, dzięki czemu mogę bezpiecznie czekać / opublikować go w kontekście innym niż rzeczywisty.

Wszelkie informacje na ten temat byłyby bardzo mile widziane. Jeśli nie jest to możliwe, czy masz jakieś inne pomysły na realizację tego zadania?1

1 Jednym ze sposobów byłoby dodanie wywołania systemowego, posiadanie semafora w przestrzeni jądra i wywoływanie procesów przestrzeni użytkownika przez wywołanie systemowe, a semafor byłby zarządzany w przestrzeni jądra. Byłbym szczęśliwszy, gdybym nie musiał łatać jądra z tego powodu.

questionAnswers(7)

yourAnswerToTheQuestion