github.com/Kalvelign/golang-windows-sys-lib@v0.0.0-20221121121202-63da651435e1/unix/syscall_freebsd.go (about) 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 // FreeBSD 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 "sync" 17 "unsafe" 18 ) 19 20 // See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html. 21 var ( 22 osreldateOnce sync.Once 23 osreldate uint32 24 ) 25 26 func supportsABI(ver uint32) bool { 27 osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") }) 28 return osreldate >= ver 29 } 30 31 // SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. 32 type SockaddrDatalink struct { 33 Len uint8 34 Family uint8 35 Index uint16 36 Type uint8 37 Nlen uint8 38 Alen uint8 39 Slen uint8 40 Data [46]int8 41 raw RawSockaddrDatalink 42 } 43 44 func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { 45 return nil, EAFNOSUPPORT 46 } 47 48 // Translate "kern.hostname" to []_C_int{0,1,2,3}. 49 func nametomib(name string) (mib []_C_int, err error) { 50 const siz = unsafe.Sizeof(mib[0]) 51 52 // NOTE(rsc): It seems strange to set the buffer to have 53 // size CTL_MAXNAME+2 but use only CTL_MAXNAME 54 // as the size. I don't know why the +2 is here, but the 55 // kernel uses +2 for its own implementation of this function. 56 // I am scared that if we don't include the +2 here, the kernel 57 // will silently write 2 words farther than we specify 58 // and we'll get memory corruption. 59 var buf [CTL_MAXNAME + 2]_C_int 60 n := uintptr(CTL_MAXNAME) * siz 61 62 p := (*byte)(unsafe.Pointer(&buf[0])) 63 bytes, err := ByteSliceFromString(name) 64 if err != nil { 65 return nil, err 66 } 67 68 // Magic sysctl: "setting" 0.3 to a string name 69 // lets you read back the array of integers form. 70 if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { 71 return nil, err 72 } 73 return buf[0 : n/siz], nil 74 } 75 76 func direntIno(buf []byte) (uint64, bool) { 77 return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) 78 } 79 80 func direntReclen(buf []byte) (uint64, bool) { 81 return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) 82 } 83 84 func direntNamlen(buf []byte) (uint64, bool) { 85 return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) 86 } 87 88 func Pipe(p []int) (err error) { 89 return Pipe2(p, 0) 90 } 91 92 //sysnb pipe2(p *[2]_C_int, flags int) (err error) 93 94 func Pipe2(p []int, flags int) error { 95 if len(p) != 2 { 96 return EINVAL 97 } 98 var pp [2]_C_int 99 err := pipe2(&pp, flags) 100 if err == nil { 101 p[0] = int(pp[0]) 102 p[1] = int(pp[1]) 103 } 104 return err 105 } 106 107 func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { 108 var value IPMreqn 109 vallen := _Socklen(SizeofIPMreqn) 110 errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) 111 return &value, errno 112 } 113 114 func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { 115 return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) 116 } 117 118 // GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct. 119 // The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively. 120 func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { 121 x := new(Xucred) 122 vallen := _Socklen(SizeofXucred) 123 err := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen) 124 return x, err 125 } 126 127 func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { 128 var rsa RawSockaddrAny 129 var len _Socklen = SizeofSockaddrAny 130 nfd, err = accept4(fd, &rsa, &len, flags) 131 if err != nil { 132 return 133 } 134 if len > SizeofSockaddrAny { 135 panic("RawSockaddrAny too small") 136 } 137 sa, err = anyToSockaddr(fd, &rsa) 138 if err != nil { 139 Close(nfd) 140 nfd = 0 141 } 142 return 143 } 144 145 //sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD 146 147 func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { 148 var ( 149 _p0 unsafe.Pointer 150 bufsize uintptr 151 ) 152 if len(buf) > 0 { 153 _p0 = unsafe.Pointer(&buf[0]) 154 bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) 155 } 156 r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) 157 n = int(r0) 158 if e1 != 0 { 159 err = e1 160 } 161 return 162 } 163 164 //sys ioctl(fd int, req uint, arg uintptr) (err error) 165 166 //sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL 167 168 func Uname(uname *Utsname) error { 169 mib := []_C_int{CTL_KERN, KERN_OSTYPE} 170 n := unsafe.Sizeof(uname.Sysname) 171 if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { 172 return err 173 } 174 175 mib = []_C_int{CTL_KERN, KERN_HOSTNAME} 176 n = unsafe.Sizeof(uname.Nodename) 177 if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { 178 return err 179 } 180 181 mib = []_C_int{CTL_KERN, KERN_OSRELEASE} 182 n = unsafe.Sizeof(uname.Release) 183 if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { 184 return err 185 } 186 187 mib = []_C_int{CTL_KERN, KERN_VERSION} 188 n = unsafe.Sizeof(uname.Version) 189 if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { 190 return err 191 } 192 193 // The version might have newlines or tabs in it, convert them to 194 // spaces. 195 for i, b := range uname.Version { 196 if b == '\n' || b == '\t' { 197 if i == len(uname.Version)-1 { 198 uname.Version[i] = 0 199 } else { 200 uname.Version[i] = ' ' 201 } 202 } 203 } 204 205 mib = []_C_int{CTL_HW, HW_MACHINE} 206 n = unsafe.Sizeof(uname.Machine) 207 if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { 208 return err 209 } 210 211 return nil 212 } 213 214 func Stat(path string, st *Stat_t) (err error) { 215 return Fstatat(AT_FDCWD, path, st, 0) 216 } 217 218 func Lstat(path string, st *Stat_t) (err error) { 219 return Fstatat(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW) 220 } 221 222 func Getdents(fd int, buf []byte) (n int, err error) { 223 return Getdirentries(fd, buf, nil) 224 } 225 226 func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { 227 if basep == nil || unsafe.Sizeof(*basep) == 8 { 228 return getdirentries(fd, buf, (*uint64)(unsafe.Pointer(basep))) 229 } 230 // The syscall needs a 64-bit base. On 32-bit machines 231 // we can't just use the basep passed in. See #32498. 232 var base uint64 = uint64(*basep) 233 n, err = getdirentries(fd, buf, &base) 234 *basep = uintptr(base) 235 if base>>32 != 0 { 236 // We can't stuff the base back into a uintptr, so any 237 // future calls would be suspect. Generate an error. 238 // EIO is allowed by getdirentries. 239 err = EIO 240 } 241 return 242 } 243 244 func Mknod(path string, mode uint32, dev uint64) (err error) { 245 return Mknodat(AT_FDCWD, path, mode, dev) 246 } 247 248 func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { 249 if raceenabled { 250 raceReleaseMerge(unsafe.Pointer(&ioSync)) 251 } 252 return sendfile(outfd, infd, offset, count) 253 } 254 255 //sys ptrace(request int, pid int, addr uintptr, data int) (err error) 256 257 func PtraceAttach(pid int) (err error) { 258 return ptrace(PT_ATTACH, pid, 0, 0) 259 } 260 261 func PtraceCont(pid int, signal int) (err error) { 262 return ptrace(PT_CONTINUE, pid, 1, signal) 263 } 264 265 func PtraceDetach(pid int) (err error) { 266 return ptrace(PT_DETACH, pid, 1, 0) 267 } 268 269 func PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) { 270 return ptrace(PT_GETFPREGS, pid, uintptr(unsafe.Pointer(fpregsout)), 0) 271 } 272 273 func PtraceGetRegs(pid int, regsout *Reg) (err error) { 274 return ptrace(PT_GETREGS, pid, uintptr(unsafe.Pointer(regsout)), 0) 275 } 276 277 func PtraceLwpEvents(pid int, enable int) (err error) { 278 return ptrace(PT_LWP_EVENTS, pid, 0, enable) 279 } 280 281 func PtraceLwpInfo(pid int, info uintptr) (err error) { 282 return ptrace(PT_LWPINFO, pid, info, int(unsafe.Sizeof(PtraceLwpInfoStruct{}))) 283 } 284 285 func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { 286 return PtraceIO(PIOD_READ_D, pid, addr, out, SizeofLong) 287 } 288 289 func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) { 290 return PtraceIO(PIOD_READ_I, pid, addr, out, SizeofLong) 291 } 292 293 func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) { 294 return PtraceIO(PIOD_WRITE_D, pid, addr, data, SizeofLong) 295 } 296 297 func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) { 298 return PtraceIO(PIOD_WRITE_I, pid, addr, data, SizeofLong) 299 } 300 301 func PtraceSetRegs(pid int, regs *Reg) (err error) { 302 return ptrace(PT_SETREGS, pid, uintptr(unsafe.Pointer(regs)), 0) 303 } 304 305 func PtraceSingleStep(pid int) (err error) { 306 return ptrace(PT_STEP, pid, 1, 0) 307 } 308 309 /* 310 * Exposed directly 311 */ 312 //sys Access(path string, mode uint32) (err error) 313 //sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) 314 //sys CapEnter() (err error) 315 //sys capRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET 316 //sys capRightsLimit(fd int, rightsp *CapRights) (err error) 317 //sys Chdir(path string) (err error) 318 //sys Chflags(path string, flags int) (err error) 319 //sys Chmod(path string, mode uint32) (err error) 320 //sys Chown(path string, uid int, gid int) (err error) 321 //sys Chroot(path string) (err error) 322 //sys Close(fd int) (err error) 323 //sys Dup(fd int) (nfd int, err error) 324 //sys Dup2(from int, to int) (err error) 325 //sys Exit(code int) 326 //sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) 327 //sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) 328 //sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) 329 //sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) 330 //sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) 331 //sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) 332 //sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) 333 //sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) 334 //sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) 335 //sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) 336 //sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) 337 //sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) 338 //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE 339 //sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) 340 //sys Fchdir(fd int) (err error) 341 //sys Fchflags(fd int, flags int) (err error) 342 //sys Fchmod(fd int, mode uint32) (err error) 343 //sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) 344 //sys Fchown(fd int, uid int, gid int) (err error) 345 //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) 346 //sys Flock(fd int, how int) (err error) 347 //sys Fpathconf(fd int, name int) (val int, err error) 348 //sys Fstat(fd int, stat *Stat_t) (err error) 349 //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) 350 //sys Fstatfs(fd int, stat *Statfs_t) (err error) 351 //sys Fsync(fd int) (err error) 352 //sys Ftruncate(fd int, length int64) (err error) 353 //sys getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) 354 //sys Getdtablesize() (size int) 355 //sysnb Getegid() (egid int) 356 //sysnb Geteuid() (uid int) 357 //sysnb Getgid() (gid int) 358 //sysnb Getpgid(pid int) (pgid int, err error) 359 //sysnb Getpgrp() (pgrp int) 360 //sysnb Getpid() (pid int) 361 //sysnb Getppid() (ppid int) 362 //sys Getpriority(which int, who int) (prio int, err error) 363 //sysnb Getrlimit(which int, lim *Rlimit) (err error) 364 //sysnb Getrusage(who int, rusage *Rusage) (err error) 365 //sysnb Getsid(pid int) (sid int, err error) 366 //sysnb Gettimeofday(tv *Timeval) (err error) 367 //sysnb Getuid() (uid int) 368 //sys Issetugid() (tainted bool) 369 //sys Kill(pid int, signum syscall.Signal) (err error) 370 //sys Kqueue() (fd int, err error) 371 //sys Lchown(path string, uid int, gid int) (err error) 372 //sys Link(path string, link string) (err error) 373 //sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) 374 //sys Listen(s int, backlog int) (err error) 375 //sys Mkdir(path string, mode uint32) (err error) 376 //sys Mkdirat(dirfd int, path string, mode uint32) (err error) 377 //sys Mkfifo(path string, mode uint32) (err error) 378 //sys Mknodat(fd int, path string, mode uint32, dev uint64) (err error) 379 //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) 380 //sys Open(path string, mode int, perm uint32) (fd int, err error) 381 //sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) 382 //sys Pathconf(path string, name int) (val int, err error) 383 //sys pread(fd int, p []byte, offset int64) (n int, err error) 384 //sys pwrite(fd int, p []byte, offset int64) (n int, err error) 385 //sys read(fd int, p []byte) (n int, err error) 386 //sys Readlink(path string, buf []byte) (n int, err error) 387 //sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) 388 //sys Rename(from string, to string) (err error) 389 //sys Renameat(fromfd int, from string, tofd int, to string) (err error) 390 //sys Revoke(path string) (err error) 391 //sys Rmdir(path string) (err error) 392 //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK 393 //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) 394 //sysnb Setegid(egid int) (err error) 395 //sysnb Seteuid(euid int) (err error) 396 //sysnb Setgid(gid int) (err error) 397 //sys Setlogin(name string) (err error) 398 //sysnb Setpgid(pid int, pgid int) (err error) 399 //sys Setpriority(which int, who int, prio int) (err error) 400 //sysnb Setregid(rgid int, egid int) (err error) 401 //sysnb Setreuid(ruid int, euid int) (err error) 402 //sysnb Setresgid(rgid int, egid int, sgid int) (err error) 403 //sysnb Setresuid(ruid int, euid int, suid int) (err error) 404 //sysnb Setrlimit(which int, lim *Rlimit) (err error) 405 //sysnb Setsid() (pid int, err error) 406 //sysnb Settimeofday(tp *Timeval) (err error) 407 //sysnb Setuid(uid int) (err error) 408 //sys Statfs(path string, stat *Statfs_t) (err error) 409 //sys Symlink(path string, link string) (err error) 410 //sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) 411 //sys Sync() (err error) 412 //sys Truncate(path string, length int64) (err error) 413 //sys Umask(newmask int) (oldmask int) 414 //sys Undelete(path string) (err error) 415 //sys Unlink(path string) (err error) 416 //sys Unlinkat(dirfd int, path string, flags int) (err error) 417 //sys Unmount(path string, flags int) (err error) 418 //sys write(fd int, p []byte) (n int, err error) 419 //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) 420 //sys munmap(addr uintptr, length uintptr) (err error) 421 //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ 422 //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE 423 //sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) 424 //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) 425 426 /* 427 * Unimplemented 428 */ 429 // Profil 430 // Sigaction 431 // Sigprocmask 432 // Getlogin 433 // Sigpending 434 // Sigaltstack 435 // Ioctl 436 // Reboot 437 // Execve 438 // Vfork 439 // Sbrk 440 // Sstk 441 // Ovadvise 442 // Mincore 443 // Setitimer 444 // Swapon 445 // Select 446 // Sigsuspend 447 // Readv 448 // Writev 449 // Nfssvc 450 // Getfh 451 // Quotactl 452 // Mount 453 // Csops 454 // Waitid 455 // Add_profil 456 // Kdebug_trace 457 // Sigreturn 458 // Atsocket 459 // Kqueue_from_portset_np 460 // Kqueue_portset 461 // Getattrlist 462 // Setattrlist 463 // Getdents 464 // Getdirentriesattr 465 // Searchfs 466 // Delete 467 // Copyfile 468 // Watchevent 469 // Waitevent 470 // Modwatch 471 // Fsctl 472 // Initgroups 473 // Posix_spawn 474 // Nfsclnt 475 // Fhopen 476 // Minherit 477 // Semsys 478 // Msgsys 479 // Shmsys 480 // Semctl 481 // Semget 482 // Semop 483 // Msgctl 484 // Msgget 485 // Msgsnd 486 // Msgrcv 487 // Shmat 488 // Shmctl 489 // Shmdt 490 // Shmget 491 // Shm_open 492 // Shm_unlink 493 // Sem_open 494 // Sem_close 495 // Sem_unlink 496 // Sem_wait 497 // Sem_trywait 498 // Sem_post 499 // Sem_getvalue 500 // Sem_init 501 // Sem_destroy 502 // Open_extended 503 // Umask_extended 504 // Stat_extended 505 // Lstat_extended 506 // Fstat_extended 507 // Chmod_extended 508 // Fchmod_extended 509 // Access_extended 510 // Settid 511 // Gettid 512 // Setsgroups 513 // Getsgroups 514 // Setwgroups 515 // Getwgroups 516 // Mkfifo_extended 517 // Mkdir_extended 518 // Identitysvc 519 // Shared_region_check_np 520 // Shared_region_map_np 521 // __pthread_mutex_destroy 522 // __pthread_mutex_init 523 // __pthread_mutex_lock 524 // __pthread_mutex_trylock 525 // __pthread_mutex_unlock 526 // __pthread_cond_init 527 // __pthread_cond_destroy 528 // __pthread_cond_broadcast 529 // __pthread_cond_signal 530 // Setsid_with_pid 531 // __pthread_cond_timedwait 532 // Aio_fsync 533 // Aio_return 534 // Aio_suspend 535 // Aio_cancel 536 // Aio_error 537 // Aio_read 538 // Aio_write 539 // Lio_listio 540 // __pthread_cond_wait 541 // Iopolicysys 542 // __pthread_kill 543 // __pthread_sigmask 544 // __sigwait 545 // __disable_threadsignal 546 // __pthread_markcancel 547 // __pthread_canceled 548 // __semwait_signal 549 // Proc_info 550 // Stat64_extended 551 // Lstat64_extended 552 // Fstat64_extended 553 // __pthread_chdir 554 // __pthread_fchdir 555 // Audit 556 // Auditon 557 // Getauid 558 // Setauid 559 // Getaudit 560 // Setaudit 561 // Getaudit_addr 562 // Setaudit_addr 563 // Auditctl 564 // Bsdthread_create 565 // Bsdthread_terminate 566 // Stack_snapshot 567 // Bsdthread_register 568 // Workq_open 569 // Workq_ops 570 // __mac_execve 571 // __mac_syscall 572 // __mac_get_file 573 // __mac_set_file 574 // __mac_get_link 575 // __mac_set_link 576 // __mac_get_proc 577 // __mac_set_proc 578 // __mac_get_fd 579 // __mac_set_fd 580 // __mac_get_pid 581 // __mac_get_lcid 582 // __mac_get_lctx 583 // __mac_set_lctx 584 // Setlcid 585 // Read_nocancel 586 // Write_nocancel 587 // Open_nocancel 588 // Close_nocancel 589 // Wait4_nocancel 590 // Recvmsg_nocancel 591 // Sendmsg_nocancel 592 // Recvfrom_nocancel 593 // Accept_nocancel 594 // Fcntl_nocancel 595 // Select_nocancel 596 // Fsync_nocancel 597 // Connect_nocancel 598 // Sigsuspend_nocancel 599 // Readv_nocancel 600 // Writev_nocancel 601 // Sendto_nocancel 602 // Pread_nocancel 603 // Pwrite_nocancel 604 // Waitid_nocancel 605 // Poll_nocancel 606 // Msgsnd_nocancel 607 // Msgrcv_nocancel 608 // Sem_wait_nocancel 609 // Aio_suspend_nocancel 610 // __sigwait_nocancel 611 // __semwait_signal_nocancel 612 // __mac_mount 613 // __mac_get_mount 614 // __mac_getfsstat