mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-03 15:47:35 -04:00
unix: add PidfdOpen and PidfdGetfd
Add wrappers for the pidfd_open and pidfd_getfd sycalls, available since 5.3. PIDFD_NONBLOCK is defined manually since mkerrors.sh doesn't handle including linux/pidfd.h well. See https://man7.org/linux/man-pages/man2/pidfd_open.2.html Change-Id: I68dfb52f6a7a44b7f3324a8379860a1bb765e71b Reviewed-on: https://go-review.googlesource.com/c/sys/+/347332 Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
committed by
Ian Lance Taylor
parent
aa78b53d33
commit
528a39cd75
@@ -3829,3 +3829,9 @@ type LandlockPathBeneathAttr C.struct_landlock_path_beneath_attr
|
|||||||
const (
|
const (
|
||||||
LANDLOCK_RULE_PATH_BENEATH = C.LANDLOCK_RULE_PATH_BENEATH
|
LANDLOCK_RULE_PATH_BENEATH = C.LANDLOCK_RULE_PATH_BENEATH
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// pidfd flags.
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = C.O_NONBLOCK
|
||||||
|
)
|
||||||
|
|||||||
@@ -2288,6 +2288,9 @@ type RemoteIovec struct {
|
|||||||
//sys ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_READV
|
//sys ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_READV
|
||||||
//sys ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_WRITEV
|
//sys ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_WRITEV
|
||||||
|
|
||||||
|
//sys PidfdOpen(pid int, flags int) (fd int, err error) = SYS_PIDFD_OPEN
|
||||||
|
//sys PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) = SYS_PIDFD_GETFD
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unimplemented
|
* Unimplemented
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1945,6 +1945,28 @@ func ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags u
|
|||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func PidfdOpen(pid int, flags int) (fd int, err error) {
|
||||||
|
r0, _, e1 := Syscall(SYS_PIDFD_OPEN, uintptr(pid), uintptr(flags), 0)
|
||||||
|
fd = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) {
|
||||||
|
r0, _, e1 := Syscall(SYS_PIDFD_GETFD, uintptr(pidfd), uintptr(targetfd), uintptr(flags))
|
||||||
|
fd = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func pipe2(p *[2]_C_int, flags int) (err error) {
|
func pipe2(p *[2]_C_int, flags int) (err error) {
|
||||||
_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
|
_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|||||||
@@ -635,3 +635,7 @@ const (
|
|||||||
PPS_GETCAP = 0x800470a3
|
PPS_GETCAP = 0x800470a3
|
||||||
PPS_FETCH = 0xc00470a4
|
PPS_FETCH = 0xc00470a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x800
|
||||||
|
)
|
||||||
|
|||||||
@@ -653,3 +653,7 @@ const (
|
|||||||
PPS_GETCAP = 0x800870a3
|
PPS_GETCAP = 0x800870a3
|
||||||
PPS_FETCH = 0xc00870a4
|
PPS_FETCH = 0xc00870a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x800
|
||||||
|
)
|
||||||
|
|||||||
@@ -630,3 +630,7 @@ const (
|
|||||||
PPS_GETCAP = 0x800470a3
|
PPS_GETCAP = 0x800470a3
|
||||||
PPS_FETCH = 0xc00470a4
|
PPS_FETCH = 0xc00470a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x800
|
||||||
|
)
|
||||||
|
|||||||
@@ -632,3 +632,7 @@ const (
|
|||||||
PPS_GETCAP = 0x800870a3
|
PPS_GETCAP = 0x800870a3
|
||||||
PPS_FETCH = 0xc00870a4
|
PPS_FETCH = 0xc00870a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x800
|
||||||
|
)
|
||||||
|
|||||||
@@ -636,3 +636,7 @@ const (
|
|||||||
PPS_GETCAP = 0x400470a3
|
PPS_GETCAP = 0x400470a3
|
||||||
PPS_FETCH = 0xc00470a4
|
PPS_FETCH = 0xc00470a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x80
|
||||||
|
)
|
||||||
|
|||||||
@@ -635,3 +635,7 @@ const (
|
|||||||
PPS_GETCAP = 0x400870a3
|
PPS_GETCAP = 0x400870a3
|
||||||
PPS_FETCH = 0xc00870a4
|
PPS_FETCH = 0xc00870a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x80
|
||||||
|
)
|
||||||
|
|||||||
@@ -635,3 +635,7 @@ const (
|
|||||||
PPS_GETCAP = 0x400870a3
|
PPS_GETCAP = 0x400870a3
|
||||||
PPS_FETCH = 0xc00870a4
|
PPS_FETCH = 0xc00870a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x80
|
||||||
|
)
|
||||||
|
|||||||
@@ -636,3 +636,7 @@ const (
|
|||||||
PPS_GETCAP = 0x400470a3
|
PPS_GETCAP = 0x400470a3
|
||||||
PPS_FETCH = 0xc00470a4
|
PPS_FETCH = 0xc00470a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x80
|
||||||
|
)
|
||||||
|
|||||||
@@ -642,3 +642,7 @@ const (
|
|||||||
PPS_GETCAP = 0x400470a3
|
PPS_GETCAP = 0x400470a3
|
||||||
PPS_FETCH = 0xc00470a4
|
PPS_FETCH = 0xc00470a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x800
|
||||||
|
)
|
||||||
|
|||||||
@@ -642,3 +642,7 @@ const (
|
|||||||
PPS_GETCAP = 0x400870a3
|
PPS_GETCAP = 0x400870a3
|
||||||
PPS_FETCH = 0xc00870a4
|
PPS_FETCH = 0xc00870a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x800
|
||||||
|
)
|
||||||
|
|||||||
@@ -642,3 +642,7 @@ const (
|
|||||||
PPS_GETCAP = 0x400870a3
|
PPS_GETCAP = 0x400870a3
|
||||||
PPS_FETCH = 0xc00870a4
|
PPS_FETCH = 0xc00870a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x800
|
||||||
|
)
|
||||||
|
|||||||
@@ -660,3 +660,7 @@ const (
|
|||||||
PPS_GETCAP = 0x800870a3
|
PPS_GETCAP = 0x800870a3
|
||||||
PPS_FETCH = 0xc00870a4
|
PPS_FETCH = 0xc00870a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x800
|
||||||
|
)
|
||||||
|
|||||||
@@ -656,3 +656,7 @@ const (
|
|||||||
PPS_GETCAP = 0x800870a3
|
PPS_GETCAP = 0x800870a3
|
||||||
PPS_FETCH = 0xc00870a4
|
PPS_FETCH = 0xc00870a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x800
|
||||||
|
)
|
||||||
|
|||||||
@@ -637,3 +637,7 @@ const (
|
|||||||
PPS_GETCAP = 0x400870a3
|
PPS_GETCAP = 0x400870a3
|
||||||
PPS_FETCH = 0xc00870a4
|
PPS_FETCH = 0xc00870a4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIDFD_NONBLOCK = 0x4000
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user