Wait until vpp is ready + Update vendor
[govpp.git] / vendor / golang.org / x / sys / unix / syscall_netbsd.go
1 // Copyright 2009,2010 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // NetBSD system calls.
6 // This file is compiled as ordinary Go code,
7 // but it is also input to mksyscall,
8 // which parses the //sys lines and generates system call stubs.
9 // Note that sometimes we use a lowercase //sys name and wrap
10 // it in our own nicer implementation, either here or in
11 // syscall_bsd.go or syscall_unix.go.
12
13 package unix
14
15 import (
16         "syscall"
17         "unsafe"
18 )
19
20 type SockaddrDatalink struct {
21         Len    uint8
22         Family uint8
23         Index  uint16
24         Type   uint8
25         Nlen   uint8
26         Alen   uint8
27         Slen   uint8
28         Data   [12]int8
29         raw    RawSockaddrDatalink
30 }
31
32 func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
33
34 func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {
35         var olen uintptr
36
37         // Get a list of all sysctl nodes below the given MIB by performing
38         // a sysctl for the given MIB with CTL_QUERY appended.
39         mib = append(mib, CTL_QUERY)
40         qnode := Sysctlnode{Flags: SYSCTL_VERS_1}
41         qp := (*byte)(unsafe.Pointer(&qnode))
42         sz := unsafe.Sizeof(qnode)
43         if err = sysctl(mib, nil, &olen, qp, sz); err != nil {
44                 return nil, err
45         }
46
47         // Now that we know the size, get the actual nodes.
48         nodes = make([]Sysctlnode, olen/sz)
49         np := (*byte)(unsafe.Pointer(&nodes[0]))
50         if err = sysctl(mib, np, &olen, qp, sz); err != nil {
51                 return nil, err
52         }
53
54         return nodes, nil
55 }
56
57 func nametomib(name string) (mib []_C_int, err error) {
58
59         // Split name into components.
60         var parts []string
61         last := 0
62         for i := 0; i < len(name); i++ {
63                 if name[i] == '.' {
64                         parts = append(parts, name[last:i])
65                         last = i + 1
66                 }
67         }
68         parts = append(parts, name[last:])
69
70         // Discover the nodes and construct the MIB OID.
71         for partno, part := range parts {
72                 nodes, err := sysctlNodes(mib)
73                 if err != nil {
74                         return nil, err
75                 }
76                 for _, node := range nodes {
77                         n := make([]byte, 0)
78                         for i := range node.Name {
79                                 if node.Name[i] != 0 {
80                                         n = append(n, byte(node.Name[i]))
81                                 }
82                         }
83                         if string(n) == part {
84                                 mib = append(mib, _C_int(node.Num))
85                                 break
86                         }
87                 }
88                 if len(mib) != partno+1 {
89                         return nil, EINVAL
90                 }
91         }
92
93         return mib, nil
94 }
95
96 // ParseDirent parses up to max directory entries in buf,
97 // appending the names to names. It returns the number
98 // bytes consumed from buf, the number of entries added
99 // to names, and the new names slice.
100 func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
101         origlen := len(buf)
102         for max != 0 && len(buf) > 0 {
103                 dirent := (*Dirent)(unsafe.Pointer(&buf[0]))
104                 if dirent.Reclen == 0 {
105                         buf = nil
106                         break
107                 }
108                 buf = buf[dirent.Reclen:]
109                 if dirent.Fileno == 0 { // File absent in directory.
110                         continue
111                 }
112                 bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0]))
113                 var name = string(bytes[0:dirent.Namlen])
114                 if name == "." || name == ".." { // Useless names
115                         continue
116                 }
117                 max--
118                 count++
119                 names = append(names, name)
120         }
121         return origlen - len(buf), count, names
122 }
123
124 //sysnb pipe() (fd1 int, fd2 int, err error)
125 func Pipe(p []int) (err error) {
126         if len(p) != 2 {
127                 return EINVAL
128         }
129         p[0], p[1], err = pipe()
130         return
131 }
132
133 //sys getdents(fd int, buf []byte) (n int, err error)
134 func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
135         return getdents(fd, buf)
136 }
137
138 // TODO
139 func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
140         return -1, ENOSYS
141 }
142
143 /*
144  * Exposed directly
145  */
146 //sys   Access(path string, mode uint32) (err error)
147 //sys   Adjtime(delta *Timeval, olddelta *Timeval) (err error)
148 //sys   Chdir(path string) (err error)
149 //sys   Chflags(path string, flags int) (err error)
150 //sys   Chmod(path string, mode uint32) (err error)
151 //sys   Chown(path string, uid int, gid int) (err error)
152 //sys   Chroot(path string) (err error)
153 //sys   Close(fd int) (err error)
154 //sys   Dup(fd int) (nfd int, err error)
155 //sys   Dup2(from int, to int) (err error)
156 //sys   Exit(code int)
157 //sys   Fchdir(fd int) (err error)
158 //sys   Fchflags(fd int, flags int) (err error)
159 //sys   Fchmod(fd int, mode uint32) (err error)
160 //sys   Fchown(fd int, uid int, gid int) (err error)
161 //sys   Flock(fd int, how int) (err error)
162 //sys   Fpathconf(fd int, name int) (val int, err error)
163 //sys   Fstat(fd int, stat *Stat_t) (err error)
164 //sys   Fsync(fd int) (err error)
165 //sys   Ftruncate(fd int, length int64) (err error)
166 //sysnb Getegid() (egid int)
167 //sysnb Geteuid() (uid int)
168 //sysnb Getgid() (gid int)
169 //sysnb Getpgid(pid int) (pgid int, err error)
170 //sysnb Getpgrp() (pgrp int)
171 //sysnb Getpid() (pid int)
172 //sysnb Getppid() (ppid int)
173 //sys   Getpriority(which int, who int) (prio int, err error)
174 //sysnb Getrlimit(which int, lim *Rlimit) (err error)
175 //sysnb Getrusage(who int, rusage *Rusage) (err error)
176 //sysnb Getsid(pid int) (sid int, err error)
177 //sysnb Gettimeofday(tv *Timeval) (err error)
178 //sysnb Getuid() (uid int)
179 //sys   Issetugid() (tainted bool)
180 //sys   Kill(pid int, signum syscall.Signal) (err error)
181 //sys   Kqueue() (fd int, err error)
182 //sys   Lchown(path string, uid int, gid int) (err error)
183 //sys   Link(path string, link string) (err error)
184 //sys   Listen(s int, backlog int) (err error)
185 //sys   Lstat(path string, stat *Stat_t) (err error)
186 //sys   Mkdir(path string, mode uint32) (err error)
187 //sys   Mkfifo(path string, mode uint32) (err error)
188 //sys   Mknod(path string, mode uint32, dev int) (err error)
189 //sys   Mlock(b []byte) (err error)
190 //sys   Mlockall(flags int) (err error)
191 //sys   Mprotect(b []byte, prot int) (err error)
192 //sys   Munlock(b []byte) (err error)
193 //sys   Munlockall() (err error)
194 //sys   Nanosleep(time *Timespec, leftover *Timespec) (err error)
195 //sys   Open(path string, mode int, perm uint32) (fd int, err error)
196 //sys   Pathconf(path string, name int) (val int, err error)
197 //sys   Pread(fd int, p []byte, offset int64) (n int, err error)
198 //sys   Pwrite(fd int, p []byte, offset int64) (n int, err error)
199 //sys   read(fd int, p []byte) (n int, err error)
200 //sys   Readlink(path string, buf []byte) (n int, err error)
201 //sys   Rename(from string, to string) (err error)
202 //sys   Revoke(path string) (err error)
203 //sys   Rmdir(path string) (err error)
204 //sys   Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
205 //sys   Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
206 //sysnb Setegid(egid int) (err error)
207 //sysnb Seteuid(euid int) (err error)
208 //sysnb Setgid(gid int) (err error)
209 //sysnb Setpgid(pid int, pgid int) (err error)
210 //sys   Setpriority(which int, who int, prio int) (err error)
211 //sysnb Setregid(rgid int, egid int) (err error)
212 //sysnb Setreuid(ruid int, euid int) (err error)
213 //sysnb Setrlimit(which int, lim *Rlimit) (err error)
214 //sysnb Setsid() (pid int, err error)
215 //sysnb Settimeofday(tp *Timeval) (err error)
216 //sysnb Setuid(uid int) (err error)
217 //sys   Stat(path string, stat *Stat_t) (err error)
218 //sys   Symlink(path string, link string) (err error)
219 //sys   Sync() (err error)
220 //sys   Truncate(path string, length int64) (err error)
221 //sys   Umask(newmask int) (oldmask int)
222 //sys   Unlink(path string) (err error)
223 //sys   Unmount(path string, flags int) (err error)
224 //sys   write(fd int, p []byte) (n int, err error)
225 //sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
226 //sys   munmap(addr uintptr, length uintptr) (err error)
227 //sys   readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
228 //sys   writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
229
230 /*
231  * Unimplemented
232  */
233 // ____semctl13
234 // __clone
235 // __fhopen40
236 // __fhstat40
237 // __fhstatvfs140
238 // __fstat30
239 // __getcwd
240 // __getfh30
241 // __getlogin
242 // __lstat30
243 // __mount50
244 // __msgctl13
245 // __msync13
246 // __ntp_gettime30
247 // __posix_chown
248 // __posix_fadvise50
249 // __posix_fchown
250 // __posix_lchown
251 // __posix_rename
252 // __setlogin
253 // __shmctl13
254 // __sigaction_sigtramp
255 // __sigaltstack14
256 // __sigpending14
257 // __sigprocmask14
258 // __sigsuspend14
259 // __sigtimedwait
260 // __stat30
261 // __syscall
262 // __vfork14
263 // _ksem_close
264 // _ksem_destroy
265 // _ksem_getvalue
266 // _ksem_init
267 // _ksem_open
268 // _ksem_post
269 // _ksem_trywait
270 // _ksem_unlink
271 // _ksem_wait
272 // _lwp_continue
273 // _lwp_create
274 // _lwp_ctl
275 // _lwp_detach
276 // _lwp_exit
277 // _lwp_getname
278 // _lwp_getprivate
279 // _lwp_kill
280 // _lwp_park
281 // _lwp_self
282 // _lwp_setname
283 // _lwp_setprivate
284 // _lwp_suspend
285 // _lwp_unpark
286 // _lwp_unpark_all
287 // _lwp_wait
288 // _lwp_wakeup
289 // _pset_bind
290 // _sched_getaffinity
291 // _sched_getparam
292 // _sched_setaffinity
293 // _sched_setparam
294 // acct
295 // aio_cancel
296 // aio_error
297 // aio_fsync
298 // aio_read
299 // aio_return
300 // aio_suspend
301 // aio_write
302 // break
303 // clock_getres
304 // clock_gettime
305 // clock_settime
306 // compat_09_ogetdomainname
307 // compat_09_osetdomainname
308 // compat_09_ouname
309 // compat_10_omsgsys
310 // compat_10_osemsys
311 // compat_10_oshmsys
312 // compat_12_fstat12
313 // compat_12_getdirentries
314 // compat_12_lstat12
315 // compat_12_msync
316 // compat_12_oreboot
317 // compat_12_oswapon
318 // compat_12_stat12
319 // compat_13_sigaction13
320 // compat_13_sigaltstack13
321 // compat_13_sigpending13
322 // compat_13_sigprocmask13
323 // compat_13_sigreturn13
324 // compat_13_sigsuspend13
325 // compat_14___semctl
326 // compat_14_msgctl
327 // compat_14_shmctl
328 // compat_16___sigaction14
329 // compat_16___sigreturn14
330 // compat_20_fhstatfs
331 // compat_20_fstatfs
332 // compat_20_getfsstat
333 // compat_20_statfs
334 // compat_30___fhstat30
335 // compat_30___fstat13
336 // compat_30___lstat13
337 // compat_30___stat13
338 // compat_30_fhopen
339 // compat_30_fhstat
340 // compat_30_fhstatvfs1
341 // compat_30_getdents
342 // compat_30_getfh
343 // compat_30_ntp_gettime
344 // compat_30_socket
345 // compat_40_mount
346 // compat_43_fstat43
347 // compat_43_lstat43
348 // compat_43_oaccept
349 // compat_43_ocreat
350 // compat_43_oftruncate
351 // compat_43_ogetdirentries
352 // compat_43_ogetdtablesize
353 // compat_43_ogethostid
354 // compat_43_ogethostname
355 // compat_43_ogetkerninfo
356 // compat_43_ogetpagesize
357 // compat_43_ogetpeername
358 // compat_43_ogetrlimit
359 // compat_43_ogetsockname
360 // compat_43_okillpg
361 // compat_43_olseek
362 // compat_43_ommap
363 // compat_43_oquota
364 // compat_43_orecv
365 // compat_43_orecvfrom
366 // compat_43_orecvmsg
367 // compat_43_osend
368 // compat_43_osendmsg
369 // compat_43_osethostid
370 // compat_43_osethostname
371 // compat_43_osetrlimit
372 // compat_43_osigblock
373 // compat_43_osigsetmask
374 // compat_43_osigstack
375 // compat_43_osigvec
376 // compat_43_otruncate
377 // compat_43_owait
378 // compat_43_stat43
379 // execve
380 // extattr_delete_fd
381 // extattr_delete_file
382 // extattr_delete_link
383 // extattr_get_fd
384 // extattr_get_file
385 // extattr_get_link
386 // extattr_list_fd
387 // extattr_list_file
388 // extattr_list_link
389 // extattr_set_fd
390 // extattr_set_file
391 // extattr_set_link
392 // extattrctl
393 // fchroot
394 // fdatasync
395 // fgetxattr
396 // fktrace
397 // flistxattr
398 // fork
399 // fremovexattr
400 // fsetxattr
401 // fstatvfs1
402 // fsync_range
403 // getcontext
404 // getitimer
405 // getvfsstat
406 // getxattr
407 // ioctl
408 // ktrace
409 // lchflags
410 // lchmod
411 // lfs_bmapv
412 // lfs_markv
413 // lfs_segclean
414 // lfs_segwait
415 // lgetxattr
416 // lio_listio
417 // listxattr
418 // llistxattr
419 // lremovexattr
420 // lseek
421 // lsetxattr
422 // lutimes
423 // madvise
424 // mincore
425 // minherit
426 // modctl
427 // mq_close
428 // mq_getattr
429 // mq_notify
430 // mq_open
431 // mq_receive
432 // mq_send
433 // mq_setattr
434 // mq_timedreceive
435 // mq_timedsend
436 // mq_unlink
437 // mremap
438 // msgget
439 // msgrcv
440 // msgsnd
441 // nfssvc
442 // ntp_adjtime
443 // pmc_control
444 // pmc_get_info
445 // poll
446 // pollts
447 // preadv
448 // profil
449 // pselect
450 // pset_assign
451 // pset_create
452 // pset_destroy
453 // ptrace
454 // pwritev
455 // quotactl
456 // rasctl
457 // readv
458 // reboot
459 // removexattr
460 // sa_enable
461 // sa_preempt
462 // sa_register
463 // sa_setconcurrency
464 // sa_stacks
465 // sa_yield
466 // sbrk
467 // sched_yield
468 // semconfig
469 // semget
470 // semop
471 // setcontext
472 // setitimer
473 // setxattr
474 // shmat
475 // shmdt
476 // shmget
477 // sstk
478 // statvfs1
479 // swapctl
480 // sysarch
481 // syscall
482 // timer_create
483 // timer_delete
484 // timer_getoverrun
485 // timer_gettime
486 // timer_settime
487 // undelete
488 // utrace
489 // uuidgen
490 // vadvise
491 // vfork
492 // writev