1// +build !linux
2
3package unix
4
5import (
6	"fmt"
7	"runtime"
8	"syscall"
9)
10
11var errNonLinux = fmt.Errorf("unsupported platform %s/%s", runtime.GOOS, runtime.GOARCH)
12
13const (
14	ENOENT                   = syscall.ENOENT
15	EEXIST                   = syscall.EEXIST
16	EAGAIN                   = syscall.EAGAIN
17	ENOSPC                   = syscall.ENOSPC
18	EINVAL                   = syscall.EINVAL
19	EINTR                    = syscall.EINTR
20	EPERM                    = syscall.EPERM
21	ESRCH                    = syscall.ESRCH
22	ENODEV                   = syscall.ENODEV
23	BPF_F_NUMA_NODE          = 0
24	BPF_F_RDONLY_PROG        = 0
25	BPF_F_WRONLY_PROG        = 0
26	BPF_OBJ_NAME_LEN         = 0x10
27	BPF_TAG_SIZE             = 0x8
28	SYS_BPF                  = 321
29	F_DUPFD_CLOEXEC          = 0x406
30	EPOLLIN                  = 0x1
31	EPOLL_CTL_ADD            = 0x1
32	EPOLL_CLOEXEC            = 0x80000
33	O_CLOEXEC                = 0x80000
34	O_NONBLOCK               = 0x800
35	PROT_READ                = 0x1
36	PROT_WRITE               = 0x2
37	MAP_SHARED               = 0x1
38	PERF_TYPE_SOFTWARE       = 0x1
39	PERF_COUNT_SW_BPF_OUTPUT = 0xa
40	PerfBitWatermark         = 0x4000
41	PERF_SAMPLE_RAW          = 0x400
42	PERF_FLAG_FD_CLOEXEC     = 0x8
43	RLIM_INFINITY            = 0x7fffffffffffffff
44	RLIMIT_MEMLOCK           = 8
45)
46
47// Statfs_t is a wrapper
48type Statfs_t struct {
49	Type    int64
50	Bsize   int64
51	Blocks  uint64
52	Bfree   uint64
53	Bavail  uint64
54	Files   uint64
55	Ffree   uint64
56	Fsid    [2]int32
57	Namelen int64
58	Frsize  int64
59	Flags   int64
60	Spare   [4]int64
61}
62
63// Rlimit is a wrapper
64type Rlimit struct {
65	Cur uint64
66	Max uint64
67}
68
69// Setrlimit is a wrapper
70func Setrlimit(resource int, rlim *Rlimit) (err error) {
71	return errNonLinux
72}
73
74// Syscall is a wrapper
75func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
76	return 0, 0, syscall.Errno(1)
77}
78
79// FcntlInt is a wrapper
80func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
81	return -1, errNonLinux
82}
83
84// Statfs is a wrapper
85func Statfs(path string, buf *Statfs_t) error {
86	return errNonLinux
87}
88
89// Close is a wrapper
90func Close(fd int) (err error) {
91	return errNonLinux
92}
93
94// EpollEvent is a wrapper
95type EpollEvent struct {
96	Events uint32
97	Fd     int32
98	Pad    int32
99}
100
101// EpollWait is a wrapper
102func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
103	return 0, errNonLinux
104}
105
106// EpollCtl is a wrapper
107func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
108	return errNonLinux
109}
110
111// Eventfd is a wrapper
112func Eventfd(initval uint, flags int) (fd int, err error) {
113	return 0, errNonLinux
114}
115
116// Write is a wrapper
117func Write(fd int, p []byte) (n int, err error) {
118	return 0, errNonLinux
119}
120
121// EpollCreate1 is a wrapper
122func EpollCreate1(flag int) (fd int, err error) {
123	return 0, errNonLinux
124}
125
126// PerfEventMmapPage is a wrapper
127type PerfEventMmapPage struct {
128	Version        uint32
129	Compat_version uint32
130	Lock           uint32
131	Index          uint32
132	Offset         int64
133	Time_enabled   uint64
134	Time_running   uint64
135	Capabilities   uint64
136	Pmc_width      uint16
137	Time_shift     uint16
138	Time_mult      uint32
139	Time_offset    uint64
140	Time_zero      uint64
141	Size           uint32
142
143	Data_head   uint64
144	Data_tail   uint64
145	Data_offset uint64
146	Data_size   uint64
147	Aux_head    uint64
148	Aux_tail    uint64
149	Aux_offset  uint64
150	Aux_size    uint64
151}
152
153// SetNonblock is a wrapper
154func SetNonblock(fd int, nonblocking bool) (err error) {
155	return errNonLinux
156}
157
158// Mmap is a wrapper
159func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
160	return []byte{}, errNonLinux
161}
162
163// Munmap is a wrapper
164func Munmap(b []byte) (err error) {
165	return errNonLinux
166}
167
168// PerfEventAttr is a wrapper
169type PerfEventAttr struct {
170	Type               uint32
171	Size               uint32
172	Config             uint64
173	Sample             uint64
174	Sample_type        uint64
175	Read_format        uint64
176	Bits               uint64
177	Wakeup             uint32
178	Bp_type            uint32
179	Ext1               uint64
180	Ext2               uint64
181	Branch_sample_type uint64
182	Sample_regs_user   uint64
183	Sample_stack_user  uint32
184	Clockid            int32
185	Sample_regs_intr   uint64
186	Aux_watermark      uint32
187	Sample_max_stack   uint16
188}
189
190// PerfEventOpen is a wrapper
191func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {
192	return 0, errNonLinux
193}
194
195// Utsname is a wrapper
196type Utsname struct {
197	Release [65]byte
198}
199
200// Uname is a wrapper
201func Uname(buf *Utsname) (err error) {
202	return errNonLinux
203}
204
205// Getpid is a wrapper
206func Getpid() int {
207	return -1
208}
209
210// Gettid is a wrapper
211func Gettid() int {
212	return -1
213}
214
215// Tgkill is a wrapper
216func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
217	return errNonLinux
218}
219
220func KernelRelease() (string, error) {
221	return "", errNonLinux
222}
223