vendor/golang.org/x/sys/unix/syscall_openbsd.go
changeset 251 1c52a0eeb952
parent 242 2a9ec03fe5a1
child 256 6d9efbef00a9
equal deleted inserted replaced
250:c040f992052f 251:1c52a0eeb952
    41 		return sysctlMib[i].ctloid, nil
    41 		return sysctlMib[i].ctloid, nil
    42 	}
    42 	}
    43 	return nil, EINVAL
    43 	return nil, EINVAL
    44 }
    44 }
    45 
    45 
    46 //sysnb pipe(p *[2]_C_int) (err error)
    46 func direntIno(buf []byte) (uint64, bool) {
       
    47 	return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))
       
    48 }
       
    49 
       
    50 func direntReclen(buf []byte) (uint64, bool) {
       
    51 	return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
       
    52 }
       
    53 
       
    54 func direntNamlen(buf []byte) (uint64, bool) {
       
    55 	return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
       
    56 }
       
    57 
       
    58 func SysctlUvmexp(name string) (*Uvmexp, error) {
       
    59 	mib, err := sysctlmib(name)
       
    60 	if err != nil {
       
    61 		return nil, err
       
    62 	}
       
    63 
       
    64 	n := uintptr(SizeofUvmexp)
       
    65 	var u Uvmexp
       
    66 	if err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {
       
    67 		return nil, err
       
    68 	}
       
    69 	if n != SizeofUvmexp {
       
    70 		return nil, EIO
       
    71 	}
       
    72 	return &u, nil
       
    73 }
       
    74 
    47 func Pipe(p []int) (err error) {
    75 func Pipe(p []int) (err error) {
       
    76 	return Pipe2(p, 0)
       
    77 }
       
    78 
       
    79 //sysnb	pipe2(p *[2]_C_int, flags int) (err error)
       
    80 func Pipe2(p []int, flags int) error {
    48 	if len(p) != 2 {
    81 	if len(p) != 2 {
    49 		return EINVAL
    82 		return EINVAL
    50 	}
    83 	}
    51 	var pp [2]_C_int
    84 	var pp [2]_C_int
    52 	err = pipe(&pp)
    85 	err := pipe2(&pp, flags)
    53 	p[0] = int(pp[0])
    86 	p[0] = int(pp[0])
    54 	p[1] = int(pp[1])
    87 	p[1] = int(pp[1])
       
    88 	return err
       
    89 }
       
    90 
       
    91 //sys Getdents(fd int, buf []byte) (n int, err error)
       
    92 func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
       
    93 	n, err = Getdents(fd, buf)
       
    94 	if err != nil || basep == nil {
       
    95 		return
       
    96 	}
       
    97 
       
    98 	var off int64
       
    99 	off, err = Seek(fd, 0, 1 /* SEEK_CUR */)
       
   100 	if err != nil {
       
   101 		*basep = ^uintptr(0)
       
   102 		return
       
   103 	}
       
   104 	*basep = uintptr(off)
       
   105 	if unsafe.Sizeof(*basep) == 8 {
       
   106 		return
       
   107 	}
       
   108 	if off>>32 != 0 {
       
   109 		// We can't stuff the offset back into a uintptr, so any
       
   110 		// future calls would be suspect. Generate an error.
       
   111 		// EIO was allowed by getdirentries.
       
   112 		err = EIO
       
   113 	}
    55 	return
   114 	return
    56 }
       
    57 
       
    58 //sys getdents(fd int, buf []byte) (n int, err error)
       
    59 func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
       
    60 	return getdents(fd, buf)
       
    61 }
   115 }
    62 
   116 
    63 const ImplementsGetwd = true
   117 const ImplementsGetwd = true
    64 
   118 
    65 //sys	Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
   119 //sys	Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
    73 	n := clen(buf[:])
   127 	n := clen(buf[:])
    74 	if n < 1 {
   128 	if n < 1 {
    75 		return "", EINVAL
   129 		return "", EINVAL
    76 	}
   130 	}
    77 	return string(buf[:n]), nil
   131 	return string(buf[:n]), nil
       
   132 }
       
   133 
       
   134 func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
       
   135 	if raceenabled {
       
   136 		raceReleaseMerge(unsafe.Pointer(&ioSync))
       
   137 	}
       
   138 	return sendfile(outfd, infd, offset, count)
    78 }
   139 }
    79 
   140 
    80 // TODO
   141 // TODO
    81 func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
   142 func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
    82 	return -1, ENOSYS
   143 	return -1, ENOSYS
   102 	return ENOSYS
   163 	return ENOSYS
   103 }
   164 }
   104 
   165 
   105 //sys	ioctl(fd int, req uint, arg uintptr) (err error)
   166 //sys	ioctl(fd int, req uint, arg uintptr) (err error)
   106 
   167 
   107 // ioctl itself should not be exposed directly, but additional get/set
   168 //sys   sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
   108 // functions for specific types are permissible.
   169 
   109 
   170 //sys	ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)
   110 // IoctlSetInt performs an ioctl operation which sets an integer value
   171 
   111 // on fd, using the specified request number.
   172 func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
   112 func IoctlSetInt(fd int, req uint, value int) error {
   173 	if len(fds) == 0 {
   113 	return ioctl(fd, req, uintptr(value))
   174 		return ppoll(nil, 0, timeout, sigmask)
   114 }
   175 	}
   115 
   176 	return ppoll(&fds[0], len(fds), timeout, sigmask)
   116 func ioctlSetWinsize(fd int, req uint, value *Winsize) error {
       
   117 	return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
       
   118 }
       
   119 
       
   120 func ioctlSetTermios(fd int, req uint, value *Termios) error {
       
   121 	return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
       
   122 }
       
   123 
       
   124 // IoctlGetInt performs an ioctl operation which gets an integer value
       
   125 // from fd, using the specified request number.
       
   126 func IoctlGetInt(fd int, req uint) (int, error) {
       
   127 	var value int
       
   128 	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
       
   129 	return value, err
       
   130 }
       
   131 
       
   132 func IoctlGetWinsize(fd int, req uint) (*Winsize, error) {
       
   133 	var value Winsize
       
   134 	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
       
   135 	return &value, err
       
   136 }
       
   137 
       
   138 func IoctlGetTermios(fd int, req uint) (*Termios, error) {
       
   139 	var value Termios
       
   140 	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
       
   141 	return &value, err
       
   142 }
   177 }
   143 
   178 
   144 func Uname(uname *Utsname) error {
   179 func Uname(uname *Utsname) error {
   145 	mib := []_C_int{CTL_KERN, KERN_OSTYPE}
   180 	mib := []_C_int{CTL_KERN, KERN_OSTYPE}
   146 	n := unsafe.Sizeof(uname.Sysname)
   181 	n := unsafe.Sizeof(uname.Sysname)
   198 //sys	Chown(path string, uid int, gid int) (err error)
   233 //sys	Chown(path string, uid int, gid int) (err error)
   199 //sys	Chroot(path string) (err error)
   234 //sys	Chroot(path string) (err error)
   200 //sys	Close(fd int) (err error)
   235 //sys	Close(fd int) (err error)
   201 //sys	Dup(fd int) (nfd int, err error)
   236 //sys	Dup(fd int) (nfd int, err error)
   202 //sys	Dup2(from int, to int) (err error)
   237 //sys	Dup2(from int, to int) (err error)
       
   238 //sys	Dup3(from int, to int, flags int) (err error)
   203 //sys	Exit(code int)
   239 //sys	Exit(code int)
   204 //sys	Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
   240 //sys	Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
   205 //sys	Fchdir(fd int) (err error)
   241 //sys	Fchdir(fd int) (err error)
   206 //sys	Fchflags(fd int, flags int) (err error)
   242 //sys	Fchflags(fd int, flags int) (err error)
   207 //sys	Fchmod(fd int, mode uint32) (err error)
   243 //sys	Fchmod(fd int, mode uint32) (err error)
   208 //sys	Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
   244 //sys	Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
   209 //sys	Fchown(fd int, uid int, gid int) (err error)
   245 //sys	Fchown(fd int, uid int, gid int) (err error)
       
   246 //sys	Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
   210 //sys	Flock(fd int, how int) (err error)
   247 //sys	Flock(fd int, how int) (err error)
   211 //sys	Fpathconf(fd int, name int) (val int, err error)
   248 //sys	Fpathconf(fd int, name int) (val int, err error)
   212 //sys	Fstat(fd int, stat *Stat_t) (err error)
   249 //sys	Fstat(fd int, stat *Stat_t) (err error)
   213 //sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
   250 //sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
   214 //sys	Fstatfs(fd int, stat *Statfs_t) (err error)
   251 //sys	Fstatfs(fd int, stat *Statfs_t) (err error)
   231 //sys	Issetugid() (tainted bool)
   268 //sys	Issetugid() (tainted bool)
   232 //sys	Kill(pid int, signum syscall.Signal) (err error)
   269 //sys	Kill(pid int, signum syscall.Signal) (err error)
   233 //sys	Kqueue() (fd int, err error)
   270 //sys	Kqueue() (fd int, err error)
   234 //sys	Lchown(path string, uid int, gid int) (err error)
   271 //sys	Lchown(path string, uid int, gid int) (err error)
   235 //sys	Link(path string, link string) (err error)
   272 //sys	Link(path string, link string) (err error)
       
   273 //sys	Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
   236 //sys	Listen(s int, backlog int) (err error)
   274 //sys	Listen(s int, backlog int) (err error)
   237 //sys	Lstat(path string, stat *Stat_t) (err error)
   275 //sys	Lstat(path string, stat *Stat_t) (err error)
   238 //sys	Mkdir(path string, mode uint32) (err error)
   276 //sys	Mkdir(path string, mode uint32) (err error)
       
   277 //sys	Mkdirat(dirfd int, path string, mode uint32) (err error)
   239 //sys	Mkfifo(path string, mode uint32) (err error)
   278 //sys	Mkfifo(path string, mode uint32) (err error)
       
   279 //sys	Mkfifoat(dirfd int, path string, mode uint32) (err error)
   240 //sys	Mknod(path string, mode uint32, dev int) (err error)
   280 //sys	Mknod(path string, mode uint32, dev int) (err error)
       
   281 //sys	Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
   241 //sys	Nanosleep(time *Timespec, leftover *Timespec) (err error)
   282 //sys	Nanosleep(time *Timespec, leftover *Timespec) (err error)
   242 //sys	Open(path string, mode int, perm uint32) (fd int, err error)
   283 //sys	Open(path string, mode int, perm uint32) (fd int, err error)
       
   284 //sys	Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
   243 //sys	Pathconf(path string, name int) (val int, err error)
   285 //sys	Pathconf(path string, name int) (val int, err error)
   244 //sys	Pread(fd int, p []byte, offset int64) (n int, err error)
   286 //sys	Pread(fd int, p []byte, offset int64) (n int, err error)
   245 //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error)
   287 //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error)
   246 //sys	read(fd int, p []byte) (n int, err error)
   288 //sys	read(fd int, p []byte) (n int, err error)
   247 //sys	Readlink(path string, buf []byte) (n int, err error)
   289 //sys	Readlink(path string, buf []byte) (n int, err error)
       
   290 //sys	Readlinkat(dirfd int, path string, buf []byte) (n int, err error)
   248 //sys	Rename(from string, to string) (err error)
   291 //sys	Rename(from string, to string) (err error)
       
   292 //sys	Renameat(fromfd int, from string, tofd int, to string) (err error)
   249 //sys	Revoke(path string) (err error)
   293 //sys	Revoke(path string) (err error)
   250 //sys	Rmdir(path string) (err error)
   294 //sys	Rmdir(path string) (err error)
   251 //sys	Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
   295 //sys	Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
   252 //sys	Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
   296 //sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
   253 //sysnb	Setegid(egid int) (err error)
   297 //sysnb	Setegid(egid int) (err error)
   254 //sysnb	Seteuid(euid int) (err error)
   298 //sysnb	Seteuid(euid int) (err error)
   255 //sysnb	Setgid(gid int) (err error)
   299 //sysnb	Setgid(gid int) (err error)
   256 //sys	Setlogin(name string) (err error)
   300 //sys	Setlogin(name string) (err error)
   257 //sysnb	Setpgid(pid int, pgid int) (err error)
   301 //sysnb	Setpgid(pid int, pgid int) (err error)
   266 //sysnb	Settimeofday(tp *Timeval) (err error)
   310 //sysnb	Settimeofday(tp *Timeval) (err error)
   267 //sysnb	Setuid(uid int) (err error)
   311 //sysnb	Setuid(uid int) (err error)
   268 //sys	Stat(path string, stat *Stat_t) (err error)
   312 //sys	Stat(path string, stat *Stat_t) (err error)
   269 //sys	Statfs(path string, stat *Statfs_t) (err error)
   313 //sys	Statfs(path string, stat *Statfs_t) (err error)
   270 //sys	Symlink(path string, link string) (err error)
   314 //sys	Symlink(path string, link string) (err error)
       
   315 //sys	Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
   271 //sys	Sync() (err error)
   316 //sys	Sync() (err error)
   272 //sys	Truncate(path string, length int64) (err error)
   317 //sys	Truncate(path string, length int64) (err error)
   273 //sys	Umask(newmask int) (oldmask int)
   318 //sys	Umask(newmask int) (oldmask int)
   274 //sys	Unlink(path string) (err error)
   319 //sys	Unlink(path string) (err error)
       
   320 //sys	Unlinkat(dirfd int, path string, flags int) (err error)
   275 //sys	Unmount(path string, flags int) (err error)
   321 //sys	Unmount(path string, flags int) (err error)
   276 //sys	write(fd int, p []byte) (n int, err error)
   322 //sys	write(fd int, p []byte) (n int, err error)
   277 //sys	mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
   323 //sys	mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
   278 //sys	munmap(addr uintptr, length uintptr) (err error)
   324 //sys	munmap(addr uintptr, length uintptr) (err error)
   279 //sys	readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
   325 //sys	readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
   292 // clock_getres
   338 // clock_getres
   293 // clock_gettime
   339 // clock_gettime
   294 // clock_settime
   340 // clock_settime
   295 // closefrom
   341 // closefrom
   296 // execve
   342 // execve
   297 // faccessat
       
   298 // fchmodat
       
   299 // fchownat
       
   300 // fcntl
       
   301 // fhopen
   343 // fhopen
   302 // fhstat
   344 // fhstat
   303 // fhstatfs
   345 // fhstatfs
   304 // fork
   346 // fork
   305 // fstatat
       
   306 // futimens
   347 // futimens
   307 // getfh
   348 // getfh
   308 // getgid
   349 // getgid
   309 // getitimer
   350 // getitimer
   310 // getlogin
   351 // getlogin
   314 // ktrace
   355 // ktrace
   315 // lfs_bmapv
   356 // lfs_bmapv
   316 // lfs_markv
   357 // lfs_markv
   317 // lfs_segclean
   358 // lfs_segclean
   318 // lfs_segwait
   359 // lfs_segwait
   319 // linkat
       
   320 // mincore
   360 // mincore
   321 // minherit
   361 // minherit
   322 // mkdirat
       
   323 // mkfifoat
       
   324 // mknodat
       
   325 // mount
   362 // mount
   326 // mquery
   363 // mquery
   327 // msgctl
   364 // msgctl
   328 // msgget
   365 // msgget
   329 // msgrcv
   366 // msgrcv
   330 // msgsnd
   367 // msgsnd
   331 // nfssvc
   368 // nfssvc
   332 // nnpfspioctl
   369 // nnpfspioctl
   333 // openat
       
   334 // preadv
   370 // preadv
   335 // profil
   371 // profil
   336 // pwritev
   372 // pwritev
   337 // quotactl
   373 // quotactl
   338 // readlinkat
       
   339 // readv
   374 // readv
   340 // reboot
   375 // reboot
   341 // renameat
   376 // renameat
   342 // rfork
   377 // rfork
   343 // sched_yield
   378 // sched_yield
   354 // sigaltstack
   389 // sigaltstack
   355 // sigpending
   390 // sigpending
   356 // sigprocmask
   391 // sigprocmask
   357 // sigreturn
   392 // sigreturn
   358 // sigsuspend
   393 // sigsuspend
   359 // symlinkat
       
   360 // sysarch
   394 // sysarch
   361 // syscall
   395 // syscall
   362 // threxit
   396 // threxit
   363 // thrsigdivert
   397 // thrsigdivert
   364 // thrsleep
   398 // thrsleep
   365 // thrwakeup
   399 // thrwakeup
   366 // unlinkat
       
   367 // vfork
   400 // vfork
   368 // writev
   401 // writev