Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | - | - | ||||
LICENSE | D | 23-Nov-2023 | 19.8 KiB | 386 | 319 | |
README | D | 23-Nov-2023 | 1.1 KiB | 29 | 21 | |
doc.go | D | 23-Nov-2023 | 2.6 KiB | 61 | 1 | |
go.mod | D | 23-Nov-2023 | 62 | 4 | 2 | |
psx.c | D | 23-Nov-2023 | 18.4 KiB | 641 | 354 | |
psx.go | D | 23-Nov-2023 | 318 | 16 | 8 | |
psx_cgo.go | D | 23-Nov-2023 | 2.1 KiB | 66 | 29 | |
psx_cgo_test.go | D | 23-Nov-2023 | 1 KiB | 41 | 26 | |
psx_syscall.h | D | 23-Nov-2023 | 2.8 KiB | 75 | 25 | |
psx_test.go | D | 23-Nov-2023 | 1.9 KiB | 69 | 57 |
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 <morgan@kernel.org> 29