.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / sys@v0.0.0-20210124154548-22da62e12c0c / 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         "runtime"
17         "syscall"
18         "unsafe"
19 )
20
21 // SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
22 type SockaddrDatalink struct {
23         Len    uint8
24         Family uint8
25         Index  uint16
26         Type   uint8
27         Nlen   uint8
28         Alen   uint8
29         Slen   uint8
30         Data   [12]int8
31         raw    RawSockaddrDatalink
32 }
33
34 func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
35         return nil, EAFNOSUPPORT
36 }
37
38 func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
39
40 func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {
41         var olen uintptr
42
43         // Get a list of all sysctl nodes below the given MIB by performing
44         // a sysctl for the given MIB with CTL_QUERY appended.
45         mib = append(mib, CTL_QUERY)
46         qnode := Sysctlnode{Flags: SYSCTL_VERS_1}
47         qp := (*byte)(unsafe.Pointer(&qnode))
48         sz := unsafe.Sizeof(qnode)
49         if err = sysctl(mib, nil, &olen, qp, sz); err != nil {
50                 return nil, err
51         }
52
53         // Now that we know the size, get the actual nodes.
54         nodes = make([]Sysctlnode, olen/sz)
55         np := (*byte)(unsafe.Pointer(&nodes[0]))
56         if err = sysctl(mib, np, &olen, qp, sz); err != nil {
57                 return nil, err
58         }
59
60         return nodes, nil
61 }
62
63 func nametomib(name string) (mib []_C_int, err error) {
64         // Split name into components.
65         var parts []string
66         last := 0
67         for i := 0; i < len(name); i++ {
68                 if name[i] == '.' {
69                         parts = append(parts, name[last:i])
70                         last = i + 1
71                 }
72         }
73         parts = append(parts, name[last:])
74
75         // Discover the nodes and construct the MIB OID.
76         for partno, part := range parts {
77                 nodes, err := sysctlNodes(mib)
78                 if err != nil {
79                         return nil, err
80                 }
81                 for _, node := range nodes {
82                         n := make([]byte, 0)
83                         for i := range node.Name {
84                                 if node.Name[i] != 0 {
85                                         n = append(n, byte(node.Name[i]))
86                                 }
87                         }
88                         if string(n) == part {
89                                 mib = append(mib, _C_int(node.Num))
90                                 break
91                         }
92                 }
93                 if len(mib) != partno+1 {
94                         return nil, EINVAL
95                 }
96         }
97
98         return mib, nil
99 }
100
101 func direntIno(buf []byte) (uint64, bool) {
102         return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))
103 }
104
105 func direntReclen(buf []byte) (uint64, bool) {
106         return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
107 }
108
109 func direntNamlen(buf []byte) (uint64, bool) {
110         return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
111 }
112
113 //sysnb pipe() (fd1 int, fd2 int, err error)
114 func Pipe(p []int) (err error) {
115         if len(p) != 2 {
116                 return EINVAL
117         }
118         p[0], p[1], err = pipe()
119         return
120 }
121
122 //sys Getdents(fd int, buf []byte) (n int, err error)
123 func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
124         n, err = Getdents(fd, buf)
125         if err != nil || basep == nil {
126                 return
127         }
128
129         var off int64
130         off, err = Seek(fd, 0, 1 /* SEEK_CUR */)
131         if err != nil {
132                 *basep = ^uintptr(0)
133                 return
134         }
135         *basep = uintptr(off)
136         if unsafe.Sizeof(*basep) == 8 {
137                 return
138         }
139         if off>>32 != 0 {
140                 // We can't stuff the offset back into a uintptr, so any
141                 // future calls would be suspect. Generate an error.
142                 // EIO is allowed by getdirentries.
143                 err = EIO
144         }
145         return
146 }
147
148 //sys   Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
149
150 // TODO
151 func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
152         return -1, ENOSYS
153 }
154
155 func setattrlistTimes(path string, times []Timespec, flags int) error {
156         // used on Darwin for UtimesNano
157         return ENOSYS
158 }
159
160 //sys   ioctl(fd int, req uint, arg uintptr) (err error)
161
162 //sys   sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
163
164 func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) {
165         var value Ptmget
166         err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
167         runtime.KeepAlive(value)
168         return &value, err
169 }
170
171 func Uname(uname *Utsname) error {
172         mib := []_C_int{CTL_KERN, KERN_OSTYPE}
173         n := unsafe.Sizeof(uname.Sysname)
174         if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {
175                 return err
176         }
177
178         mib = []_C_int{CTL_KERN, KERN_HOSTNAME}
179         n = unsafe.Sizeof(uname.Nodename)
180         if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {
181                 return err
182         }
183
184         mib = []_C_int{CTL_KERN, KERN_OSRELEASE}
185         n = unsafe.Sizeof(uname.Release)
186         if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {
187                 return err
188         }
189
190         mib = []_C_int{CTL_KERN, KERN_VERSION}
191         n = unsafe.Sizeof(uname.Version)
192         if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {
193                 return err
194         }
195
196         // The version might have newlines or tabs in it, convert them to
197         // spaces.
198         for i, b := range uname.Version {
199                 if b == '\n' || b == '\t' {
200                         if i == len(uname.Version)-1 {
201                                 uname.Version[i] = 0
202                         } else {
203                                 uname.Version[i] = ' '
204                         }
205                 }
206         }
207
208         mib = []_C_int{CTL_HW, HW_MACHINE}
209         n = unsafe.Sizeof(uname.Machine)
210         if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {
211                 return err
212         }
213
214         return nil
215 }
216
217 func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
218         if raceenabled {
219                 raceReleaseMerge(unsafe.Pointer(&ioSync))
220         }
221         return sendfile(outfd, infd, offset, count)
222 }
223
224 func Fstatvfs(fd int, buf *Statvfs_t) (err error) {
225         return Fstatvfs1(fd, buf, ST_WAIT)
226 }
227
228 func Statvfs(path string, buf *Statvfs_t) (err error) {
229         return Statvfs1(path, buf, ST_WAIT)
230 }
231
232 /*
233  * Exposed directly
234  */
235 //sys   Access(path string, mode uint32) (err error)
236 //sys   Adjtime(delta *Timeval, olddelta *Timeval) (err error)
237 //sys   Chdir(path string) (err error)
238 //sys   Chflags(path string, flags int) (err error)
239 //sys   Chmod(path string, mode uint32) (err error)
240 //sys   Chown(path string, uid int, gid int) (err error)
241 //sys   Chroot(path string) (err error)
242 //sys   Close(fd int) (err error)
243 //sys   Dup(fd int) (nfd int, err error)
244 //sys   Dup2(from int, to int) (err error)
245 //sys   Dup3(from int, to int, flags int) (err error)
246 //sys   Exit(code int)
247 //sys   ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
248 //sys   ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
249 //sys   ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)
250 //sys   ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
251 //sys   ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
252 //sys   ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
253 //sys   ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)
254 //sys   ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
255 //sys   ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
256 //sys   ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
257 //sys   ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)
258 //sys   ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
259 //sys   Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
260 //sys   Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE
261 //sys   Fchdir(fd int) (err error)
262 //sys   Fchflags(fd int, flags int) (err error)
263 //sys   Fchmod(fd int, mode uint32) (err error)
264 //sys   Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
265 //sys   Fchown(fd int, uid int, gid int) (err error)
266 //sys   Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
267 //sys   Flock(fd int, how int) (err error)
268 //sys   Fpathconf(fd int, name int) (val int, err error)
269 //sys   Fstat(fd int, stat *Stat_t) (err error)
270 //sys   Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
271 //sys   Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) = SYS_FSTATVFS1
272 //sys   Fsync(fd int) (err error)
273 //sys   Ftruncate(fd int, length int64) (err error)
274 //sysnb Getegid() (egid int)
275 //sysnb Geteuid() (uid int)
276 //sysnb Getgid() (gid int)
277 //sysnb Getpgid(pid int) (pgid int, err error)
278 //sysnb Getpgrp() (pgrp int)
279 //sysnb Getpid() (pid int)
280 //sysnb Getppid() (ppid int)
281 //sys   Getpriority(which int, who int) (prio int, err error)
282 //sysnb Getrlimit(which int, lim *Rlimit) (err error)
283 //sysnb Getrusage(who int, rusage *Rusage) (err error)
284 //sysnb Getsid(pid int) (sid int, err error)
285 //sysnb Gettimeofday(tv *Timeval) (err error)
286 //sysnb Getuid() (uid int)
287 //sys   Issetugid() (tainted bool)
288 //sys   Kill(pid int, signum syscall.Signal) (err error)
289 //sys   Kqueue() (fd int, err error)
290 //sys   Lchown(path string, uid int, gid int) (err error)
291 //sys   Link(path string, link string) (err error)
292 //sys   Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
293 //sys   Listen(s int, backlog int) (err error)
294 //sys   Lstat(path string, stat *Stat_t) (err error)
295 //sys   Mkdir(path string, mode uint32) (err error)
296 //sys   Mkdirat(dirfd int, path string, mode uint32) (err error)
297 //sys   Mkfifo(path string, mode uint32) (err error)
298 //sys   Mkfifoat(dirfd int, path string, mode uint32) (err error)
299 //sys   Mknod(path string, mode uint32, dev int) (err error)
300 //sys   Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
301 //sys   Nanosleep(time *Timespec, leftover *Timespec) (err error)
302 //sys   Open(path string, mode int, perm uint32) (fd int, err error)
303 //sys   Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
304 //sys   Pathconf(path string, name int) (val int, err error)
305 //sys   Pread(fd int, p []byte, offset int64) (n int, err error)
306 //sys   Pwrite(fd int, p []byte, offset int64) (n int, err error)
307 //sys   read(fd int, p []byte) (n int, err error)
308 //sys   Readlink(path string, buf []byte) (n int, err error)
309 //sys   Readlinkat(dirfd int, path string, buf []byte) (n int, err error)
310 //sys   Rename(from string, to string) (err error)
311 //sys   Renameat(fromfd int, from string, tofd int, to string) (err error)
312 //sys   Revoke(path string) (err error)
313 //sys   Rmdir(path string) (err error)
314 //sys   Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
315 //sys   Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
316 //sysnb Setegid(egid int) (err error)
317 //sysnb Seteuid(euid int) (err error)
318 //sysnb Setgid(gid int) (err error)
319 //sysnb Setpgid(pid int, pgid int) (err error)
320 //sys   Setpriority(which int, who int, prio int) (err error)
321 //sysnb Setregid(rgid int, egid int) (err error)
322 //sysnb Setreuid(ruid int, euid int) (err error)
323 //sysnb Setrlimit(which int, lim *Rlimit) (err error)
324 //sysnb Setsid() (pid int, err error)
325 //sysnb Settimeofday(tp *Timeval) (err error)
326 //sysnb Setuid(uid int) (err error)
327 //sys   Stat(path string, stat *Stat_t) (err error)
328 //sys   Statvfs1(path string, buf *Statvfs_t, flags int) (err error) = SYS_STATVFS1
329 //sys   Symlink(path string, link string) (err error)
330 //sys   Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
331 //sys   Sync() (err error)
332 //sys   Truncate(path string, length int64) (err error)
333 //sys   Umask(newmask int) (oldmask int)
334 //sys   Unlink(path string) (err error)
335 //sys   Unlinkat(dirfd int, path string, flags int) (err error)
336 //sys   Unmount(path string, flags int) (err error)
337 //sys   write(fd int, p []byte) (n int, err error)
338 //sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
339 //sys   munmap(addr uintptr, length uintptr) (err error)
340 //sys   readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
341 //sys   writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
342 //sys   utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)
343
344 /*
345  * Unimplemented
346  */
347 // ____semctl13
348 // __clone
349 // __fhopen40
350 // __fhstat40
351 // __fhstatvfs140
352 // __fstat30
353 // __getcwd
354 // __getfh30
355 // __getlogin
356 // __lstat30
357 // __mount50
358 // __msgctl13
359 // __msync13
360 // __ntp_gettime30
361 // __posix_chown
362 // __posix_fchown
363 // __posix_lchown
364 // __posix_rename
365 // __setlogin
366 // __shmctl13
367 // __sigaction_sigtramp
368 // __sigaltstack14
369 // __sigpending14
370 // __sigprocmask14
371 // __sigsuspend14
372 // __sigtimedwait
373 // __stat30
374 // __syscall
375 // __vfork14
376 // _ksem_close
377 // _ksem_destroy
378 // _ksem_getvalue
379 // _ksem_init
380 // _ksem_open
381 // _ksem_post
382 // _ksem_trywait
383 // _ksem_unlink
384 // _ksem_wait
385 // _lwp_continue
386 // _lwp_create
387 // _lwp_ctl
388 // _lwp_detach
389 // _lwp_exit
390 // _lwp_getname
391 // _lwp_getprivate
392 // _lwp_kill
393 // _lwp_park
394 // _lwp_self
395 // _lwp_setname
396 // _lwp_setprivate
397 // _lwp_suspend
398 // _lwp_unpark
399 // _lwp_unpark_all
400 // _lwp_wait
401 // _lwp_wakeup
402 // _pset_bind
403 // _sched_getaffinity
404 // _sched_getparam
405 // _sched_setaffinity
406 // _sched_setparam
407 // acct
408 // aio_cancel
409 // aio_error
410 // aio_fsync
411 // aio_read
412 // aio_return
413 // aio_suspend
414 // aio_write
415 // break
416 // clock_getres
417 // clock_gettime
418 // clock_settime
419 // compat_09_ogetdomainname
420 // compat_09_osetdomainname
421 // compat_09_ouname
422 // compat_10_omsgsys
423 // compat_10_osemsys
424 // compat_10_oshmsys
425 // compat_12_fstat12
426 // compat_12_getdirentries
427 // compat_12_lstat12
428 // compat_12_msync
429 // compat_12_oreboot
430 // compat_12_oswapon
431 // compat_12_stat12
432 // compat_13_sigaction13
433 // compat_13_sigaltstack13
434 // compat_13_sigpending13
435 // compat_13_sigprocmask13
436 // compat_13_sigreturn13
437 // compat_13_sigsuspend13
438 // compat_14___semctl
439 // compat_14_msgctl
440 // compat_14_shmctl
441 // compat_16___sigaction14
442 // compat_16___sigreturn14
443 // compat_20_fhstatfs
444 // compat_20_fstatfs
445 // compat_20_getfsstat
446 // compat_20_statfs
447 // compat_30___fhstat30
448 // compat_30___fstat13
449 // compat_30___lstat13
450 // compat_30___stat13
451 // compat_30_fhopen
452 // compat_30_fhstat
453 // compat_30_fhstatvfs1
454 // compat_30_getdents
455 // compat_30_getfh
456 // compat_30_ntp_gettime
457 // compat_30_socket
458 // compat_40_mount
459 // compat_43_fstat43
460 // compat_43_lstat43
461 // compat_43_oaccept
462 // compat_43_ocreat
463 // compat_43_oftruncate
464 // compat_43_ogetdirentries
465 // compat_43_ogetdtablesize
466 // compat_43_ogethostid
467 // compat_43_ogethostname
468 // compat_43_ogetkerninfo
469 // compat_43_ogetpagesize
470 // compat_43_ogetpeername
471 // compat_43_ogetrlimit
472 // compat_43_ogetsockname
473 // compat_43_okillpg
474 // compat_43_olseek
475 // compat_43_ommap
476 // compat_43_oquota
477 // compat_43_orecv
478 // compat_43_orecvfrom
479 // compat_43_orecvmsg
480 // compat_43_osend
481 // compat_43_osendmsg
482 // compat_43_osethostid
483 // compat_43_osethostname
484 // compat_43_osetrlimit
485 // compat_43_osigblock
486 // compat_43_osigsetmask
487 // compat_43_osigstack
488 // compat_43_osigvec
489 // compat_43_otruncate
490 // compat_43_owait
491 // compat_43_stat43
492 // execve
493 // extattr_delete_fd
494 // extattr_delete_file
495 // extattr_delete_link
496 // extattr_get_fd
497 // extattr_get_file
498 // extattr_get_link
499 // extattr_list_fd
500 // extattr_list_file
501 // extattr_list_link
502 // extattr_set_fd
503 // extattr_set_file
504 // extattr_set_link
505 // extattrctl
506 // fchroot
507 // fdatasync
508 // fgetxattr
509 // fktrace
510 // flistxattr
511 // fork
512 // fremovexattr
513 // fsetxattr
514 // fstatvfs1
515 // fsync_range
516 // getcontext
517 // getitimer
518 // getvfsstat
519 // getxattr
520 // ktrace
521 // lchflags
522 // lchmod
523 // lfs_bmapv
524 // lfs_markv
525 // lfs_segclean
526 // lfs_segwait
527 // lgetxattr
528 // lio_listio
529 // listxattr
530 // llistxattr
531 // lremovexattr
532 // lseek
533 // lsetxattr
534 // lutimes
535 // madvise
536 // mincore
537 // minherit
538 // modctl
539 // mq_close
540 // mq_getattr
541 // mq_notify
542 // mq_open
543 // mq_receive
544 // mq_send
545 // mq_setattr
546 // mq_timedreceive
547 // mq_timedsend
548 // mq_unlink
549 // mremap
550 // msgget
551 // msgrcv
552 // msgsnd
553 // nfssvc
554 // ntp_adjtime
555 // pmc_control
556 // pmc_get_info
557 // pollts
558 // preadv
559 // profil
560 // pselect
561 // pset_assign
562 // pset_create
563 // pset_destroy
564 // ptrace
565 // pwritev
566 // quotactl
567 // rasctl
568 // readv
569 // reboot
570 // removexattr
571 // sa_enable
572 // sa_preempt
573 // sa_register
574 // sa_setconcurrency
575 // sa_stacks
576 // sa_yield
577 // sbrk
578 // sched_yield
579 // semconfig
580 // semget
581 // semop
582 // setcontext
583 // setitimer
584 // setxattr
585 // shmat
586 // shmdt
587 // shmget
588 // sstk
589 // statvfs1
590 // swapctl
591 // sysarch
592 // syscall
593 // timer_create
594 // timer_delete
595 // timer_getoverrun
596 // timer_gettime
597 // timer_settime
598 // undelete
599 // utrace
600 // uuidgen
601 // vadvise
602 // vfork
603 // writev