func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {
	return linux.PerfEventOpen(attr, pid, cpu, groupFd, flags)
}
PerfEventOpen is a wrapper
package unix
import (
	"bytes"
	"syscall"
	linux "golang.org/x/sys/unix"
)
const (
	ENOENT  = linux.ENOENT
	EEXIST  = linux.EEXIST
	EAGAIN  = linux.EAGAIN
	ENOSPC  = linux.ENOSPC
	EINVAL  = linux.EINVAL
	EPOLLIN = linux.EPOLLIN
	EINTR   = linux.EINTR
	EPERM   = linux.EPERM
	ESRCH   = linux.ESRCH
	ENODEV  = linux.ENODEV
	ENOTSUPP = syscall.Errno(0x20c)
	EBADF                    = linux.EBADF
	BPF_F_NO_PREALLOC        = linux.BPF_F_NO_PREALLOC
	BPF_F_NUMA_NODE          = linux.BPF_F_NUMA_NODE
	BPF_F_RDONLY             = linux.BPF_F_RDONLY
	BPF_F_WRONLY             = linux.BPF_F_WRONLY
	BPF_F_RDONLY_PROG        = linux.BPF_F_RDONLY_PROG
	BPF_F_WRONLY_PROG        = linux.BPF_F_WRONLY_PROG
	BPF_F_SLEEPABLE          = linux.BPF_F_SLEEPABLE
	BPF_F_MMAPABLE           = linux.BPF_F_MMAPABLE
	BPF_F_INNER_MAP          = linux.BPF_F_INNER_MAP
	BPF_OBJ_NAME_LEN         = linux.BPF_OBJ_NAME_LEN
	BPF_TAG_SIZE             = linux.BPF_TAG_SIZE
	SYS_BPF                  = linux.SYS_BPF
	F_DUPFD_CLOEXEC          = linux.F_DUPFD_CLOEXEC
	EPOLL_CTL_ADD            = linux.EPOLL_CTL_ADD
	EPOLL_CLOEXEC            = linux.EPOLL_CLOEXEC
	O_CLOEXEC                = linux.O_CLOEXEC
	O_NONBLOCK               = linux.O_NONBLOCK
	PROT_READ                = linux.PROT_READ
	PROT_WRITE               = linux.PROT_WRITE
	MAP_SHARED               = linux.MAP_SHARED
	PERF_ATTR_SIZE_VER1      = linux.PERF_ATTR_SIZE_VER1
	PERF_TYPE_SOFTWARE       = linux.PERF_TYPE_SOFTWARE
	PERF_TYPE_TRACEPOINT     = linux.PERF_TYPE_TRACEPOINT
	PERF_COUNT_SW_BPF_OUTPUT = linux.PERF_COUNT_SW_BPF_OUTPUT
	PERF_EVENT_IOC_DISABLE   = linux.PERF_EVENT_IOC_DISABLE
	PERF_EVENT_IOC_ENABLE    = linux.PERF_EVENT_IOC_ENABLE
	PERF_EVENT_IOC_SET_BPF   = linux.PERF_EVENT_IOC_SET_BPF
	PerfBitWatermark         = linux.PerfBitWatermark
	PERF_SAMPLE_RAW          = linux.PERF_SAMPLE_RAW
	PERF_FLAG_FD_CLOEXEC     = linux.PERF_FLAG_FD_CLOEXEC
	RLIM_INFINITY            = linux.RLIM_INFINITY
	RLIMIT_MEMLOCK           = linux.RLIMIT_MEMLOCK
	BPF_STATS_RUN_TIME       = linux.BPF_STATS_RUN_TIME
	PERF_RECORD_LOST         = linux.PERF_RECORD_LOST
	PERF_RECORD_SAMPLE       = linux.PERF_RECORD_SAMPLE
	AT_FDCWD                 = linux.AT_FDCWD
	RENAME_NOREPLACE         = linux.RENAME_NOREPLACE
)
type Statfs_t = linux.Statfs_t
type Rlimit = linux.Rlimit
func Setrlimit(resource int, rlim *Rlimit) (err error) {
	return linux.Setrlimit(resource, rlim)
}
func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
	return linux.Syscall(trap, a1, a2, a3)
}
func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
	return linux.FcntlInt(fd, cmd, arg)
}
func IoctlSetInt(fd int, req uint, value int) error {
	return linux.IoctlSetInt(fd, req, value)
}
func Statfs(path string, buf *Statfs_t) (err error) {
	return linux.Statfs(path, buf)
}
func Close(fd int) (err error) {
	return linux.Close(fd)
}
type EpollEvent = linux.EpollEvent
func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
	return linux.EpollWait(epfd, events, msec)
}
func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
	return linux.EpollCtl(epfd, op, fd, event)
}
func Eventfd(initval uint, flags int) (fd int, err error) {
	return linux.Eventfd(initval, flags)
}
func Write(fd int, p []byte) (n int, err error) {
	return linux.Write(fd, p)
}
func EpollCreate1(flag int) (fd int, err error) {
	return linux.EpollCreate1(flag)
}
type PerfEventMmapPage linux.PerfEventMmapPage
func SetNonblock(fd int, nonblocking bool) (err error) {
	return linux.SetNonblock(fd, nonblocking)
}
func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
	return linux.Mmap(fd, offset, length, prot, flags)
}
func Munmap(b []byte) (err error) {
	return linux.Munmap(b)
}
type PerfEventAttr = linux.PerfEventAttr