github.com/Aayushi-Bansal/sys@v0.0.0-20180118120756-90d962a959d8/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 "unsafe" 16 17 type SockaddrDatalink struct { 18 Len uint8 19 Family uint8 20 Index uint16 21 Type uint8 22 Nlen uint8 23 Alen uint8 24 Slen uint8 25 Data [46]int8 26 raw RawSockaddrDatalink 27 } 28 29 // Translate "kern.hostname" to []_C_int{0,1,2,3}. 30 func nametomib(name string) (mib []_C_int, err error) { 31 const siz = unsafe.Sizeof(mib[0]) 32 33 // NOTE(rsc): It seems strange to set the buffer to have 34 // size CTL_MAXNAME+2 but use only CTL_MAXNAME 35 // as the size. I don't know why the +2 is here, but the 36 // kernel uses +2 for its own implementation of this function. 37 // I am scared that if we don't include the +2 here, the kernel 38 // will silently write 2 words farther than we specify 39 // and we'll get memory corruption. 40 var buf [CTL_MAXNAME + 2]_C_int 41 n := uintptr(CTL_MAXNAME) * siz 42 43 p := (*byte)(unsafe.Pointer(&buf[0])) 44 bytes, err := ByteSliceFromString(name) 45 if err != nil { 46 return nil, err 47 } 48 49 // Magic sysctl: "setting" 0.3 to a string name 50 // lets you read back the array of integers form. 51 if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { 52 return nil, err 53 } 54 return buf[0 : n/siz], nil 55 } 56 57 func direntIno(buf []byte) (uint64, bool) { 58 return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) 59 } 60 61 func direntReclen(buf []byte) (uint64, bool) { 62 return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) 63 } 64 65 func direntNamlen(buf []byte) (uint64, bool) { 66 return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) 67 } 68 69 //sysnb pipe() (r int, w int, err error) 70 71 func Pipe(p []int) (err error) { 72 if len(p) != 2 { 73 return EINVAL 74 } 75 p[0], p[1], err = pipe() 76 return 77 } 78 79 func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { 80 var value IPMreqn 81 vallen := _Socklen(SizeofIPMreqn) 82 errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) 83 return &value, errno 84 } 85 86 func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { 87 return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) 88 } 89 90 func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { 91 var rsa RawSockaddrAny 92 var len _Socklen = SizeofSockaddrAny 93 nfd, err = accept4(fd, &rsa, &len, flags) 94 if err != nil { 95 return 96 } 97 if len > SizeofSockaddrAny { 98 panic("RawSockaddrAny too small") 99 } 100 sa, err = anyToSockaddr(&rsa) 101 if err != nil { 102 Close(nfd) 103 nfd = 0 104 } 105 return 106 } 107 108 const ImplementsGetwd = true 109 110 //sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD 111 112 func Getwd() (string, error) { 113 var buf [PathMax]byte 114 _, err := Getcwd(buf[0:]) 115 if err != nil { 116 return "", err 117 } 118 n := clen(buf[:]) 119 if n < 1 { 120 return "", EINVAL 121 } 122 return string(buf[:n]), nil 123 } 124 125 func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { 126 var _p0 unsafe.Pointer 127 var bufsize uintptr 128 if len(buf) > 0 { 129 _p0 = unsafe.Pointer(&buf[0]) 130 bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) 131 } 132 r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) 133 n = int(r0) 134 if e1 != 0 { 135 err = e1 136 } 137 return 138 } 139 140 func setattrlistTimes(path string, times []Timespec, flags int) error { 141 // used on Darwin for UtimesNano 142 return ENOSYS 143 } 144 145 // Derive extattr namespace and attribute name 146 147 func xattrnamespace(fullattr string) (ns int, attr string, err error) { 148 s := -1 149 for idx, val := range fullattr { 150 if val == '.' { 151 s = idx 152 break 153 } 154 } 155 156 if s == -1 { 157 return -1, "", ENOATTR 158 } 159 160 namespace := fullattr[0:s] 161 attr = fullattr[s+1:] 162 163 switch namespace { 164 case "user": 165 return EXTATTR_NAMESPACE_USER, attr, nil 166 case "system": 167 return EXTATTR_NAMESPACE_SYSTEM, attr, nil 168 default: 169 return -1, "", ENOATTR 170 } 171 } 172 173 func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) { 174 if len(dest) > idx { 175 return unsafe.Pointer(&dest[idx]) 176 } else { 177 return unsafe.Pointer(_zero) 178 } 179 } 180 181 // FreeBSD implements its own syscalls to handle extended attributes 182 183 func Getxattr(file string, attr string, dest []byte) (sz int, err error) { 184 d := initxattrdest(dest, 0) 185 destsize := len(dest) 186 187 nsid, a, err := xattrnamespace(attr) 188 if err != nil { 189 return -1, err 190 } 191 192 return ExtattrGetFile(file, nsid, a, uintptr(d), destsize) 193 } 194 195 func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { 196 d := initxattrdest(dest, 0) 197 destsize := len(dest) 198 199 nsid, a, err := xattrnamespace(attr) 200 if err != nil { 201 return -1, err 202 } 203 204 return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize) 205 } 206 207 func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { 208 d := initxattrdest(dest, 0) 209 destsize := len(dest) 210 211 nsid, a, err := xattrnamespace(attr) 212 if err != nil { 213 return -1, err 214 } 215 216 return ExtattrGetLink(link, nsid, a, uintptr(d), destsize) 217 } 218 219 // flags are unused on FreeBSD 220 221 func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { 222 d := unsafe.Pointer(&data[0]) 223 datasiz := len(data) 224 225 nsid, a, err := xattrnamespace(attr) 226 if err != nil { 227 return 228 } 229 230 _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz) 231 return 232 } 233 234 func Setxattr(file string, attr string, data []byte, flags int) (err error) { 235 d := unsafe.Pointer(&data[0]) 236 datasiz := len(data) 237 238 nsid, a, err := xattrnamespace(attr) 239 if err != nil { 240 return 241 } 242 243 _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz) 244 return 245 } 246 247 func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { 248 d := unsafe.Pointer(&data[0]) 249 datasiz := len(data) 250 251 nsid, a, err := xattrnamespace(attr) 252 if err != nil { 253 return 254 } 255 256 _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz) 257 return 258 } 259 260 func Removexattr(file string, attr string) (err error) { 261 nsid, a, err := xattrnamespace(attr) 262 if err != nil { 263 return 264 } 265 266 err = ExtattrDeleteFile(file, nsid, a) 267 return 268 } 269 270 func Fremovexattr(fd int, attr string) (err error) { 271 nsid, a, err := xattrnamespace(attr) 272 if err != nil { 273 return 274 } 275 276 err = ExtattrDeleteFd(fd, nsid, a) 277 return 278 } 279 280 func Lremovexattr(link string, attr string) (err error) { 281 nsid, a, err := xattrnamespace(attr) 282 if err != nil { 283 return 284 } 285 286 err = ExtattrDeleteLink(link, nsid, a) 287 return 288 } 289 290 func Listxattr(file string, dest []byte) (sz int, err error) { 291 d := initxattrdest(dest, 0) 292 destsiz := len(dest) 293 294 // FreeBSD won't allow you to list xattrs from multiple namespaces 295 s := 0 296 for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { 297 stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz) 298 299 /* Errors accessing system attrs are ignored so that 300 * we can implement the Linux-like behavior of omitting errors that 301 * we don't have read permissions on 302 * 303 * Linux will still error if we ask for user attributes on a file that 304 * we don't have read permissions on, so don't ignore those errors 305 */ 306 if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { 307 continue 308 } else if e != nil { 309 return s, e 310 } 311 312 s += stmp 313 destsiz -= s 314 if destsiz < 0 { 315 destsiz = 0 316 } 317 d = initxattrdest(dest, s) 318 } 319 320 return s, nil 321 } 322 323 func Flistxattr(fd int, dest []byte) (sz int, err error) { 324 d := initxattrdest(dest, 0) 325 destsiz := len(dest) 326 327 s := 0 328 for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { 329 stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) 330 if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { 331 continue 332 } else if e != nil { 333 return s, e 334 } 335 336 s += stmp 337 destsiz -= s 338 if destsiz < 0 { 339 destsiz = 0 340 } 341 d = initxattrdest(dest, s) 342 } 343 344 return s, nil 345 } 346 347 func Llistxattr(link string, dest []byte) (sz int, err error) { 348 d := initxattrdest(dest, 0) 349 destsiz := len(dest) 350 351 s := 0 352 for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { 353 stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) 354 if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { 355 continue 356 } else if e != nil { 357 return s, e 358 } 359 360 s += stmp 361 destsiz -= s 362 if destsiz < 0 { 363 destsiz = 0 364 } 365 d = initxattrdest(dest, s) 366 } 367 368 return s, nil 369 } 370 371 //sys ioctl(fd int, req uint, arg uintptr) (err error) 372 373 // ioctl itself should not be exposed directly, but additional get/set 374 // functions for specific types are permissible. 375 376 // IoctlSetInt performs an ioctl operation which sets an integer value 377 // on fd, using the specified request number. 378 func IoctlSetInt(fd int, req uint, value int) error { 379 return ioctl(fd, req, uintptr(value)) 380 } 381 382 func IoctlSetWinsize(fd int, req uint, value *Winsize) error { 383 return ioctl(fd, req, uintptr(unsafe.Pointer(value))) 384 } 385 386 func IoctlSetTermios(fd int, req uint, value *Termios) error { 387 return ioctl(fd, req, uintptr(unsafe.Pointer(value))) 388 } 389 390 // IoctlGetInt performs an ioctl operation which gets an integer value 391 // from fd, using the specified request number. 392 func IoctlGetInt(fd int, req uint) (int, error) { 393 var value int 394 err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) 395 return value, err 396 } 397 398 func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { 399 var value Winsize 400 err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) 401 return &value, err 402 } 403 404 func IoctlGetTermios(fd int, req uint) (*Termios, error) { 405 var value Termios 406 err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) 407 return &value, err 408 } 409 410 func Uname(uname *Utsname) error { 411 mib := []_C_int{CTL_KERN, KERN_OSTYPE} 412 n := unsafe.Sizeof(uname.Sysname) 413 if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { 414 return err 415 } 416 417 mib = []_C_int{CTL_KERN, KERN_HOSTNAME} 418 n = unsafe.Sizeof(uname.Nodename) 419 if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { 420 return err 421 } 422 423 mib = []_C_int{CTL_KERN, KERN_OSRELEASE} 424 n = unsafe.Sizeof(uname.Release) 425 if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { 426 return err 427 } 428 429 mib = []_C_int{CTL_KERN, KERN_VERSION} 430 n = unsafe.Sizeof(uname.Version) 431 if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { 432 return err 433 } 434 435 // The version might have newlines or tabs in it, convert them to 436 // spaces. 437 for i, b := range uname.Version { 438 if b == '\n' || b == '\t' { 439 if i == len(uname.Version)-1 { 440 uname.Version[i] = 0 441 } else { 442 uname.Version[i] = ' ' 443 } 444 } 445 } 446 447 mib = []_C_int{CTL_HW, HW_MACHINE} 448 n = unsafe.Sizeof(uname.Machine) 449 if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { 450 return err 451 } 452 453 return nil 454 } 455 456 /* 457 * Exposed directly 458 */ 459 //sys Access(path string, mode uint32) (err error) 460 //sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) 461 //sys CapEnter() (err error) 462 //sys capRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET 463 //sys capRightsLimit(fd int, rightsp *CapRights) (err error) 464 //sys Chdir(path string) (err error) 465 //sys Chflags(path string, flags int) (err error) 466 //sys Chmod(path string, mode uint32) (err error) 467 //sys Chown(path string, uid int, gid int) (err error) 468 //sys Chroot(path string) (err error) 469 //sys Close(fd int) (err error) 470 //sys Dup(fd int) (nfd int, err error) 471 //sys Dup2(from int, to int) (err error) 472 //sys Exit(code int) 473 //sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) 474 //sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) 475 //sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) 476 //sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) 477 //sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) 478 //sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) 479 //sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) 480 //sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) 481 //sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) 482 //sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) 483 //sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) 484 //sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) 485 //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE 486 //sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) 487 //sys Fchdir(fd int) (err error) 488 //sys Fchflags(fd int, flags int) (err error) 489 //sys Fchmod(fd int, mode uint32) (err error) 490 //sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) 491 //sys Fchown(fd int, uid int, gid int) (err error) 492 //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) 493 //sys Flock(fd int, how int) (err error) 494 //sys Fpathconf(fd int, name int) (val int, err error) 495 //sys Fstat(fd int, stat *Stat_t) (err error) 496 //sys Fstatfs(fd int, stat *Statfs_t) (err error) 497 //sys Fsync(fd int) (err error) 498 //sys Ftruncate(fd int, length int64) (err error) 499 //sys Getdents(fd int, buf []byte) (n int, err error) 500 //sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) 501 //sys Getdtablesize() (size int) 502 //sysnb Getegid() (egid int) 503 //sysnb Geteuid() (uid int) 504 //sysnb Getgid() (gid int) 505 //sysnb Getpgid(pid int) (pgid int, err error) 506 //sysnb Getpgrp() (pgrp int) 507 //sysnb Getpid() (pid int) 508 //sysnb Getppid() (ppid int) 509 //sys Getpriority(which int, who int) (prio int, err error) 510 //sysnb Getrlimit(which int, lim *Rlimit) (err error) 511 //sysnb Getrusage(who int, rusage *Rusage) (err error) 512 //sysnb Getsid(pid int) (sid int, err error) 513 //sysnb Gettimeofday(tv *Timeval) (err error) 514 //sysnb Getuid() (uid int) 515 //sys Issetugid() (tainted bool) 516 //sys Kill(pid int, signum syscall.Signal) (err error) 517 //sys Kqueue() (fd int, err error) 518 //sys Lchown(path string, uid int, gid int) (err error) 519 //sys Link(path string, link string) (err error) 520 //sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) 521 //sys Listen(s int, backlog int) (err error) 522 //sys Lstat(path string, stat *Stat_t) (err error) 523 //sys Mkdir(path string, mode uint32) (err error) 524 //sys Mkdirat(dirfd int, path string, mode uint32) (err error) 525 //sys Mkfifo(path string, mode uint32) (err error) 526 //sys Mknod(path string, mode uint32, dev int) (err error) 527 //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) 528 //sys Open(path string, mode int, perm uint32) (fd int, err error) 529 //sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) 530 //sys Pathconf(path string, name int) (val int, err error) 531 //sys Pread(fd int, p []byte, offset int64) (n int, err error) 532 //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) 533 //sys read(fd int, p []byte) (n int, err error) 534 //sys Readlink(path string, buf []byte) (n int, err error) 535 //sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) 536 //sys Rename(from string, to string) (err error) 537 //sys Renameat(fromfd int, from string, tofd int, to string) (err error) 538 //sys Revoke(path string) (err error) 539 //sys Rmdir(path string) (err error) 540 //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK 541 //sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) 542 //sysnb Setegid(egid int) (err error) 543 //sysnb Seteuid(euid int) (err error) 544 //sysnb Setgid(gid int) (err error) 545 //sys Setlogin(name string) (err error) 546 //sysnb Setpgid(pid int, pgid int) (err error) 547 //sys Setpriority(which int, who int, prio int) (err error) 548 //sysnb Setregid(rgid int, egid int) (err error) 549 //sysnb Setreuid(ruid int, euid int) (err error) 550 //sysnb Setresgid(rgid int, egid int, sgid int) (err error) 551 //sysnb Setresuid(ruid int, euid int, suid int) (err error) 552 //sysnb Setrlimit(which int, lim *Rlimit) (err error) 553 //sysnb Setsid() (pid int, err error) 554 //sysnb Settimeofday(tp *Timeval) (err error) 555 //sysnb Setuid(uid int) (err error) 556 //sys Stat(path string, stat *Stat_t) (err error) 557 //sys Statfs(path string, stat *Statfs_t) (err error) 558 //sys Symlink(path string, link string) (err error) 559 //sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) 560 //sys Sync() (err error) 561 //sys Truncate(path string, length int64) (err error) 562 //sys Umask(newmask int) (oldmask int) 563 //sys Undelete(path string) (err error) 564 //sys Unlink(path string) (err error) 565 //sys Unlinkat(dirfd int, path string, flags int) (err error) 566 //sys Unmount(path string, flags int) (err error) 567 //sys write(fd int, p []byte) (n int, err error) 568 //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) 569 //sys munmap(addr uintptr, length uintptr) (err error) 570 //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ 571 //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE 572 //sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) 573 //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) 574 575 /* 576 * Unimplemented 577 */ 578 // Profil 579 // Sigaction 580 // Sigprocmask 581 // Getlogin 582 // Sigpending 583 // Sigaltstack 584 // Ioctl 585 // Reboot 586 // Execve 587 // Vfork 588 // Sbrk 589 // Sstk 590 // Ovadvise 591 // Mincore 592 // Setitimer 593 // Swapon 594 // Select 595 // Sigsuspend 596 // Readv 597 // Writev 598 // Nfssvc 599 // Getfh 600 // Quotactl 601 // Mount 602 // Csops 603 // Waitid 604 // Add_profil 605 // Kdebug_trace 606 // Sigreturn 607 // Atsocket 608 // Kqueue_from_portset_np 609 // Kqueue_portset 610 // Getattrlist 611 // Setattrlist 612 // Getdirentriesattr 613 // Searchfs 614 // Delete 615 // Copyfile 616 // Watchevent 617 // Waitevent 618 // Modwatch 619 // Getxattr 620 // Fgetxattr 621 // Setxattr 622 // Fsetxattr 623 // Removexattr 624 // Fremovexattr 625 // Listxattr 626 // Flistxattr 627 // Fsctl 628 // Initgroups 629 // Posix_spawn 630 // Nfsclnt 631 // Fhopen 632 // Minherit 633 // Semsys 634 // Msgsys 635 // Shmsys 636 // Semctl 637 // Semget 638 // Semop 639 // Msgctl 640 // Msgget 641 // Msgsnd 642 // Msgrcv 643 // Shmat 644 // Shmctl 645 // Shmdt 646 // Shmget 647 // Shm_open 648 // Shm_unlink 649 // Sem_open 650 // Sem_close 651 // Sem_unlink 652 // Sem_wait 653 // Sem_trywait 654 // Sem_post 655 // Sem_getvalue 656 // Sem_init 657 // Sem_destroy 658 // Open_extended 659 // Umask_extended 660 // Stat_extended 661 // Lstat_extended 662 // Fstat_extended 663 // Chmod_extended 664 // Fchmod_extended 665 // Access_extended 666 // Settid 667 // Gettid 668 // Setsgroups 669 // Getsgroups 670 // Setwgroups 671 // Getwgroups 672 // Mkfifo_extended 673 // Mkdir_extended 674 // Identitysvc 675 // Shared_region_check_np 676 // Shared_region_map_np 677 // __pthread_mutex_destroy 678 // __pthread_mutex_init 679 // __pthread_mutex_lock 680 // __pthread_mutex_trylock 681 // __pthread_mutex_unlock 682 // __pthread_cond_init 683 // __pthread_cond_destroy 684 // __pthread_cond_broadcast 685 // __pthread_cond_signal 686 // Setsid_with_pid 687 // __pthread_cond_timedwait 688 // Aio_fsync 689 // Aio_return 690 // Aio_suspend 691 // Aio_cancel 692 // Aio_error 693 // Aio_read 694 // Aio_write 695 // Lio_listio 696 // __pthread_cond_wait 697 // Iopolicysys 698 // __pthread_kill 699 // __pthread_sigmask 700 // __sigwait 701 // __disable_threadsignal 702 // __pthread_markcancel 703 // __pthread_canceled 704 // __semwait_signal 705 // Proc_info 706 // Stat64_extended 707 // Lstat64_extended 708 // Fstat64_extended 709 // __pthread_chdir 710 // __pthread_fchdir 711 // Audit 712 // Auditon 713 // Getauid 714 // Setauid 715 // Getaudit 716 // Setaudit 717 // Getaudit_addr 718 // Setaudit_addr 719 // Auditctl 720 // Bsdthread_create 721 // Bsdthread_terminate 722 // Stack_snapshot 723 // Bsdthread_register 724 // Workq_open 725 // Workq_ops 726 // __mac_execve 727 // __mac_syscall 728 // __mac_get_file 729 // __mac_set_file 730 // __mac_get_link 731 // __mac_set_link 732 // __mac_get_proc 733 // __mac_set_proc 734 // __mac_get_fd 735 // __mac_set_fd 736 // __mac_get_pid 737 // __mac_get_lcid 738 // __mac_get_lctx 739 // __mac_set_lctx 740 // Setlcid 741 // Read_nocancel 742 // Write_nocancel 743 // Open_nocancel 744 // Close_nocancel 745 // Wait4_nocancel 746 // Recvmsg_nocancel 747 // Sendmsg_nocancel 748 // Recvfrom_nocancel 749 // Accept_nocancel 750 // Fcntl_nocancel 751 // Select_nocancel 752 // Fsync_nocancel 753 // Connect_nocancel 754 // Sigsuspend_nocancel 755 // Readv_nocancel 756 // Writev_nocancel 757 // Sendto_nocancel 758 // Pread_nocancel 759 // Pwrite_nocancel 760 // Waitid_nocancel 761 // Poll_nocancel 762 // Msgsnd_nocancel 763 // Msgrcv_nocancel 764 // Sem_wait_nocancel 765 // Aio_suspend_nocancel 766 // __sigwait_nocancel 767 // __semwait_signal_nocancel 768 // __mac_mount 769 // __mac_get_mount 770 // __mac_getfsstat