Name Date Size #Lines LOC

..--

LicenseH A D25-Apr-202520 KiB399327

READMEH A D25-Apr-20251.1 KiB2921

doc.goH A D25-Apr-20252.6 KiB611

go.modH A D25-Apr-202562 42

psx.cH A D25-Apr-202521.6 KiB766454

psx.goH A D25-Apr-20251.2 KiB368

psx_cgo.goH A D25-Apr-20252.7 KiB9238

psx_cgo_test.goH A D25-Apr-20251 KiB4126

psx_syscall.hH A D25-Apr-20253.4 KiB9631

psx_test.goH A D25-Apr-20253.2 KiB126109

README

1Package "psx" provides an API for invoking system calls in a way that
2each system call is mirrored on all OS threads of the combined Go/CGo
3runtime. Since the Go runtime treats OS threads as interchangeable, a
4feature like this is needed to meaningfully change process privilege
5(including dropping privilege) in a Go program running on Linux. This
6package is required by:
7
8   "kernel.org/pub/linux/libs/security/libcap/cap"
9
10When compiled CGO_ENABLED=0, the functionality requires go1.16+ to
11build. That release of Go introduced syscall.AllThreadsSyscall*()
12APIs.  When compiled this way, the "psx" package functions
13psx.Syscall3() and psx.Syscall6() are aliased to
14syscall.AllThreadsSyscall() and syscall.AllThreadsSyscall6()
15respectively.
16
17When compiled CGO_ENABLED=1, the functionality is implemented by C
18code, [lib]psx, which is distributed with libcap.
19
20The official release announcement site for libcap and libpsx is:
21
22   https://sites.google.com/site/fullycapable/
23
24Like libcap/libpsx itself, the "psx" package is distributed with a
25"you choose" License. Specifically: BSD three clause, or GPL2. See the
26License file.
27
28Andrew G. Morgan <[email protected]>
29