.\" -*- coding: UTF-8 -*- .\" Copyright 2015, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH nptl 7 "8 lutego 2026 r." "Linux man\-pages 6.18" .SH NAZWA nptl \- natywna biblioteka wątków POSIX .SH OPIS .\" NPTL (Native POSIX Threads Library) jest implementacją wątków POSIX w bibliotece GNU C, która jest używana na współczesnych systemach linuksowych. .SS "NPTL i sygnały" NPTL korzysta wewnętrznie z dwóch pierwszych sygnałów czasu rzeczywistego (numery sygnałów 32 i 33). Jeden z nich służy do obsługi anulacji wątków i czasomierzy POSIX (zob. \fBtimer_create\fP(2)); drugi jest częścią mechanizmu zapewniającego, że wszystkie wątki procesu zawsze mają takie same UID\-y i GID\-y tak, jak wymaga tego POSIX. Sygnałów tych nie można stosować w aplikacjach. .P Aby uniknąć przypadkowego korzystania z opisanych sygnałów w aplikacjach, co mogłoby kłócić się z działaniem implementacji NPTL, różne funkcje biblioteczne glibc i funkcje opakowujące wywołania systemowe starają się ukryć te sygnały przed aplikacjami, a więc: .IP \[bu] 3 \fBSIGRTMIN\fP jest zdefiniowany z wartością 34 (zamiast 32). .IP \[bu] Interfejsy \fBsigwaitinfo\fP(2), \fBsigtimedwait\fP(2) i \fBsigwait\fP(3) po cichu ignorują żądania oczekiwania na te dwa sygnały, jeśli poda się je w zbiorze sygnałów, będącym argumentem tych wywołań. .IP \[bu] Interfejsy \fBsigprocmask\fP(2) i \fBpthread_sigmask\fP(3) po cichu ignorują próby blokowania tych dwóch sygnałów. .IP \[bu] Interfejsy \fBsigaction\fP(2), \fBpthread_kill\fP(3) i \fBpthread_sigqueue\fP(3) zawiodą z błędem \fBEINVAL\fP (wskazującym nieprawidłowy numer sygnału), jeśli poda się te sygnały. .IP \[bu] .\" \fBsigfillset\fP(3) nie obejmuje tych dwóch sygnałów, gdy tworzy pełny zbiór sygnałów. .SS "NPTL i zmiany poświadczeń procesu" Poświadczenia (identyfikatory użytkownika i grupy) na poziomie jądra Linux są atrybutem przynależnym wątkowi. Jednak POSIX wymaga, aby wszystkie wątki POSIX procesu miały te same poświadczenia. Aby uwzględnić to wymaganie, implementacja NPTL opakowuje wszystkie wywołania systemowe zmieniające poświadczenia procesu funkcją, która oprócz przywołania odpowiedniego wywołania systemowego, doprowadza do zmiany poświadczeń również przez inne wątki procesu. .P Implementacja każdego z tych wywołań systemowych obejmuje użycie sygnału czasu rzeczywistego, który jest wysyłany (za pomocą \fBtgkill\fP(2)) do każdego z innych wątków, który musi zmienić swoje poświadczenia. Przed wysłaniem tych sygnałów wątek zmieniający poświadczenia zapisuje nowe poświadczenia i odnotowuje wykorzystywane wywołanie systemowe w globalnym buforze. Procedura obsługi sygnału w odbierającym wątku/wątkach pobiera tę informację i używa tego samego wywołania systemowego do zmiany swoich poświadczeń. .P .\" FIXME . .\" Maybe say something about vfork() not being serialized wrt set*id() APIs? .\" https://sourceware.org/bugzilla/show_bug.cgi?id=14749 Funkcje opakowujące korzystające z tej techniki są dostarczane dla \fBsetgid\fP(2), \fBsetuid\fP(2), \fBsetegid\fP(2), \fBseteuid\fP(2), \fBsetregid\fP(2), \fBsetreuid\fP(2), \fBsetresgid\fP(2), \fBsetresuid\fP(2) i \fBsetgroups\fP(2). .SH STANDARDY Szczegóły na temat zgodności NPTL ze standardem POSIX opisano w podręczniku \fBpthreads\fP(7). .SH UWAGI .\" See POSIX.1-2008 specification of pthread_mutexattr_init() .\" See sysdeps/x86/bits/pthreadtypes.h POSIX nakazuje, aby każdy wątek każdego procesu z dostępem do pamięci, zawierający współdzielony na poziomie procesu (\fBPTHREAD_PROCESS_SHARED\fP) mutex, mógł działać na tym muteksie. Jednak na 64\-bitowych systemach x86, definicja muteksu dla x86\-64 jest niekompatybilna z definicją muteksu dla i386 co oznacza, że 32\-bitowe i 64\-bitowe pliki wykonywalne nie mogą dzielić muteksów na systemach x86\-64. .SH "ZOBACZ TAKŻE" \fBcredentials\fP(7), \fBpthreads\fP(7), \fBsignal\fP(7), \fBstandards\fP(7) .PP .SH TŁUMACZENIE Tłumaczenie niniejszej strony podręcznika: Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .