You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.1 KiB
29 lines
1.1 KiB
Package "psx" provides an API for invoking system calls in a way that
|
|
each system call is mirrored on all OS threads of the combined Go/CGo
|
|
runtime. Since the Go runtime treats OS threads as interchangeable, a
|
|
feature like this is needed to meaningfully change process privilege
|
|
(including dropping privilege) in a Go program running on Linux. This
|
|
package is required by:
|
|
|
|
"kernel.org/pub/linux/libs/security/libcap/cap"
|
|
|
|
When compiled CGO_ENABLED=0, the functionality requires go1.16+ to
|
|
build. That release of Go introduced syscall.AllThreadsSyscall*()
|
|
APIs. When compiled this way, the "psx" package functions
|
|
psx.Syscall3() and psx.Syscall6() are aliased to
|
|
syscall.AllThreadsSyscall() and syscall.AllThreadsSyscall6()
|
|
respectively.
|
|
|
|
When compiled CGO_ENABLED=1, the functionality is implemented by C
|
|
code, [lib]psx, which is distributed with libcap.
|
|
|
|
The official release announcement site for libcap and libpsx is:
|
|
|
|
https://sites.google.com/site/fullycapable/
|
|
|
|
Like libcap/libpsx itself, the "psx" package is distributed with a
|
|
"you choose" License. Specifically: BSD three clause, or GPL2. See the
|
|
LICENSE file.
|
|
|
|
Andrew G. Morgan <morgan@kernel.org>
|