diff --git a/man2/getgroups.2 b/man2/getgroups.2 index 15a937c3a..1ef73e967 100644 --- a/man2/getgroups.2 +++ b/man2/getgroups.2 @@ -1,4 +1,5 @@ .\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu) +.\" and Copyright (C) 2008, 2010, 2015, Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this @@ -187,6 +188,21 @@ supporting 32-bit IDs. The glibc .BR getgroups () wrapper function transparently deals with the variation across kernel versions. +.\" +.SS C library/kernel ABI differences +At the kernel level, user IDs and group IDs are a per-thread attribute. +However, POSIX requires that all threads in a process +share the same credentials. +The NPTL threading implementation handles the POSIX requirements by +providing wrapper functions for +the various system calls that change process UIDs and GIDs. +These wrapper functions (including the one for +.BR setgroups ()) +employ a signal-based technique to ensure +that when one thread changes credentials, +all of the other threads in the process also change their credentials. +For details, see +.BR nptl (7). .SH SEE ALSO .BR getgid (2), .BR setgid (2),