.\" -*- coding: UTF-8 -*-
.\" Copyright (c) 2015 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH nptl 7 "2 maja 2024 r." "Linux man\-pages 6.9.1" 
.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 <michal.kulach@gmail.com>
.
.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 .
