Provided by: manpages-pl_4.28.0-2_all bug

NAZWA

       nptl - natywna biblioteka wątków POSIX

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.

   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. timer_create(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.

       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:

       •  SIGRTMIN jest zdefiniowany z wartością 34 (zamiast 32).

       •  Interfejsy sigwaitinfo(2), sigtimedwait(2) i sigwait(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ń.

       •  Interfejsy sigprocmask(2) i pthread_sigmask(3) po cichu ignorują próby blokowania tych dwóch sygnałów.

       •  Interfejsy  sigaction(2),  pthread_kill(3)  i pthread_sigqueue(3) zawiodą z błędem EINVAL (wskazującym
          nieprawidłowy numer sygnału), jeśli poda się te sygnały.

       •  sigfillset(3) nie obejmuje tych dwóch sygnałów, gdy tworzy pełny zbiór sygnałów.

   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.

       Implementacja każdego z tych wywołań systemowych obejmuje użycie sygnału czasu rzeczywistego, który  jest
       wysyłany  (za pomocą tgkill(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ń.

       Funkcje  opakowujące  korzystające  z  tej  techniki są dostarczane dla setgid(2), setuid(2), setegid(2),
       seteuid(2), setregid(2), setreuid(2), setresgid(2), setresuid(2) i setgroups(2).

STANDARDY

       Szczegóły na temat zgodności NPTL ze standardem POSIX opisano w podręczniku pthreads(7).

UWAGI

       POSIX nakazuje, aby każdy wątek każdego procesu z  dostępem  do  pamięci,  zawierający  współdzielony  na
       poziomie  procesu  (PTHREAD_PROCESS_SHARED)  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.

ZOBACZ TAKŻE

       credentials(7), pthreads(7), signal(7), standards(7)

TŁUMACZENIE

       Tłumaczenie niniejszej strony podręcznika: Michał Kułach <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając   się   z   GNU General Public License w wersji 3   lub  nowszej.  Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  manpages-pl-
       list@lists.sourceforge.net.

Linux man-pages 6.9.1                            2 maja 2024 r.                                          nptl(7)