nptl(7) Miscellaneous Information Manual nptl(7) NAZWA nptl - natywna biblioteka watkow POSIX OPIS NPTL (Native POSIX Threads Library) jest implementacja watkow POSIX w bibliotece GNU C, ktora jest uzywana na wspolczesnych systemach linuksowych. NPTL i sygnaly NPTL korzysta wewnetrznie z dwoch pierwszych sygnalow czasu rzeczywistego (numery sygnalow 32 i 33). Jeden z nich sluzy do obslugi anulacji watkow i czasomierzy POSIX (zob. timer_create(2)); drugi jest czescia mechanizmu zapewniajacego, ze wszystkie watki procesu zawsze maja takie same UID-y i GID-y tak, jak wymaga tego POSIX. Sygnalow tych nie mozna stosowac w aplikacjach. Aby uniknac przypadkowego korzystania z opisanych sygnalow w aplikacjach, co mogloby klocic sie z dzialaniem implementacji NPTL, rozne funkcje biblioteczne glibc i funkcje opakowujace wywolania systemowe staraja sie ukryc te sygnaly przed aplikacjami, a wiec: o SIGRTMIN jest zdefiniowany z wartoscia 34 (zamiast 32). o Interfejsy sigwaitinfo(2), sigtimedwait(2) i sigwait(3) po cichu ignoruja zadania oczekiwania na te dwa sygnaly, jesli poda sie je w zbiorze sygnalow, bedacym argumentem tych wywolan. o Interfejsy sigprocmask(2) i pthread_sigmask(3) po cichu ignoruja proby blokowania tych dwoch sygnalow. o Interfejsy sigaction(2), pthread_kill(3) i pthread_sigqueue(3) zawioda z bledem EINVAL (wskazujacym nieprawidlowy numer sygnalu), jesli poda sie te sygnaly. o sigfillset(3) nie obejmuje tych dwoch sygnalow, gdy tworzy pelny zbior sygnalow. NPTL i zmiany poswiadczen procesu Poswiadczenia (identyfikatory uzytkownika i grupy) na poziomie jadra Linux sa atrybutem przynaleznym watkowi. Jednak POSIX wymaga, aby wszystkie watki POSIX procesu mialy te same poswiadczenia. Aby uwzglednic to wymaganie, implementacja NPTL opakowuje wszystkie wywolania systemowe zmieniajace poswiadczenia procesu funkcja, ktora oprocz przywolania odpowiedniego wywolania systemowego, doprowadza do zmiany poswiadczen rowniez przez inne watki procesu. Implementacja kazdego z tych wywolan systemowych obejmuje uzycie sygnalu czasu rzeczywistego, ktory jest wysylany (za pomoca tgkill(2)) do kazdego z innych watkow, ktory musi zmienic swoje poswiadczenia. Przed wyslaniem tych sygnalow watek zmieniajacy poswiadczenia zapisuje nowe poswiadczenia i odnotowuje wykorzystywane wywolanie systemowe w globalnym buforze. Procedura obslugi sygnalu w odbierajacym watku/watkach pobiera te informacje i uzywa tego samego wywolania systemowego do zmiany swoich poswiadczen. Funkcje opakowujace korzystajace z tej techniki sa dostarczane dla setgid(2), setuid(2), setegid(2), seteuid(2), setregid(2), setreuid(2), setresgid(2), setresuid(2) i setgroups(2). STANDARDY Szczegoly na temat zgodnosci NPTL ze standardem POSIX opisano w podreczniku pthreads(7). UWAGI POSIX nakazuje, aby kazdy watek kazdego procesu z dostepem do pamieci, zawierajacy wspoldzielony na poziomie procesu (PTHREAD_PROCESS_SHARED) mutex, mogl dzialac na tym muteksie. Jednak na 64-bitowych systemach x86, definicja muteksu dla x86-64 jest niekompatybilna z definicja muteksu dla i386 co oznacza, ze 32-bitowe i 64-bitowe pliki wykonywalne nie moga dzielic muteksow na systemach x86-64. ZOBACZ TAKZE credentials(7), pthreads(7), signal(7), standards(7) TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.18 8 lutego 2026 r. nptl(7)