xref: /aosp_15_r20/external/libcap/go/psx-fd.go (revision 2810ac1b38eead2603277920c78344c84ddf3aff)
1package main
2
3import (
4	"log"
5	"os"
6	"syscall"
7	"time"
8
9	"kernel.org/pub/linux/libs/security/libcap/psx"
10)
11
12const prSetKeepCaps = 8
13
14func main() {
15	r, w, err := os.Pipe()
16	if err != nil {
17		log.Fatalf("failed to obtain pipe: %v", err)
18	}
19	data := make([]byte, 2+r.Fd())
20	go r.Read(data)
21	time.Sleep(500 * time.Millisecond)
22	psx.Syscall3(syscall.SYS_PRCTL, prSetKeepCaps, 1, 0)
23	w.Close()
24	r.Close()
25}
26