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