summaryrefslogtreecommitdiff
path: root/src/pkg/syscall
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2009-06-09 09:53:44 -0700
committerRob Pike <r@golang.org>2009-06-09 09:53:44 -0700
commit7249ea4df2b4f12a4e7ed446f270cea87e4ffd34 (patch)
tree7032a11d0cac2ae4d3e90f7a189b575b5a50f848 /src/pkg/syscall
parentacf6ef7a82b3fe61516a1bac4563706552bdf078 (diff)
downloadgolang-7249ea4df2b4f12a4e7ed446f270cea87e4ffd34.tar.gz
mv src/lib to src/pkg
tests: all.bash passes, gobuild still works, godoc still works. R=rsc OCL=30096 CL=30102
Diffstat (limited to 'src/pkg/syscall')
-rw-r--r--src/pkg/syscall/Makefile97
-rwxr-xr-xsrc/pkg/syscall/PORT124
-rw-r--r--src/pkg/syscall/asm_darwin_386.s83
-rw-r--r--src/pkg/syscall/asm_darwin_amd64.s74
-rw-r--r--src/pkg/syscall/asm_linux_386.s108
-rw-r--r--src/pkg/syscall/asm_linux_amd64.s78
-rw-r--r--src/pkg/syscall/errstr.go30
-rw-r--r--src/pkg/syscall/exec.go305
-rwxr-xr-xsrc/pkg/syscall/mkerrors94
-rwxr-xr-xsrc/pkg/syscall/mksyscall170
-rwxr-xr-xsrc/pkg/syscall/mksysnum_darwin38
-rwxr-xr-xsrc/pkg/syscall/mksysnum_linux31
-rw-r--r--src/pkg/syscall/syscall.go37
-rw-r--r--src/pkg/syscall/syscall_darwin.go663
-rw-r--r--src/pkg/syscall/syscall_darwin_386.go49
-rw-r--r--src/pkg/syscall/syscall_darwin_amd64.go49
-rw-r--r--src/pkg/syscall/syscall_linux.go636
-rw-r--r--src/pkg/syscall/syscall_linux_386.go100
-rw-r--r--src/pkg/syscall/syscall_linux_amd64.go41
-rw-r--r--src/pkg/syscall/types_darwin.c226
-rw-r--r--src/pkg/syscall/types_darwin_386.c1
-rw-r--r--src/pkg/syscall/types_darwin_amd64.c1
-rw-r--r--src/pkg/syscall/types_linux.c217
-rw-r--r--src/pkg/syscall/types_linux_386.c1
-rw-r--r--src/pkg/syscall/types_linux_amd64.c1
-rw-r--r--src/pkg/syscall/zerrors_darwin_386.go260
-rw-r--r--src/pkg/syscall/zerrors_darwin_amd64.go260
-rw-r--r--src/pkg/syscall/zerrors_linux_386.go316
-rw-r--r--src/pkg/syscall/zerrors_linux_amd64.go316
-rw-r--r--src/pkg/syscall/zsyscall_darwin_386.go624
-rw-r--r--src/pkg/syscall/zsyscall_darwin_amd64.go624
-rw-r--r--src/pkg/syscall/zsyscall_linux_386.go720
-rw-r--r--src/pkg/syscall/zsyscall_linux_amd64.go764
-rw-r--r--src/pkg/syscall/zsysnum_darwin_386.go485
-rw-r--r--src/pkg/syscall/zsysnum_darwin_amd64.go485
-rw-r--r--src/pkg/syscall/zsysnum_linux_386.go319
-rw-r--r--src/pkg/syscall/zsysnum_linux_amd64.go296
-rw-r--r--src/pkg/syscall/ztypes_darwin_386.go246
-rw-r--r--src/pkg/syscall/ztypes_darwin_amd64.go248
-rw-r--r--src/pkg/syscall/ztypes_linux_386.go297
-rw-r--r--src/pkg/syscall/ztypes_linux_amd64.go300
41 files changed, 9814 insertions, 0 deletions
diff --git a/src/pkg/syscall/Makefile b/src/pkg/syscall/Makefile
new file mode 100644
index 000000000..a5cc042d7
--- /dev/null
+++ b/src/pkg/syscall/Makefile
@@ -0,0 +1,97 @@
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+# DO NOT EDIT. Automatically generated by gobuild.
+# gobuild -m asm_${GOOS}_${GOARCH}.s errstr.go exec.go syscall.go syscall_${GOOS}.go syscall_${GOOS}_${GOARCH}.go zerrors_${GOOS}_${GOARCH}.go zsyscall_${GOOS}_${GOARCH}.go zsysnum_${GOOS}_${GOARCH}.go ztypes_${GOOS}_${GOARCH}.go >Makefile
+
+D=
+
+include $(GOROOT)/src/Make.$(GOARCH)
+AR=gopack
+
+default: packages
+
+clean:
+ rm -rf *.[$(OS)] *.a [$(OS)].out _obj
+
+test: packages
+ gotest
+
+coverage: packages
+ gotest
+ 6cov -g `pwd` | grep -v '_test\.go:'
+
+%.$O: %.go
+ $(GC) -I_obj $*.go
+
+%.$O: %.c
+ $(CC) $*.c
+
+%.$O: %.s
+ $(AS) $*.s
+
+O1=\
+ asm_$(GOOS)_$(GOARCH).$O\
+ syscall.$O\
+ zerrors_$(GOOS)_$(GOARCH).$O\
+ zsysnum_$(GOOS)_$(GOARCH).$O\
+ ztypes_$(GOOS)_$(GOARCH).$O\
+
+O2=\
+ errstr.$O\
+ zsyscall_$(GOOS)_$(GOARCH).$O\
+
+O3=\
+ syscall_$(GOOS)_$(GOARCH).$O\
+
+O4=\
+ syscall_$(GOOS).$O\
+
+O5=\
+ exec.$O\
+
+
+phases: a1 a2 a3 a4 a5
+_obj$D/syscall.a: phases
+
+a1: $(O1)
+ $(AR) grc _obj$D/syscall.a asm_$(GOOS)_$(GOARCH).$O syscall.$O zerrors_$(GOOS)_$(GOARCH).$O zsysnum_$(GOOS)_$(GOARCH).$O ztypes_$(GOOS)_$(GOARCH).$O
+ rm -f $(O1)
+
+a2: $(O2)
+ $(AR) grc _obj$D/syscall.a errstr.$O zsyscall_$(GOOS)_$(GOARCH).$O
+ rm -f $(O2)
+
+a3: $(O3)
+ $(AR) grc _obj$D/syscall.a syscall_$(GOOS)_$(GOARCH).$O
+ rm -f $(O3)
+
+a4: $(O4)
+ $(AR) grc _obj$D/syscall.a syscall_$(GOOS).$O
+ rm -f $(O4)
+
+a5: $(O5)
+ $(AR) grc _obj$D/syscall.a exec.$O
+ rm -f $(O5)
+
+
+newpkg: clean
+ mkdir -p _obj$D
+ $(AR) grc _obj$D/syscall.a
+
+$(O1): newpkg
+$(O2): a1
+$(O3): a2
+$(O4): a3
+$(O5): a4
+$(O6): a5
+
+nuke: clean
+ rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/syscall.a
+
+packages: _obj$D/syscall.a
+
+install: packages
+ test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
+ cp _obj$D/syscall.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/syscall.a
diff --git a/src/pkg/syscall/PORT b/src/pkg/syscall/PORT
new file mode 100755
index 000000000..f3addcdb0
--- /dev/null
+++ b/src/pkg/syscall/PORT
@@ -0,0 +1,124 @@
+#!/bin/sh
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+# The syscall package provides access to the raw system call
+# interface of the underlying operating system. Porting Go to
+# a new architecture/operating system combination requires
+# some manual effort, though there are tools that automate
+# much of the process. The auto-generated files have names
+# beginning with z.
+#
+# This script prints suggested commands to generate z files
+# for the current system. Running those commands is not automatic.
+# This script is documentation more than anything else.
+#
+# * asm_${GOOS}_${GOARCH}.s
+#
+# This hand-written assembly file implements system call dispatch.
+# There are three entry points:
+#
+# func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr);
+# func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr);
+# func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr);
+#
+# The first and second are the standard ones; they differ only in
+# how many arguments can be passed to the kernel.
+# The third is for low-level use by the ForkExec wrapper;
+# unlike the first two, it does not call into the scheduler to
+# let it know that a system call is running.
+#
+# * syscall_${GOOS}.go
+#
+# This hand-written Go file implements system calls that need
+# special handling and lists "//sys" comments giving prototypes
+# for ones that can be auto-generated. Mksyscall reads those
+# comments to generate the stubs.
+#
+# * syscall_${GOOS}_${GOARCH}.go
+#
+# Same as syscall_${GOOS}.go except that it contains code specific
+# to ${GOOS} on one particular architecture.
+#
+# * types_${GOOS}.c
+#
+# This hand-written C file includes standard C headers and then
+# creates typedef or enum names beginning with a dollar sign
+# (use of $ in variable names is a gcc extension). The hardest
+# part about preparing this file is figuring out which headers to
+# include and which symbols need to be #defined to get the
+# actual data structures that pass through to the kernel system calls.
+# Some C libraries present alternate versions for binary compatibility
+# and translate them on the way in and out of system calls, but
+# there is almost always a #define that can get the real ones.
+# See types_darwin.c and types_linux.c for examples.
+#
+# * types_${GOOS}_${GOARCH}.c
+#
+# Same as types_${GOOS}_${GOARCH}.go except that it contains
+# definitions specific to ${GOOS} one one particular architecture.
+#
+# * zerror_${GOOS}_${GOARCH}.go
+#
+# This machine-generated file defines the system's error numbers,
+# error strings, and signal numbers. The generator is "mkerrors".
+# Usually no arguments are needed, but mkerrors will pass its
+# arguments on to godefs.
+#
+# * zsyscall_${GOOS}_${GOARCH}.go
+#
+# Generated by mksyscall; see syscall_${GOOS}.go above.
+#
+# * zsysnum_${GOOS}_${GOARCH}.go
+#
+# Generated by mksysnum_${GOOS}.
+#
+# * ztypes_${GOOS}_${GOARCH}.go
+#
+# Generated by godefs; see types_${GOOS}.c above.
+
+GOOSARCH="${GOOS}_${GOARCH}"
+
+# defaults
+mksyscall="mksyscall"
+mkerrors="mkerrors"
+
+case "$GOOSARCH" in
+_* | *_ | _)
+ echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2
+ exit 1
+ ;;
+darwin_386)
+ mksyscall="mksyscall -l32"
+ mksysnum="mksysnum_darwin /home/rsc/pub/xnu-1228/bsd/kern/syscalls.master"
+ mktypes="godefs -gsyscall -f-m32"
+ ;;
+darwin_amd64)
+ mksysnum="mksysnum_darwin /home/rsc/pub/xnu-1228/bsd/kern/syscalls.master"
+ mktypes="godefs -gsyscall -f-m64"
+ mkerrors="mkerrors"
+ ;;
+linux_386)
+ mksysnum="mksysnum_linux /usr/include/asm/unistd_32.h"
+ mktypes="godefs -gsyscall -f-m32"
+ ;;
+linux_amd64)
+ mksysnum="mksysnum_linux /usr/include/asm/unistd_64.h"
+ mktypes="godefs -gsyscall -f-m64"
+ ;;
+*)
+ echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2
+ exit 1
+ ;;
+esac
+
+echo "$mkerrors >zerrors_$GOOSARCH.go"
+echo "$mksyscall syscall_$GOOS.go syscall_$GOOSARCH.go >zsyscall_$GOOSARCH.go"
+echo "$mksysnum >zsysnum_$GOOSARCH.go"
+echo "$mktypes types_$GOOS.c types_$GOOSARCH.c >ztypes_$GOOSARCH.go"
+
+port=$(ls *.go | grep -v _)
+arch=$(ls *_$GOOSARCH.s *_$GOOSARCH.go *_$GOOS.go)
+all=$(ls $port $arch) # sort them
+echo gobuild $all
diff --git a/src/pkg/syscall/asm_darwin_386.s b/src/pkg/syscall/asm_darwin_386.s
new file mode 100644
index 000000000..a8ec5b00c
--- /dev/null
+++ b/src/pkg/syscall/asm_darwin_386.s
@@ -0,0 +1,83 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//
+// System call support for 386, Darwin
+//
+
+// func Syscall(trap int32, a1, a2, a3 int32) (r1, r2, err int32);
+// func Syscall6(trap int32, a1, a2, a3, a4, a5, a6 int32) (r1, r2, err int32);
+// Trap # in AX, args on stack above caller pc.
+
+TEXT syscall·Syscall(SB),7,$0
+ CALL sys·entersyscall(SB)
+ MOVL 4(SP), AX // syscall entry
+ // slide args down on top of system call number
+ LEAL 8(SP), SI
+ LEAL 4(SP), DI
+ CLD
+ MOVSL
+ MOVSL
+ MOVSL
+ INT $0x80
+ JAE ok
+ MOVL $-1, 20(SP) // r1
+ MOVL $-1, 24(SP) // r2
+ MOVL AX, 28(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+ok:
+ MOVL AX, 20(SP) // r1
+ MOVL DX, 24(SP) // r2 ???
+ MOVL $0, 28(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+
+TEXT syscall·Syscall6(SB),7,$0
+ CALL sys·entersyscall(SB)
+ MOVL 4(SP), AX // syscall entry
+ // slide args down on top of system call number
+ LEAL 8(SP), SI
+ LEAL 4(SP), DI
+ CLD
+ MOVSL
+ MOVSL
+ MOVSL
+ MOVSL
+ MOVSL
+ MOVSL
+ INT $0x80
+ JAE ok6
+ MOVL $-1, 32(SP) // r1
+ MOVL $-1, 36(SP) // r2
+ MOVL AX, 40(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+ok6:
+ MOVL AX, 32(SP) // r1
+ MOVL DX, 36(SP) // r2 ???
+ MOVL $0, 40(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+
+TEXT syscall·RawSyscall(SB),7,$0
+ MOVL 4(SP), AX // syscall entry
+ // slide args down on top of system call number
+ LEAL 8(SP), SI
+ LEAL 4(SP), DI
+ CLD
+ MOVSL
+ MOVSL
+ MOVSL
+ INT $0x80
+ JAE ok1
+ MOVL $-1, 20(SP) // r1
+ MOVL $-1, 24(SP) // r2
+ MOVL AX, 28(SP) // errno
+ RET
+ok1:
+ MOVL AX, 20(SP) // r1
+ MOVL DX, 24(SP) // r2 ???
+ MOVL $0, 28(SP) // errno
+ RET
diff --git a/src/pkg/syscall/asm_darwin_amd64.s b/src/pkg/syscall/asm_darwin_amd64.s
new file mode 100644
index 000000000..e1527977f
--- /dev/null
+++ b/src/pkg/syscall/asm_darwin_amd64.s
@@ -0,0 +1,74 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//
+// System call support for AMD64, Darwin
+//
+
+// func Syscall(trap int64, a1, a2, a3 int64) (r1, r2, err int64);
+// func Syscall6(trap int64, a1, a2, a3, a4, a5, a6 int64) (r1, r2, err int64);
+// Trap # in AX, args in DI SI DX, return in AX DX
+
+TEXT syscall·Syscall(SB),7,$0
+ CALL sys·entersyscall(SB)
+ MOVQ 16(SP), DI
+ MOVQ 24(SP), SI
+ MOVQ 32(SP), DX
+ MOVQ 8(SP), AX // syscall entry
+ ADDQ $0x2000000, AX
+ SYSCALL
+ JCC ok
+ MOVQ $-1, 40(SP) // r1
+ MOVQ $0, 48(SP) // r2
+ MOVQ AX, 56(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+ok:
+ MOVQ AX, 40(SP) // r1
+ MOVQ DX, 48(SP) // r2
+ MOVQ $0, 56(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+
+TEXT syscall·Syscall6(SB),7,$0
+ CALL sys·entersyscall(SB)
+ MOVQ 16(SP), DI
+ MOVQ 24(SP), SI
+ MOVQ 32(SP), DX
+ MOVQ 40(SP), R10
+ MOVQ 48(SP), R8
+ MOVQ 56(SP), R9
+ MOVQ 8(SP), AX // syscall entry
+ ADDQ $0x2000000, AX
+ SYSCALL
+ JCC ok6
+ MOVQ $-1, 64(SP) // r1
+ MOVQ $0, 72(SP) // r2
+ MOVQ AX, 80(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+ok6:
+ MOVQ AX, 64(SP) // r1
+ MOVQ DX, 72(SP) // r2
+ MOVQ $0, 80(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+
+TEXT syscall·RawSyscall(SB),7,$0
+ MOVQ 16(SP), DI
+ MOVQ 24(SP), SI
+ MOVQ 32(SP), DX
+ MOVQ 8(SP), AX // syscall entry
+ ADDQ $0x2000000, AX
+ SYSCALL
+ JCC ok1
+ MOVQ $-1, 40(SP) // r1
+ MOVQ $0, 48(SP) // r2
+ MOVQ AX, 56(SP) // errno
+ RET
+ok1:
+ MOVQ AX, 40(SP) // r1
+ MOVQ DX, 48(SP) // r2
+ MOVQ $0, 56(SP) // errno
+ RET
diff --git a/src/pkg/syscall/asm_linux_386.s b/src/pkg/syscall/asm_linux_386.s
new file mode 100644
index 000000000..c6b01792d
--- /dev/null
+++ b/src/pkg/syscall/asm_linux_386.s
@@ -0,0 +1,108 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//
+// System calls for 386, Linux
+//
+
+// func Syscall(trap int64, a1, a2, a3 int64) (r1, r2, err int64);
+// Trap # in AX, args in BX CX DX SI DI, return in AX
+
+TEXT syscall·Syscall(SB),7,$0
+ CALL sys·entersyscall(SB)
+ MOVL 4(SP), AX // syscall entry
+ MOVL 8(SP), BX
+ MOVL 12(SP), CX
+ MOVL 16(SP), DX
+ MOVL $0, SI
+ MOVL $0, DI
+ INT $0x80
+ CMPL AX, $0xfffff001
+ JLS ok
+ MOVL $-1, 20(SP) // r1
+ MOVL $0, 24(SP) // r2
+ NEGL AX
+ MOVL AX, 28(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+ok:
+ MOVL AX, 20(SP) // r1
+ MOVL DX, 24(SP) // r2
+ MOVL $0, 28(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+
+// Actually Syscall5 but the rest of the code expects it to be named Syscall6.
+TEXT syscall·Syscall6(SB),7,$0
+ CALL sys·entersyscall(SB)
+ MOVL 4(SP), AX // syscall entry
+ MOVL 8(SP), BX
+ MOVL 12(SP), CX
+ MOVL 16(SP), DX
+ MOVL 20(SP), SI
+ MOVL 24(SP), DI
+ // 28(SP) is ignored
+ INT $0x80
+ CMPL AX, $0xfffff001
+ JLS ok6
+ MOVL $-1, 32(SP) // r1
+ MOVL $0, 36(SP) // r2
+ NEGL AX
+ MOVL AX, 40(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+ok6:
+ MOVL AX, 32(SP) // r1
+ MOVL DX, 36(SP) // r2
+ MOVL $0, 40(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+
+TEXT syscall·RawSyscall(SB),7,$0
+ MOVL 4(SP), AX // syscall entry
+ MOVL 8(SP), BX
+ MOVL 12(SP), CX
+ MOVL 16(SP), DX
+ MOVL $0, SI
+ MOVL $0, DI
+ INT $0x80
+ CMPL AX, $0xfffff001
+ JLS ok1
+ MOVL $-1, 20(SP) // r1
+ MOVL $0, 24(SP) // r2
+ NEGL AX
+ MOVL AX, 28(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+ok1:
+ MOVL AX, 20(SP) // r1
+ MOVL DX, 24(SP) // r2
+ MOVL $0, 28(SP) // errno
+ RET
+
+#define SYS_SOCKETCALL 102 /* from zsysnum_linux_386.go */
+
+// func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, errno int)
+// Kernel interface gets call sub-number and pointer to a0.
+TEXT syscall·socketcall(SB),7,$0
+ CALL sys·entersyscall(SB)
+ MOVL $SYS_SOCKETCALL, AX // syscall entry
+ MOVL 4(SP), BX // socket call number
+ LEAL 8(SP), CX // pointer to call arguments
+ MOVL $0, DX
+ MOVL $0, SI
+ MOVL $0, DI
+ INT $0x80
+ CMPL AX, $0xfffff001
+ JLS oksock
+ MOVL $-1, 28(SP) // n
+ NEGL AX
+ MOVL AX, 32(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+oksock:
+ MOVL AX, 28(SP) // n
+ MOVL $0, 32(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
diff --git a/src/pkg/syscall/asm_linux_amd64.s b/src/pkg/syscall/asm_linux_amd64.s
new file mode 100644
index 000000000..cb93b481a
--- /dev/null
+++ b/src/pkg/syscall/asm_linux_amd64.s
@@ -0,0 +1,78 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//
+// System calls for AMD64, Linux
+//
+
+// func Syscall(trap int64, a1, a2, a3 int64) (r1, r2, err int64);
+// Trap # in AX, args in DI SI DX R10 R8 R9, return in AX DX
+// Note that this differs from "standard" ABI convention, which
+// would pass 4th arg in CX, not R10.
+
+TEXT syscall·Syscall(SB),7,$0
+ CALL sys·entersyscall(SB)
+ MOVQ 16(SP), DI
+ MOVQ 24(SP), SI
+ MOVQ 32(SP), DX
+ MOVQ 8(SP), AX // syscall entry
+ SYSCALL
+ CMPQ AX, $0xfffffffffffff001
+ JLS ok
+ MOVQ $-1, 40(SP) // r1
+ MOVQ $0, 48(SP) // r2
+ NEGQ AX
+ MOVQ AX, 56(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+ok:
+ MOVQ AX, 40(SP) // r1
+ MOVQ DX, 48(SP) // r2
+ MOVQ $0, 56(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+
+TEXT syscall·Syscall6(SB),7,$0
+ CALL sys·entersyscall(SB)
+ MOVQ 16(SP), DI
+ MOVQ 24(SP), SI
+ MOVQ 32(SP), DX
+ MOVQ 40(SP), R10
+ MOVQ 48(SP), R8
+ MOVQ 56(SP), R9
+ MOVQ 8(SP), AX // syscall entry
+ SYSCALL
+ CMPQ AX, $0xfffffffffffff001
+ JLS ok6
+ MOVQ $-1, 64(SP) // r1
+ MOVQ $0, 72(SP) // r2
+ NEGQ AX
+ MOVQ AX, 80(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+ok6:
+ MOVQ AX, 64(SP) // r1
+ MOVQ DX, 72(SP) // r2
+ MOVQ $0, 80(SP) // errno
+ CALL sys·exitsyscall(SB)
+ RET
+
+TEXT syscall·RawSyscall(SB),7,$0
+ MOVQ 16(SP), DI
+ MOVQ 24(SP), SI
+ MOVQ 32(SP), DX
+ MOVQ 8(SP), AX // syscall entry
+ SYSCALL
+ CMPQ AX, $0xfffffffffffff001
+ JLS ok1
+ MOVQ $-1, 40(SP) // r1
+ MOVQ $0, 48(SP) // r2
+ NEGQ AX
+ MOVQ AX, 56(SP) // errno
+ RET
+ok1:
+ MOVQ AX, 40(SP) // r1
+ MOVQ DX, 48(SP) // r2
+ MOVQ $0, 56(SP) // errno
+ RET
diff --git a/src/pkg/syscall/errstr.go b/src/pkg/syscall/errstr.go
new file mode 100644
index 000000000..67a529d34
--- /dev/null
+++ b/src/pkg/syscall/errstr.go
@@ -0,0 +1,30 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall
+
+import "syscall"
+
+func str(val int) string { // do it here rather than with fmt to avoid dependency
+ if val < 0 {
+ return "-" + str(-val);
+ }
+ var buf [32]byte; // big enough for int64
+ i := len(buf)-1;
+ for val >= 10 {
+ buf[i] = byte(val%10 + '0');
+ i--;
+ val /= 10;
+ }
+ buf[i] = byte(val + '0');
+ return string(buf[i:len(buf)]);
+}
+
+func Errstr(errno int) string {
+ if errno < 0 || errno >= int(len(errors)) {
+ return "error " + str(errno)
+ }
+ return errors[errno]
+}
+
diff --git a/src/pkg/syscall/exec.go b/src/pkg/syscall/exec.go
new file mode 100644
index 000000000..58fb05863
--- /dev/null
+++ b/src/pkg/syscall/exec.go
@@ -0,0 +1,305 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Fork, exec, wait, etc.
+
+package syscall
+
+import (
+ "sync";
+ "syscall";
+ "unsafe";
+)
+
+// Lock synchronizing creation of new file descriptors with fork.
+//
+// We want the child in a fork/exec sequence to inherit only the
+// file descriptors we intend. To do that, we mark all file
+// descriptors close-on-exec and then, in the child, explicitly
+// unmark the ones we want the exec'ed program to keep.
+// Unix doesn't make this easy: there is, in general, no way to
+// allocate a new file descriptor close-on-exec. Instead you
+// have to allocate the descriptor and then mark it close-on-exec.
+// If a fork happens between those two events, the child's exec
+// will inherit an unwanted file descriptor.
+//
+// This lock solves that race: the create new fd/mark close-on-exec
+// operation is done holding ForkLock for reading, and the fork itself
+// is done holding ForkLock for writing. At least, that's the idea.
+// There are some complications.
+//
+// Some system calls that create new file descriptors can block
+// for arbitrarily long times: open on a hung NFS server or named
+// pipe, accept on a socket, and so on. We can't reasonably grab
+// the lock across those operations.
+//
+// It is worse to inherit some file descriptors than others.
+// If a non-malicious child accidentally inherits an open ordinary file,
+// that's not a big deal. On the other hand, if a long-lived child
+// accidentally inherits the write end of a pipe, then the reader
+// of that pipe will not see EOF until that child exits, potentially
+// causing the parent program to hang. This is a common problem
+// in threaded C programs that use popen.
+//
+// Luckily, the file descriptors that are most important not to
+// inherit are not the ones that can take an arbitrarily long time
+// to create: pipe returns instantly, and the net package uses
+// non-blocking I/O to accept on a listening socket.
+// The rules for which file descriptor-creating operations use the
+// ForkLock are as follows:
+//
+// 1) Pipe. Does not block. Use the ForkLock.
+// 2) Socket. Does not block. Use the ForkLock.
+// 3) Accept. If using non-blocking mode, use the ForkLock.
+// Otherwise, live with the race.
+// 4) Open. Can block. Use O_CLOEXEC if available (Linux).
+// Otherwise, live with the race.
+// 5) Dup. Does not block. Use the ForkLock.
+// On Linux, could use fcntl F_DUPFD_CLOEXEC
+// instead of the ForkLock, but only for dup(fd, -1).
+
+var ForkLock sync.RWMutex
+
+// Convert array of string to array
+// of NUL-terminated byte pointer.
+func StringArrayPtr(ss []string) []*byte {
+ bb := make([]*byte, len(ss)+1);
+ for i := 0; i < len(ss); i++ {
+ bb[i] = StringBytePtr(ss[i]);
+ }
+ bb[len(ss)] = nil;
+ return bb;
+}
+
+func CloseOnExec(fd int) {
+ fcntl(fd, F_SETFD, FD_CLOEXEC);
+}
+
+func SetNonblock(fd int, nonblocking bool) (errno int) {
+ flag, err := fcntl(fd, F_GETFL, 0);
+ if err != 0 {
+ return err;
+ }
+ if nonblocking {
+ flag |= O_NONBLOCK;
+ } else {
+ flag &= ^O_NONBLOCK;
+ }
+ flag, err = fcntl(fd, F_SETFL, flag);
+ return err;
+}
+
+
+// Fork, dup fd onto 0..len(fd), and exec(argv0, argvv, envv) in child.
+// If a dup or exec fails, write the errno int to pipe.
+// (Pipe is close-on-exec so if exec succeeds, it will be closed.)
+// In the child, this function must not acquire any locks, because
+// they might have been locked at the time of the fork. This means
+// no rescheduling, no malloc calls, and no new stack segments.
+// The calls to RawSyscall are okay because they are assembly
+// functions that do not grow the stack.
+func forkAndExecInChild(argv0 *byte, argv []*byte, envv []*byte, dir *byte, fd []int, pipe int)
+ (pid int, err int)
+{
+ // Declare all variables at top in case any
+ // declarations require heap allocation (e.g., err1).
+ var r1, r2, err1 uintptr;
+ var nextfd int;
+ var i int;
+
+ darwin := OS == "darwin";
+
+ // About to call fork.
+ // No more allocation or calls of non-assembly functions.
+ r1, r2, err1 = RawSyscall(SYS_FORK, 0, 0, 0);
+ if err1 != 0 {
+ return 0, int(err1)
+ }
+
+ // On Darwin:
+ // r1 = child pid in both parent and child.
+ // r2 = 0 in parent, 1 in child.
+ // Convert to normal Unix r1 = 0 in child.
+ if darwin && r2 == 1 {
+ r1 = 0;
+ }
+
+ if r1 != 0 {
+ // parent; return PID
+ return int(r1), 0
+ }
+
+ // Fork succeeded, now in child.
+
+ // Chdir
+ if dir != nil {
+ r1, r2, err1 = RawSyscall(SYS_CHDIR, uintptr(unsafe.Pointer(dir)), 0, 0);
+ if err1 != 0 {
+ goto childerror;
+ }
+ }
+
+ // Pass 1: look for fd[i] < i and move those up above len(fd)
+ // so that pass 2 won't stomp on an fd it needs later.
+ nextfd = int(len(fd));
+ if pipe < nextfd {
+ r1, r2, err1 = RawSyscall(SYS_DUP2, uintptr(pipe), uintptr(nextfd), 0);
+ if err1 != 0 {
+ goto childerror;
+ }
+ RawSyscall(SYS_FCNTL, uintptr(nextfd), F_SETFD, FD_CLOEXEC);
+ pipe = nextfd;
+ nextfd++;
+ }
+ for i = 0; i < len(fd); i++ {
+ if fd[i] >= 0 && fd[i] < int(i) {
+ r1, r2, err1 = RawSyscall(SYS_DUP2, uintptr(fd[i]), uintptr(nextfd), 0);
+ if err1 != 0 {
+ goto childerror;
+ }
+ RawSyscall(SYS_FCNTL, uintptr(nextfd), F_SETFD, FD_CLOEXEC);
+ fd[i] = nextfd;
+ nextfd++;
+ if nextfd == pipe { // don't stomp on pipe
+ nextfd++;
+ }
+ }
+ }
+
+ // Pass 2: dup fd[i] down onto i.
+ for i = 0; i < len(fd); i++ {
+ if fd[i] == -1 {
+ RawSyscall(SYS_CLOSE, uintptr(i), 0, 0);
+ continue;
+ }
+ if fd[i] == int(i) {
+ // dup2(i, i) won't clear close-on-exec flag on Linux,
+ // probably not elsewhere either.
+ r1, r2, err1 = RawSyscall(SYS_FCNTL, uintptr(fd[i]), F_SETFD, 0);
+ if err1 != 0 {
+ goto childerror;
+ }
+ continue;
+ }
+ // The new fd is created NOT close-on-exec,
+ // which is exactly what we want.
+ r1, r2, err1 = RawSyscall(SYS_DUP2, uintptr(fd[i]), uintptr(i), 0);
+ if err1 != 0 {
+ goto childerror;
+ }
+ }
+
+ // By convention, we don't close-on-exec the fds we are
+ // started with, so if len(fd) < 3, close 0, 1, 2 as needed.
+ // Programs that know they inherit fds >= 3 will need
+ // to set them close-on-exec.
+ for i = len(fd); i < 3; i++ {
+ RawSyscall(SYS_CLOSE, uintptr(i), 0, 0);
+ }
+
+ // Time to exec.
+ r1, r2, err1 = RawSyscall(SYS_EXECVE,
+ uintptr(unsafe.Pointer(argv0)),
+ uintptr(unsafe.Pointer(&argv[0])),
+ uintptr(unsafe.Pointer(&envv[0])));
+
+childerror:
+ // send error code on pipe
+ RawSyscall(SYS_WRITE, uintptr(pipe), uintptr(unsafe.Pointer(&err1)), uintptr(unsafe.Sizeof(err1)));
+ for {
+ RawSyscall(SYS_EXIT, 253, 0, 0);
+ }
+
+ // Calling panic is not actually safe,
+ // but the for loop above won't break
+ // and this shuts up the compiler.
+ panic("unreached");
+}
+
+// Combination of fork and exec, careful to be thread safe.
+func ForkExec(argv0 string, argv []string, envv []string, dir string, fd []int)
+ (pid int, err int)
+{
+ var p [2]int;
+ var r1 int;
+ var n int;
+ var err1 uintptr;
+ var wstatus WaitStatus;
+
+ p[0] = -1;
+ p[1] = -1;
+
+ // Convert args to C form.
+ argv0p := StringBytePtr(argv0);
+ argvp := StringArrayPtr(argv);
+ envvp := StringArrayPtr(envv);
+ var dirp *byte;
+ if len(dir) > 0 {
+ dirp = StringBytePtr(dir);
+ }
+
+ // Acquire the fork lock so that no other threads
+ // create new fds that are not yet close-on-exec
+ // before we fork.
+ ForkLock.Lock();
+
+ // Allocate child status pipe close on exec.
+ if err = Pipe(&p); err != 0 {
+ goto error;
+ }
+ var val int;
+ if val, err = fcntl(p[0], F_SETFD, FD_CLOEXEC); err != 0 {
+ goto error;
+ }
+ if val, err = fcntl(p[1], F_SETFD, FD_CLOEXEC); err != 0 {
+ goto error;
+ }
+
+ // Kick off child.
+ pid, err = forkAndExecInChild(argv0p, argvp, envvp, dirp, fd, p[1]);
+ if err != 0 {
+ error:
+ if p[0] >= 0 {
+ Close(p[0]);
+ Close(p[1]);
+ }
+ ForkLock.Unlock();
+ return 0, err
+ }
+ ForkLock.Unlock();
+
+ // Read child error status from pipe.
+ Close(p[1]);
+ n, err = read(p[0], (*byte)(unsafe.Pointer(&err1)), unsafe.Sizeof(err1));
+ Close(p[0]);
+ if err != 0 || n != 0 {
+ if n == unsafe.Sizeof(err1) {
+ err = int(err1);
+ }
+ if err == 0 {
+ err = EPIPE;
+ }
+
+ // Child failed; wait for it to exit, to make sure
+ // the zombies don't accumulate.
+ pid1, err1 := Wait4(pid, &wstatus, 0, nil);
+ for err1 == EINTR {
+ pid1, err1 = Wait4(pid, &wstatus, 0, nil);
+ }
+ return 0, err
+ }
+
+ // Read got EOF, so pipe closed on exec, so exec succeeded.
+ return pid, 0
+}
+
+// Ordinary exec.
+func Exec(argv0 string, argv []string, envv []string) (err int) {
+ r1, r2, err1 := RawSyscall(SYS_EXECVE,
+ uintptr(unsafe.Pointer(StringBytePtr(argv0))),
+ uintptr(unsafe.Pointer(&StringArrayPtr(argv)[0])),
+ uintptr(unsafe.Pointer(&StringArrayPtr(envv)[0])));
+ return int(err1);
+}
+
diff --git a/src/pkg/syscall/mkerrors b/src/pkg/syscall/mkerrors
new file mode 100755
index 000000000..015f02145
--- /dev/null
+++ b/src/pkg/syscall/mkerrors
@@ -0,0 +1,94 @@
+#!/bin/sh
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+
+# Generate Go code listing error values (ENAMETOOLONG etc)
+# and signal values (SIGALRM etc). They're unrelated except
+# that we use the same method for finding them.
+
+errors=$(
+ echo '#include <errno.h>' |
+ # The gcc command line prints all the #defines
+ # it encounters while processing the input
+ gcc -x c - -E -dM |
+ egrep -h '#define E[A-Z0-9_]+ ' $files |
+ sed 's/#define //; s/ .*//'
+)
+
+signals=$(
+ echo '#include <sys/signal.h>' |
+ gcc -x c - -E -dM |
+ egrep -h '#define SIG[^_]' |
+ egrep -v '#define (SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))' |
+ sed 's/#define //; s/ .*//'
+)
+
+# Write godefs input.
+(
+ echo '#include <errno.h>'
+ echo '#include <signal.h>'
+ echo 'enum {'
+ for i in $errors $signals
+ do
+ echo '$'"$i = $i,"
+ done
+ echo '};'
+) >_errors.c
+
+echo '// mkerrors' "$@"
+echo '// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT'
+echo
+godefs -gsyscall "$@" _errors.c
+
+# Run C program to print error strings.
+(
+ echo "
+#include <stdio.h>
+#include <errno.h>
+#include <ctype.h>
+#include <string.h>
+
+#define nelem(x) (sizeof(x)/sizeof((x)[0]))
+
+enum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below
+
+int errors[] = {
+"
+ for i in $errors
+ do
+ echo ' '$i,
+ done
+
+ echo '
+};
+
+int
+main(void)
+{
+ int i, j, e;
+ char buf[1024];
+
+ printf("\n\n// Error table\n");
+ printf("var errors = [...]string {\n");
+ for(i=0; i<nelem(errors); i++) {
+ e = errors[i];
+ for(j=0; j<i; j++)
+ if(errors[j] == e) // duplicate value
+ goto next;
+ strcpy(buf, strerror(e));
+ // lowercase first letter: Bad -> bad, but STREAM -> STREAM.
+ if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)
+ buf[0] += a - A;
+ printf("\t%d: \"%s\",\n", e, buf);
+ next:;
+ }
+ printf("}\n\n");
+}
+
+'
+) >_errors.c
+
+gcc -o _errors _errors.c && ./_errors
+rm -f _errors.c _errors
diff --git a/src/pkg/syscall/mksyscall b/src/pkg/syscall/mksyscall
new file mode 100755
index 000000000..850fc1e3f
--- /dev/null
+++ b/src/pkg/syscall/mksyscall
@@ -0,0 +1,170 @@
+#!/usr/bin/perl
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+# This program reads a file containing function prototypes
+# (like syscall_darwin.go) and generates system call bodies.
+# The prototypes are marked by lines beginning with "//sys"
+# and read like func declarations if //sys is replaced by func, but:
+# * The parameter lists must give a name for each argument.
+# This includes return parameters.
+# * The parameter lists must give a type for each argument:
+# the (x, y, z int) shorthand is not allowed.
+# * If the return parameter is an error number, it must be named errno.
+
+$cmdline = "mksyscall " . join(' ', @ARGV);
+$errors = 0;
+$_32bit = "";
+
+if($ARGV[0] eq "-b32") {
+ $_32bit = "big-endian";
+ shift;
+} elsif($ARGV[0] eq "-l32") {
+ $_32bit = "little-endian";
+ shift;
+}
+
+if($ARGV[0] =~ /^-/) {
+ print STDERR "usage: mksyscall [-b32 | -l32] [file ...]\n";
+ exit 1;
+}
+
+sub parseparamlist($) {
+ my ($list) = @_;
+ $list =~ s/^\s*//;
+ $list =~ s/\s*$//;
+ if($list eq "") {
+ return ();
+ }
+ return split(/\s*,\s*/, $list);
+}
+
+sub parseparam($) {
+ my ($p) = @_;
+ if($p !~ /^(\S*) (\S*)$/) {
+ print STDERR "$ARGV:$.: malformed parameter: $p\n";
+ $errors = 1;
+ return ("xx", "int");
+ }
+ return ($1, $2);
+}
+
+$text = "";
+while(<>) {
+ chomp;
+ s/\s+/ /g;
+ s/^\s+//;
+ s/\s+$//;
+ next if !/^\/\/sys /;
+
+ # Line must be of the form
+ # func Open(path string, mode int, perm int) (fd int, errno int)
+ # Split into name, in params, out params.
+ if(!/^\/\/sys (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(SYS_[A-Z0-9_]+))?$/) {
+ print STDERR "$ARGV:$.: malformed //sys declaration\n";
+ $errors = 1;
+ next;
+ }
+ my ($func, $in, $out, $sysname) = ($1, $2, $3, $4);
+
+ # Split argument lists on comma.
+ my @in = parseparamlist($in);
+ my @out = parseparamlist($out);
+
+ # Go function header.
+ $text .= sprintf "func %s(%s) (%s) {\n", $func, join(', ', @in), join(', ', @out);
+
+ # Prepare arguments to Syscall.
+ my @args = ();
+ my $n = 0;
+ foreach my $p (@in) {
+ my ($name, $type) = parseparam($p);
+ if($type =~ /^\*/) {
+ push @args, "uintptr(unsafe.Pointer($name))";
+ } elsif($type eq "string") {
+ push @args, "uintptr(unsafe.Pointer(StringBytePtr($name)))";
+ } elsif($type =~ /^\[\](.*)/) {
+ # Convert slice into pointer, length.
+ # Have to be careful not to take address of &a[0] if len == 0:
+ # pass nil in that case.
+ $text .= "\tvar _p$n *$1;\n";
+ $text .= "\tif len($name) > 0 { _p$n = \&${name}[0]; }\n";
+ push @args, "uintptr(unsafe.Pointer(_p$n))", "uintptr(len($name))";
+ $n++;
+ } elsif($type eq "int64" && $_32bit ne "") {
+ if($_32bit eq "big-endian") {
+ push @args, "uintptr($name >> 32)", "uintptr($name)";
+ } else {
+ push @args, "uintptr($name)", "uintptr($name >> 32)";
+ }
+ } else {
+ push @args, "uintptr($name)";
+ }
+ }
+
+ # Determine which form to use; pad args with zeros.
+ my $asm = "Syscall";
+ if(@args <= 3) {
+ while(@args < 3) {
+ push @args, "0";
+ }
+ } elsif(@args <= 6) {
+ $asm = "Syscall6";
+ while(@args < 6) {
+ push @args, "0";
+ }
+ } else {
+ print STDERR "$ARGV:$.: too many arguments to system call\n";
+ }
+
+ # System call number.
+ if($sysname eq "") {
+ $sysname = "SYS_$func";
+ $sysname =~ s/([a-z])([A-Z])/${1}_$2/g; # turn FooBar into Foo_Bar
+ $sysname =~ y/a-z/A-Z/;
+ }
+
+ # Actual call.
+ my $args = join(', ', @args);
+ $text .= "\tr0, r1, e1 := $asm($sysname, $args);\n";
+
+ # Assign return values.
+ for(my $i=0; $i<@out; $i++) {
+ my $p = $out[$i];
+ my ($name, $type) = parseparam($p);
+ my $reg = "";
+ if($name eq "errno") {
+ $reg = "e1";
+ } else {
+ $reg = sprintf("r%d", $i);
+ }
+ if($type eq "bool") {
+ $reg = "$reg != 0";
+ }
+ $text .= "\t$name = $type($reg);\n";
+ }
+
+ $text .= "\treturn;\n";
+ $text .= "}\n\n";
+}
+
+if($errors) {
+ exit 1;
+}
+
+print <<EOF;
+// $cmdline
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package syscall
+
+import (
+ "syscall";
+ "unsafe";
+)
+
+$text
+
+EOF
+exit 0;
diff --git a/src/pkg/syscall/mksysnum_darwin b/src/pkg/syscall/mksysnum_darwin
new file mode 100755
index 000000000..74e2dfde9
--- /dev/null
+++ b/src/pkg/syscall/mksysnum_darwin
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+#
+# Generate system call table for Darwin from master list
+# (for example, xnu-1228/bsd/kern/syscalls.master).
+
+my $command = "mksysnum_darwin " . join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+package syscall
+
+const (
+EOF
+
+while(<>){
+ if(/^([0-9]+)\s+ALL\s+({ \S+\s+(\w+).*})/){
+ my $num = $1;
+ my $proto = $2;
+ my $name = "SYS_$3";
+ $name =~ y/a-z/A-Z/;
+
+ # There are multiple entries for enosys and nosys, so comment them out.
+ if($name =~ /^SYS_E?NOSYS$/){
+ $name = "// $name";
+ }
+
+ print " $name = $num; // $proto\n";
+ }
+}
+
+print <<EOF;
+)
+EOF
diff --git a/src/pkg/syscall/mksysnum_linux b/src/pkg/syscall/mksysnum_linux
new file mode 100755
index 000000000..2252bfd7c
--- /dev/null
+++ b/src/pkg/syscall/mksysnum_linux
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+my $command = "mklinux ". join(' ', @ARGV);
+
+print <<EOF;
+// Generated by mklinux; DO NOT EDIT.
+// $command
+
+package syscall
+
+const(
+EOF
+
+while(<>){
+ if(/^#define __NR_(\w+)\s+([0-9]+)/){
+ my $name = "SYS_$1";
+ my $num = $2;
+ $name =~ y/a-z/A-Z/;
+ print " $name = $num;\n";
+ }
+}
+
+print <<EOF;
+)
+
+func _darwin_system_call_conflict() {
+}
+EOF
diff --git a/src/pkg/syscall/syscall.go b/src/pkg/syscall/syscall.go
new file mode 100644
index 000000000..5ee44e3e8
--- /dev/null
+++ b/src/pkg/syscall/syscall.go
@@ -0,0 +1,37 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This package contains an interface to the low-level operating system
+// primitives. The details vary depending on the underlying system.
+// Its primary use is inside other packages that provide a more portable
+// interface to the system, such as "os", "time" and "net". Use those
+// packages rather than this one if you can.
+// For details of the functions and data types in this package consult
+// the manuals for the appropriate operating system.
+package syscall
+
+import (
+ "syscall";
+ "unsafe";
+)
+
+func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)
+func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
+func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)
+
+// StringByteSlice returns a NUL-terminated slice of bytes
+// containing the text of s.
+func StringByteSlice(s string) []byte {
+ a := make([]byte, len(s)+1);
+ for i := 0; i < len(s); i++ {
+ a[i] = s[i];
+ }
+ return a;
+}
+
+// StringBytePtr returns a pointer to a NUL-terminated array of bytes
+// containing the text of s.
+func StringBytePtr(s string) *byte {
+ return &StringByteSlice(s)[0];
+}
diff --git a/src/pkg/syscall/syscall_darwin.go b/src/pkg/syscall/syscall_darwin.go
new file mode 100644
index 000000000..011fc7a0f
--- /dev/null
+++ b/src/pkg/syscall/syscall_darwin.go
@@ -0,0 +1,663 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Darwin system calls.
+// This file is compiled as ordinary Go code,
+// but it is also input to mksyscall,
+// which parses the //sys lines and generates system call stubs.
+// Note that sometimes we use a lowercase //sys name and
+// wrap it in our own nicer implementation.
+
+package syscall
+
+import (
+ "syscall";
+ "unsafe";
+)
+
+const OS = "darwin"
+
+/*
+ * Pseudo-system calls
+ */
+// The const provides a compile-time constant so clients
+// can adjust to whether there is a working Getwd and avoid
+// even linking this function into the binary. See ../os/getwd.go.
+const ImplementsGetwd = false
+
+func Getwd() (string, int) {
+ return "", ENOTSUP;
+}
+
+
+/*
+ * Wrapped
+ */
+
+//sys getgroups(ngid int, gid *_Gid_t) (n int, errno int)
+//sys setgroups(ngid int, gid *_Gid_t) (errno int)
+
+func Getgroups() (gids []int, errno int) {
+ n, err := getgroups(0, nil);
+ if err != 0 {
+ return nil, errno;
+ }
+ if n == 0 {
+ return nil, 0;
+ }
+
+ // Sanity check group count. Max is 16 on BSD.
+ if n < 0 || n > 1000 {
+ return nil, EINVAL;
+ }
+
+ a := make([]_Gid_t, n);
+ n, err = getgroups(n, &a[0]);
+ if err != 0 {
+ return nil, errno;
+ }
+ gids = make([]int, n);
+ for i, v := range a[0:n] {
+ gids[i] = int(v);
+ }
+ return;
+}
+
+func Setgroups(gids []int) (errno int) {
+ if len(gids) == 0 {
+ return setgroups(0, nil);
+ }
+
+ a := make([]_Gid_t, len(gids));
+ for i, v := range gids {
+ a[i] = _Gid_t(v);
+ }
+ return setgroups(len(a), &a[0]);
+}
+
+// Wait status is 7 bits at bottom, either 0 (exited),
+// 0x7F (stopped), or a signal number that caused an exit.
+// The 0x80 bit is whether there was a core dump.
+// An extra number (exit code, signal causing a stop)
+// is in the high bits.
+
+type WaitStatus uint32
+
+const (
+ mask = 0x7F;
+ core = 0x80;
+ shift = 8;
+
+ exited = 0;
+ stopped = 0x7F;
+)
+
+func (w WaitStatus) Exited() bool {
+ return w&mask == exited;
+}
+
+func (w WaitStatus) ExitStatus() int {
+ if w&mask != exited {
+ return -1;
+ }
+ return int(w >> shift);
+}
+
+func (w WaitStatus) Signaled() bool {
+ return w&mask != stopped && w&mask != 0;
+}
+
+func (w WaitStatus) Signal() int {
+ sig := int(w & mask);
+ if sig == stopped || sig == 0 {
+ return -1;
+ }
+ return sig;
+}
+
+func (w WaitStatus) CoreDump() bool {
+ return w.Signaled() && w&core != 0;
+}
+
+func (w WaitStatus) Stopped() bool {
+ return w&mask == stopped && w>>shift != SIGSTOP;
+}
+
+func (w WaitStatus) Continued() bool {
+ return w&mask == stopped && w>>shift == SIGSTOP;
+}
+
+func (w WaitStatus) StopSignal() int {
+ if !w.Stopped() {
+ return -1;
+ }
+ return int(w >> shift) & 0xFF;
+}
+
+//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int)
+func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, errno int) {
+ var status _C_int;
+ wpid, errno = wait4(pid, &status, options, rusage);
+ if wstatus != nil {
+ *wstatus = WaitStatus(status);
+ }
+ return;
+}
+
+//sys pipe() (r int, w int, errno int)
+func Pipe(p []int) (errno int) {
+ if len(p) != 2 {
+ return EINVAL;
+ }
+ p[0], p[1], errno = pipe();
+ return;
+}
+
+// TODO(rsc): How does 386 return an int64 newoffset?
+//sys lseek(fd int, offset int64, whence int) (newoffset uintptr, errno int)
+func Seek(fd int, offset int64, whence int) (newoffset int64, errno int) {
+ n, e := lseek(fd, offset, whence);
+ return int64(n), e;
+}
+
+func Sleep(ns int64) (errno int) {
+ tv := NsecToTimeval(ns);
+ return Select(0, nil, nil, nil, &tv);
+}
+
+//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int)
+//sys bind(s int, addr uintptr, addrlen _Socklen) (errno int)
+//sys connect(s int, addr uintptr, addrlen _Socklen) (errno int)
+//sys socket(domain int, typ int, proto int) (fd int, errno int)
+//sys setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int)
+
+// For testing: clients can set this flag to force
+// creation of IPv6 sockets to return EAFNOSUPPORT.
+var SocketDisableIPv6 bool
+
+type Sockaddr interface {
+ sockaddr() (ptr uintptr, len _Socklen, errno int); // lowercase; only we can define Sockaddrs
+}
+
+type SockaddrInet4 struct {
+ Port int;
+ Addr [4]byte;
+ raw RawSockaddrInet4;
+}
+
+func (sa *SockaddrInet4) sockaddr() (uintptr, _Socklen, int) {
+ if sa.Port < 0 || sa.Port > 0xFFFF {
+ return 0, 0, EINVAL;
+ }
+ sa.raw.Len = SizeofSockaddrInet4;
+ sa.raw.Family = AF_INET;
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port));
+ p[0] = byte(sa.Port>>8);
+ p[1] = byte(sa.Port);
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.raw.Addr[i] = sa.Addr[i];
+ }
+ return uintptr(unsafe.Pointer(&sa.raw)), _Socklen(sa.raw.Len), 0;
+}
+
+type SockaddrInet6 struct {
+ Port int;
+ Addr [16]byte;
+ raw RawSockaddrInet6;
+}
+
+func (sa *SockaddrInet6) sockaddr() (uintptr, _Socklen, int) {
+ if sa.Port < 0 || sa.Port > 0xFFFF {
+ return 0, 0, EINVAL;
+ }
+ sa.raw.Len = SizeofSockaddrInet6;
+ sa.raw.Family = AF_INET6;
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port));
+ p[0] = byte(sa.Port>>8);
+ p[1] = byte(sa.Port);
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.raw.Addr[i] = sa.Addr[i];
+ }
+ return uintptr(unsafe.Pointer(&sa.raw)), _Socklen(sa.raw.Len), 0;
+}
+
+type SockaddrUnix struct {
+ Name string;
+ raw RawSockaddrUnix;
+}
+
+func (sa *SockaddrUnix) sockaddr() (uintptr, _Socklen, int) {
+ name := sa.Name;
+ n := len(name);
+ if n >= len(sa.raw.Path) || n == 0 {
+ return 0, 0, EINVAL;
+ }
+ sa.raw.Len = byte(3 + n); // 2 for Family, Len; 1 for NUL
+ sa.raw.Family = AF_UNIX;
+ for i := 0; i < n; i++ {
+ sa.raw.Path[i] = int8(name[i]);
+ }
+ return uintptr(unsafe.Pointer(&sa.raw)), _Socklen(sa.raw.Len), 0;
+}
+
+func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, int) {
+ switch rsa.Addr.Family {
+ case AF_UNIX:
+ pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa));
+ if pp.Len < 3 || pp.Len > SizeofSockaddrUnix {
+ return nil, EINVAL
+ }
+ sa := new(SockaddrUnix);
+ n := int(pp.Len) - 3; // subtract leading Family, Len, terminating NUL
+ for i := 0; i < n; i++ {
+ if pp.Path[i] == 0 {
+ // found early NUL; assume Len is overestimating
+ n = i;
+ break;
+ }
+ }
+ bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]));
+ sa.Name = string(bytes[0:n]);
+ return sa, 0;
+
+ case AF_INET:
+ pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa));
+ sa := new(SockaddrInet4);
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port));
+ sa.Port = int(p[0])<<8 + int(p[1]);
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.Addr[i] = pp.Addr[i];
+ }
+ return sa, 0;
+
+ case AF_INET6:
+ pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa));
+ sa := new(SockaddrInet6);
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port));
+ sa.Port = int(p[0])<<8 + int(p[1]);
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.Addr[i] = pp.Addr[i];
+ }
+ return sa, 0;
+ }
+ return nil, EAFNOSUPPORT;
+}
+
+func Accept(fd int) (nfd int, sa Sockaddr, errno int) {
+ var rsa RawSockaddrAny;
+ var len _Socklen = SizeofSockaddrAny;
+ nfd, errno = accept(fd, &rsa, &len);
+ if errno != 0 {
+ return;
+ }
+ sa, errno = anyToSockaddr(&rsa);
+ if errno != 0 {
+ Close(nfd);
+ nfd = 0;
+ }
+ return;
+}
+
+func Bind(fd int, sa Sockaddr) (errno int) {
+ ptr, n, err := sa.sockaddr();
+ if err != 0 {
+ return err;
+ }
+ return bind(fd, ptr, n);
+}
+
+func Connect(fd int, sa Sockaddr) (errno int) {
+ ptr, n, err := sa.sockaddr();
+ if err != 0 {
+ return err;
+ }
+ return connect(fd, ptr, n);
+}
+
+func Socket(domain, typ, proto int) (fd, errno int) {
+ if domain == AF_INET6 && SocketDisableIPv6 {
+ return -1, EAFNOSUPPORT
+ }
+ fd, errno = socket(domain, typ, proto);
+ return;
+}
+
+func SetsockoptInt(fd, level, opt int, value int) (errno int) {
+ var n = int32(value);
+ return setsockopt(fd, level, opt, uintptr(unsafe.Pointer(&n)), 4);
+}
+
+func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (errno int) {
+ return setsockopt(fd, level, opt, uintptr(unsafe.Pointer(tv)), unsafe.Sizeof(*tv));
+}
+
+func SetsockoptLinger(fd, level, opt int, l *Linger) (errno int) {
+ return setsockopt(fd, level, opt, uintptr(unsafe.Pointer(l)), unsafe.Sizeof(*l));
+}
+
+//sys kevent(kq int, change uintptr, nchange int, event uintptr, nevent int, timeout *Timespec) (n int, errno int)
+func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, errno int) {
+ var change, event uintptr;
+ if len(changes) > 0 {
+ change = uintptr(unsafe.Pointer(&changes[0]));
+ }
+ if len(events) > 0 {
+ event = uintptr(unsafe.Pointer(&events[0]));
+ }
+ return kevent(kq, change, len(changes), event, len(events), timeout);
+}
+
+// TODO: wrap
+// Acct(name nil-string) (errno int)
+// Futimes(fd int, timeval *Timeval) (errno int) // Pointer to 2 timevals!
+// Gethostuuid(uuid *byte, timeout *Timespec) (errno int)
+// Getpeername(fd int, addr *Sockaddr, addrlen *int) (errno int)
+// Getsockname(fd int, addr *Sockaddr, addrlen *int) (errno int)
+// Getsockopt(s int, level int, name int, val *byte, vallen *int) (errno int)
+// Madvise(addr *byte, len int, behav int) (errno int)
+// Mprotect(addr *byte, len int, prot int) (errno int)
+// Msync(addr *byte, len int, flags int) (errno int)
+// Munmap(addr *byte, len int) (errno int)
+// Ptrace(req int, pid int, addr uintptr, data int) (ret uintptr, errno int)
+// Recvfrom(s int, buf *byte, nbuf int, flags int, from *Sockaddr, fromlen *int) (n int, errno int)
+// Recvmsg(s int, msg *Msghdr, flags int) (n int, errno int)
+// Sendmsg(s int, msg *Msghdr, flags int) (n int, errno int)
+// Sendto(s int, buf *byte, nbuf int, flags int, to *Sockaddr, addrlen int) (errno int)
+// Utimes(path string, timeval *Timeval) (errno int) // Pointer to 2 timevals!
+//sys fcntl(fd int, cmd int, arg int) (val int, errno int)
+
+
+/*
+ * Exposed directly
+ */
+//sys Access(path string, flags int) (errno int)
+//sys Adjtime(delta *Timeval, olddelta *Timeval) (errno int)
+//sys Chdir(path string) (errno int)
+//sys Chflags(path string, flags int) (errno int)
+//sys Chmod(path string, mode int) (errno int)
+//sys Chown(path string, uid int, gid int) (errno int)
+//sys Chroot(path string) (errno int)
+//sys Close(fd int) (errno int)
+//sys Dup(fd int) (nfd int, errno int)
+//sys Dup2(from int, to int) (errno int)
+//sys Exchangedata(path1 string, path2 string, options int) (errno int)
+//sys Exit(code int)
+//sys Fchdir(fd int) (errno int)
+//sys Fchflags(path string, flags int) (errno int)
+//sys Fchmod(fd int, mode int) (errno int)
+//sys Fchown(fd int, uid int, gid int) (errno int)
+//sys Flock(fd int, how int) (errno int)
+//sys Fpathconf(fd int, name int) (val int, errno int)
+//sys Fstat(fd int, stat *Stat_t) (errno int) = SYS_FSTAT64
+//sys Fstatfs(fd int, stat *Statfs_t) (errno int) = SYS_FSTATFS64
+//sys Fsync(fd int) (errno int)
+//sys Ftruncate(fd int, length int64) (errno int)
+//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, errno int) = SYS_GETDIRENTRIES64
+//sys Getdtablesize() (size int)
+//sys Getegid() (egid int)
+//sys Geteuid() (uid int)
+//sys Getfsstat(buf []Statfs_t, flags int) (n int, errno int) = SYS_GETFSSTAT64
+//sys Getgid() (gid int)
+//sys Getpgid(pid int) (pgid int, errno int)
+//sys Getpgrp() (pgrp int)
+//sys Getpid() (pid int)
+//sys Getppid() (ppid int)
+//sys Getpriority(which int, who int) (prio int, errno int)
+//sys Getrlimit(which int, lim *Rlimit) (errno int)
+//sys Getrusage(who int, rusage *Rusage) (errno int)
+//sys Getsid(pid int) (sid int, errno int)
+//sys Getuid() (uid int)
+//sys Issetugid() (tainted bool)
+//sys Kill(pid int, signum int, posix int) (errno int)
+//sys Kqueue() (fd int, errno int)
+//sys Lchown(path string, uid int, gid int) (errno int)
+//sys Link(path string, link string) (errno int)
+//sys Listen(s int, backlog int) (errno int)
+//sys Lstat(path string, stat *Stat_t) (errno int) = SYS_LSTAT64
+//sys Mkdir(path string, mode int) (errno int)
+//sys Mkfifo(path string, mode int) (errno int)
+//sys Mknod(path string, mode int, dev int) (errno int)
+//sys Open(path string, mode int, perm int) (fd int, errno int)
+//sys Pathconf(path string, name int) (val int, errno int)
+//sys Pread(fd int, p []byte, offset int64) (n int, errno int)
+//sys Pwrite(fd int, p []byte, offset int64) (n int, errno int)
+//sys Read(fd int, p []byte) (n int, errno int)
+//sys Readlink(path string, buf []byte) (n int, errno int)
+//sys Rename(from string, to string) (errno int)
+//sys Revoke(path string) (errno int)
+//sys Rmdir(path string) (errno int)
+//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int)
+//sys Setegid(egid int) (errno int)
+//sys Seteuid(euid int) (errno int)
+//sys Setgid(gid int) (errno int)
+//sys Setlogin(name string) (errno int)
+//sys Setpgid(pid int, pgid int) (errno int)
+//sys Setpriority(which int, who int, prio int) (errno int)
+//sys Setprivexec(flag int) (errno int)
+//sys Setregid(rgid int, egid int) (errno int)
+//sys Setreuid(ruid int, euid int) (errno int)
+//sys Setrlimit(which int, lim *Rlimit) (errno int)
+//sys Setsid() (pid int, errno int)
+//sys Settimeofday(tp *Timeval) (errno int)
+//sys Setuid(uid int) (errno int)
+//sys Stat(path string, stat *Stat_t) (errno int) = SYS_STAT64
+//sys Statfs(path string, stat *Statfs_t) (errno int) = SYS_STATFS64
+//sys Symlink(path string, link string) (errno int)
+//sys Sync() (errno int)
+//sys Truncate(path string, length int64) (errno int)
+//sys Umask(newmask int) (errno int)
+//sys Undelete(path string) (errno int)
+//sys Unlink(path string) (errno int)
+//sys Unmount(path string, flags int) (errno int)
+//sys Write(fd int, p []byte) (n int, errno int)
+//sys read(fd int, buf *byte, nbuf int) (n int, errno int)
+//sys write(fd int, buf *byte, nbuf int) (n int, errno int)
+
+
+/*
+ * Unimplemented
+ */
+// Profil
+// Sigaction
+// Sigprocmask
+// Getlogin
+// Sigpending
+// Sigaltstack
+// Ioctl
+// Reboot
+// Execve
+// Vfork
+// Sbrk
+// Sstk
+// Ovadvise
+// Mincore
+// Setitimer
+// Swapon
+// Select
+// Sigsuspend
+// Readv
+// Writev
+// Nfssvc
+// Getfh
+// Quotactl
+// Mount
+// Csops
+// Waitid
+// Add_profil
+// Kdebug_trace
+// Sigreturn
+// Mmap
+// __Sysctl
+// Mlock
+// Munlock
+// Atsocket
+// Kqueue_from_portset_np
+// Kqueue_portset
+// Getattrlist
+// Setattrlist
+// Getdirentriesattr
+// Searchfs
+// Delete
+// Copyfile
+// Poll
+// Watchevent
+// Waitevent
+// Modwatch
+// Getxattr
+// Fgetxattr
+// Setxattr
+// Fsetxattr
+// Removexattr
+// Fremovexattr
+// Listxattr
+// Flistxattr
+// Fsctl
+// Initgroups
+// Posix_spawn
+// Nfsclnt
+// Fhopen
+// Minherit
+// Semsys
+// Msgsys
+// Shmsys
+// Semctl
+// Semget
+// Semop
+// Msgctl
+// Msgget
+// Msgsnd
+// Msgrcv
+// Shmat
+// Shmctl
+// Shmdt
+// Shmget
+// Shm_open
+// Shm_unlink
+// Sem_open
+// Sem_close
+// Sem_unlink
+// Sem_wait
+// Sem_trywait
+// Sem_post
+// Sem_getvalue
+// Sem_init
+// Sem_destroy
+// Open_extended
+// Umask_extended
+// Stat_extended
+// Lstat_extended
+// Fstat_extended
+// Chmod_extended
+// Fchmod_extended
+// Access_extended
+// Settid
+// Gettid
+// Setsgroups
+// Getsgroups
+// Setwgroups
+// Getwgroups
+// Mkfifo_extended
+// Mkdir_extended
+// Identitysvc
+// Shared_region_check_np
+// Shared_region_map_np
+// __pthread_mutex_destroy
+// __pthread_mutex_init
+// __pthread_mutex_lock
+// __pthread_mutex_trylock
+// __pthread_mutex_unlock
+// __pthread_cond_init
+// __pthread_cond_destroy
+// __pthread_cond_broadcast
+// __pthread_cond_signal
+// Setsid_with_pid
+// __pthread_cond_timedwait
+// Aio_fsync
+// Aio_return
+// Aio_suspend
+// Aio_cancel
+// Aio_error
+// Aio_read
+// Aio_write
+// Lio_listio
+// __pthread_cond_wait
+// Iopolicysys
+// Mlockall
+// Munlockall
+// __pthread_kill
+// __pthread_sigmask
+// __sigwait
+// __disable_threadsignal
+// __pthread_markcancel
+// __pthread_canceled
+// __semwait_signal
+// Proc_info
+// Sendfile
+// Stat64_extended
+// Lstat64_extended
+// Fstat64_extended
+// __pthread_chdir
+// __pthread_fchdir
+// Audit
+// Auditon
+// Getauid
+// Setauid
+// Getaudit
+// Setaudit
+// Getaudit_addr
+// Setaudit_addr
+// Auditctl
+// Bsdthread_create
+// Bsdthread_terminate
+// Stack_snapshot
+// Bsdthread_register
+// Workq_open
+// Workq_ops
+// __mac_execve
+// __mac_syscall
+// __mac_get_file
+// __mac_set_file
+// __mac_get_link
+// __mac_set_link
+// __mac_get_proc
+// __mac_set_proc
+// __mac_get_fd
+// __mac_set_fd
+// __mac_get_pid
+// __mac_get_lcid
+// __mac_get_lctx
+// __mac_set_lctx
+// Setlcid
+// Read_nocancel
+// Write_nocancel
+// Open_nocancel
+// Close_nocancel
+// Wait4_nocancel
+// Recvmsg_nocancel
+// Sendmsg_nocancel
+// Recvfrom_nocancel
+// Accept_nocancel
+// Msync_nocancel
+// Fcntl_nocancel
+// Select_nocancel
+// Fsync_nocancel
+// Connect_nocancel
+// Sigsuspend_nocancel
+// Readv_nocancel
+// Writev_nocancel
+// Sendto_nocancel
+// Pread_nocancel
+// Pwrite_nocancel
+// Waitid_nocancel
+// Poll_nocancel
+// Msgsnd_nocancel
+// Msgrcv_nocancel
+// Sem_wait_nocancel
+// Aio_suspend_nocancel
+// __sigwait_nocancel
+// __semwait_signal_nocancel
+// __mac_mount
+// __mac_get_mount
+// __mac_getfsstat
+
diff --git a/src/pkg/syscall/syscall_darwin_386.go b/src/pkg/syscall/syscall_darwin_386.go
new file mode 100644
index 000000000..5633d7c03
--- /dev/null
+++ b/src/pkg/syscall/syscall_darwin_386.go
@@ -0,0 +1,49 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall
+
+import "syscall"
+
+func Getpagesize() int {
+ return 4096
+}
+
+func TimespecToNsec(ts Timespec) int64 {
+ return int64(ts.Sec)*1e9 + int64(ts.Nsec);
+}
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = int32(nsec / 1e9);
+ ts.Nsec = int32(nsec % 1e9);
+ return;
+}
+
+func TimevalToNsec(tv Timeval) int64 {
+ return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3;
+}
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999; // round up to microsecond
+ tv.Usec = int32(nsec%1e9 / 1e3);
+ tv.Sec = int32(nsec/1e9);
+ return;
+}
+
+//sys gettimeofday(tp *Timeval) (sec int64, usec int32, errno int)
+func Gettimeofday(tv *Timeval) (errno int) {
+ // The tv passed to gettimeofday must be non-nil
+ // but is otherwise unused. The answers come back
+ // in the two registers.
+ sec, usec, err := gettimeofday(tv);
+ tv.Sec = int32(sec);
+ tv.Usec = int32(usec);
+ return err;
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint32(fd);
+ k.Filter = int16(mode);
+ k.Flags = uint16(flags);
+}
diff --git a/src/pkg/syscall/syscall_darwin_amd64.go b/src/pkg/syscall/syscall_darwin_amd64.go
new file mode 100644
index 000000000..f7a93f121
--- /dev/null
+++ b/src/pkg/syscall/syscall_darwin_amd64.go
@@ -0,0 +1,49 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall
+
+import "syscall"
+
+func Getpagesize() int {
+ return 4096
+}
+
+func TimespecToNsec(ts Timespec) int64 {
+ return int64(ts.Sec)*1e9 + int64(ts.Nsec);
+}
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9;
+ ts.Nsec = nsec % 1e9;
+ return;
+}
+
+func TimevalToNsec(tv Timeval) int64 {
+ return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3;
+}
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999; // round up to microsecond
+ tv.Usec = int32(nsec%1e9 / 1e3);
+ tv.Sec = int64(nsec/1e9);
+ return;
+}
+
+//sys gettimeofday(tp *Timeval) (sec int64, usec int32, errno int)
+func Gettimeofday(tv *Timeval) (errno int) {
+ // The tv passed to gettimeofday must be non-nil
+ // but is otherwise unused. The answers come back
+ // in the two registers.
+ sec, usec, err := gettimeofday(tv);
+ tv.Sec = sec;
+ tv.Usec = usec;
+ return err;
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint64(fd);
+ k.Filter = int16(mode);
+ k.Flags = uint16(flags);
+}
diff --git a/src/pkg/syscall/syscall_linux.go b/src/pkg/syscall/syscall_linux.go
new file mode 100644
index 000000000..50f3938d7
--- /dev/null
+++ b/src/pkg/syscall/syscall_linux.go
@@ -0,0 +1,636 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Linux system calls.
+// This file is compiled as ordinary Go code,
+// but it is also input to mksyscall,
+// which parses the //sys lines and generates system call stubs.
+// Note that sometimes we use a lowercase //sys name and
+// wrap it in our own nicer implementation.
+
+package syscall
+
+import (
+ "syscall";
+ "unsafe";
+)
+
+const OS = "linux"
+
+/*
+ * Wrapped
+ */
+
+//sys pipe(p *[2]_C_int) (errno int)
+func Pipe(p []int) (errno int) {
+ if len(p) != 2 {
+ return EINVAL;
+ }
+ var pp [2]_C_int;
+ errno = pipe(&pp);
+ p[0] = int(pp[0]);
+ p[1] = int(pp[1]);
+ return;
+}
+
+//sys utimes(path string, times *[2]Timeval) (errno int)
+func Utimes(path string, tv []Timeval) (errno int) {
+ if len(tv) != 2 {
+ return EINVAL;
+ }
+ return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])));
+}
+
+//sys futimesat(dirfd int, path string, times *[2]Timeval) (errno int)
+func Futimesat(dirfd int, path string, tv []Timeval) (errno int) {
+ if len(tv) != 2 {
+ return EINVAL;
+ }
+ return futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0])));
+}
+
+const ImplementsGetwd = true;
+
+//sys Getcwd(buf []byte) (n int, errno int)
+func Getwd() (wd string, errno int) {
+ var buf [PathMax]byte;
+ n, err := Getcwd(&buf);
+ if err != 0 {
+ return "", err;
+ }
+ // Getcwd returns the number of bytes written to buf, including the NUL.
+ if n < 1|| n > len(buf) || buf[n-1] != 0 {
+ return "", EINVAL;
+ }
+ return string(buf[0:n-1]), 0
+}
+
+//sys getgroups(n int, list *_Gid_t) (nn int, errno int)
+//sys setgroups(n int, list *_Gid_t) (errno int)
+func Getgroups() (gids []int, errno int) {
+ n, err := getgroups(0, nil);
+ if err != 0 {
+ return nil, errno;
+ }
+ if n == 0 {
+ return nil, 0;
+ }
+
+ // Sanity check group count. Max is 1<<16 on Linux.
+ if n < 0 || n > 1<<20 {
+ return nil, EINVAL;
+ }
+
+ a := make([]_Gid_t, n);
+ n, err = getgroups(n, &a[0]);
+ if err != 0 {
+ return nil, errno;
+ }
+ gids = make([]int, n);
+ for i, v := range a[0:n] {
+ gids[i] = int(v);
+ }
+ return;
+}
+
+func Setgroups(gids []int) (errno int) {
+ if len(gids) == 0 {
+ return setgroups(0, nil);
+ }
+
+ a := make([]_Gid_t, len(gids));
+ for i, v := range gids {
+ a[i] = _Gid_t(v);
+ }
+ return setgroups(len(a), &a[0]);
+}
+
+type WaitStatus uint32
+
+// Wait status is 7 bits at bottom, either 0 (exited),
+// 0x7F (stopped), or a signal number that caused an exit.
+// The 0x80 bit is whether there was a core dump.
+// An extra number (exit code, signal causing a stop)
+// is in the high bits. At least that's the idea.
+// There are various irregularities. For example, the
+// "continued" status is 0xFFFF, distinguishing itself
+// from stopped via the core dump bit.
+
+const (
+ mask = 0x7F;
+ core = 0x80;
+ exited = 0x00;
+ stopped = 0x7F;
+ shift = 8;
+)
+
+func (w WaitStatus) Exited() bool {
+ return w&mask == exited;
+}
+
+func (w WaitStatus) Signaled() bool {
+ return w&mask != stopped && w&mask != exited;
+}
+
+func (w WaitStatus) Stopped() bool {
+ return w&0xFF == stopped;
+}
+
+func (w WaitStatus) Continued() bool {
+ return w == 0xFFFF;
+}
+
+func (w WaitStatus) CoreDump() bool {
+ return w.Signaled() && w&core != 0;
+}
+
+func (w WaitStatus) ExitStatus() int {
+ if !w.Exited() {
+ return -1;
+ }
+ return int(w >> shift) & 0xFF;
+}
+
+func (w WaitStatus) Signal() int {
+ if !w.Signaled() {
+ return -1;
+ }
+ return int(w & mask);
+}
+
+func (w WaitStatus) StopSignal() int {
+ if !w.Stopped() {
+ return -1;
+ }
+ return int(w >> shift) & 0xFF;
+}
+
+//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int)
+func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, errno int) {
+ var status _C_int;
+ wpid, errno = wait4(pid, &status, options, rusage);
+ if wstatus != nil {
+ *wstatus = WaitStatus(status);
+ }
+ return;
+}
+
+func Sleep(nsec int64) (errno int) {
+ tv := NsecToTimeval(nsec);
+ n, err := Select(0, nil, nil, nil, &tv);
+ return err;
+}
+
+// Implemented in syscall_linux_*.go
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int)
+func bind(s int, addr uintptr, addrlen _Socklen) (errno int)
+func connect(s int, addr uintptr, addrlen _Socklen) (errno int)
+func socket(domain int, typ int, proto int) (fd int, errno int)
+func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int)
+func Listen(s int, n int) (errno int)
+
+// For testing: clients can set this flag to force
+// creation of IPv6 sockets to return EAFNOSUPPORT.
+var SocketDisableIPv6 bool
+
+type Sockaddr interface {
+ sockaddr() (ptr uintptr, len _Socklen, errno int); // lowercase; only we can define Sockaddrs
+}
+
+type SockaddrInet4 struct {
+ Port int;
+ Addr [4]byte;
+ raw RawSockaddrInet4;
+}
+
+func (sa *SockaddrInet4) sockaddr() (uintptr, _Socklen, int) {
+ if sa.Port < 0 || sa.Port > 0xFFFF {
+ return 0, 0, EINVAL;
+ }
+ sa.raw.Family = AF_INET;
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port));
+ p[0] = byte(sa.Port>>8);
+ p[1] = byte(sa.Port);
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.raw.Addr[i] = sa.Addr[i];
+ }
+ return uintptr(unsafe.Pointer(&sa.raw)), SizeofSockaddrInet4, 0;
+}
+
+type SockaddrInet6 struct {
+ Port int;
+ Addr [16]byte;
+ raw RawSockaddrInet6;
+}
+
+func (sa *SockaddrInet6) sockaddr() (uintptr, _Socklen, int) {
+ if sa.Port < 0 || sa.Port > 0xFFFF {
+ return 0, 0, EINVAL;
+ }
+ sa.raw.Family = AF_INET6;
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port));
+ p[0] = byte(sa.Port>>8);
+ p[1] = byte(sa.Port);
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.raw.Addr[i] = sa.Addr[i];
+ }
+ return uintptr(unsafe.Pointer(&sa.raw)), SizeofSockaddrInet6, 0;
+}
+
+type SockaddrUnix struct {
+ Name string;
+ raw RawSockaddrUnix;
+}
+
+func (sa *SockaddrUnix) sockaddr() (uintptr, _Socklen, int) {
+ name := sa.Name;
+ n := len(name);
+ if n >= len(sa.raw.Path) || n == 0 {
+ return 0, 0, EINVAL;
+ }
+ sa.raw.Family = AF_UNIX;
+ for i := 0; i < n; i++ {
+ sa.raw.Path[i] = int8(name[i]);
+ }
+ if sa.raw.Path[0] == '@' {
+ sa.raw.Path[0] = 0;
+ }
+
+ // length is family, name, NUL.
+ return uintptr(unsafe.Pointer(&sa.raw)), 1 + _Socklen(n) + 1, 0;
+}
+
+func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, int) {
+ switch rsa.Addr.Family {
+ case AF_UNIX:
+ pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa));
+ sa := new(SockaddrUnix);
+ if pp.Path[0] == 0 {
+ // "Abstract" Unix domain socket.
+ // Rewrite leading NUL as @ for textual display.
+ // (This is the standard convention.)
+ // Not friendly to overwrite in place,
+ // but the callers below don't care.
+ pp.Path[0] = '@';
+ }
+
+ // Assume path ends at NUL.
+ // This is not technically the Linux semantics for
+ // abstract Unix domain sockets--they are supposed
+ // to be uninterpreted fixed-size binary blobs--but
+ // everyone uses this convention.
+ n := 0;
+ for n < len(pp.Path) && pp.Path[n] != 0 {
+ n++;
+ }
+ bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]));
+ sa.Name = string(bytes[0:n]);
+ return sa, 0;
+
+ case AF_INET:
+ pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa));
+ sa := new(SockaddrInet4);
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port));
+ sa.Port = int(p[0])<<8 + int(p[1]);
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.Addr[i] = pp.Addr[i];
+ }
+ return sa, 0;
+
+ case AF_INET6:
+ pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa));
+ sa := new(SockaddrInet6);
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port));
+ sa.Port = int(p[0])<<8 + int(p[1]);
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.Addr[i] = pp.Addr[i];
+ }
+ return sa, 0;
+ }
+ return nil, EAFNOSUPPORT;
+}
+
+func Accept(fd int) (nfd int, sa Sockaddr, errno int) {
+ var rsa RawSockaddrAny;
+ var len _Socklen = SizeofSockaddrAny;
+ nfd, errno = accept(fd, &rsa, &len);
+ if errno != 0 {
+ return;
+ }
+ sa, errno = anyToSockaddr(&rsa);
+ if errno != 0 {
+ Close(nfd);
+ nfd = 0;
+ }
+ return;
+}
+
+func Bind(fd int, sa Sockaddr) (errno int) {
+ ptr, n, err := sa.sockaddr();
+ if err != 0 {
+ return err;
+ }
+ return bind(fd, ptr, n);
+}
+
+func Connect(fd int, sa Sockaddr) (errno int) {
+ ptr, n, err := sa.sockaddr();
+ if err != 0 {
+ return err;
+ }
+ return connect(fd, ptr, n);
+}
+
+func Socket(domain, typ, proto int) (fd, errno int) {
+ if domain == AF_INET6 && SocketDisableIPv6 {
+ return -1, EAFNOSUPPORT
+ }
+ fd, errno = socket(domain, typ, proto);
+ return;
+}
+
+func SetsockoptInt(fd, level, opt int, value int) (errno int) {
+ var n = int32(value);
+ return setsockopt(fd, level, opt, uintptr(unsafe.Pointer(&n)), 4);
+}
+
+func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (errno int) {
+ return setsockopt(fd, level, opt, uintptr(unsafe.Pointer(tv)), unsafe.Sizeof(*tv));
+}
+
+func SetsockoptLinger(fd, level, opt int, l *Linger) (errno int) {
+ return setsockopt(fd, level, opt, uintptr(unsafe.Pointer(l)), unsafe.Sizeof(*l));
+}
+
+// Sendto
+// Recvfrom
+// Sendmsg
+// Recvmsg
+// Getsockname
+// Getpeername
+// Socketpair
+// Getsockopt
+
+/*
+ * Direct access
+ */
+//sys Access(path string, mode int) (errno int)
+//sys Acct(path string) (errno int)
+//sys Adjtimex(buf *Timex) (state int, errno int)
+//sys Chdir(path string) (errno int)
+//sys Chmod(path string, mode int) (errno int)
+//sys Chown(path string, uid int, gid int) (errno int)
+//sys Chroot(path string) (errno int)
+//sys Close(fd int) (errno int)
+//sys Creat(path string, mode int) (fd int, errno int)
+//sys Dup(oldfd int) (fd int, errno int)
+//sys Dup2(oldfd int, newfd int) (fd int, errno int)
+//sys EpollCreate(size int) (fd int, errno int)
+//sys EpollCtl(epfd int, op int, fd int, event *EpollEvent) (errno int)
+//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, errno int)
+//sys Exit(code int) = SYS_EXIT_GROUP
+//sys Faccessat(dirfd int, path string, mode int, flags int) (errno int)
+//sys Fallocate(fd int, mode int, off int64, len int64) (errno int)
+//sys Fchdir(fd int) (errno int)
+//sys Fchmod(fd int, mode int) (errno int)
+//sys Fchmodat(dirfd int, path string, mode int, flags int) (errno int)
+//sys Fchown(fd int, uid int, gid int) (errno int)
+//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int)
+//sys fcntl(fd int, cmd int, arg int) (val int, errno int)
+//sys Fdatasync(fd int) (errno int)
+//sys Fstat(fd int, stat *Stat_t) (errno int)
+//sys Fstatfs(fd int, buf *Statfs_t) (errno int)
+//sys Fsync(fd int) (errno int)
+//sys Ftruncate(fd int, length int64) (errno int)
+//sys Getdents(fd int, buf []byte) (n int, errno int) = SYS_GETDENTS64
+//sys Getegid() (egid int)
+//sys Geteuid() (euid int)
+//sys Getgid() (gid int)
+//sys Getpgid(pid int) (pgid int, errno int)
+//sys Getpgrp() (pid int)
+//sys Getpid() (pid int)
+//sys Getppid() (ppid int)
+//sys Getrlimit(resource int, rlim *Rlimit) (errno int)
+//sys Getrusage(who int, rusage *Rusage) (errno int)
+//sys Gettid() (tid int)
+//sys Gettimeofday(tv *Timeval) (errno int)
+//sys Getuid() (uid int)
+//sys Ioperm(from int, num int, on int) (errno int)
+//sys Iopl(level int) (errno int)
+//sys Kill(pid int, sig int) (errno int)
+//sys Klogctl(typ int, buf []byte) (n int, errno int) = SYS_SYSLOG
+//sys Lchown(path string, uid int, gid int) (errno int)
+//sys Link(oldpath string, newpath string) (errno int)
+//sys Lstat(path string, stat *Stat_t) (errno int)
+//sys Mkdir(path string, mode int) (errno int)
+//sys Mkdirat(dirfd int, path string, mode int) (errno int)
+//sys Mknod(path string, mode int, dev int) (errno int)
+//sys Mknodat(dirfd int, path string, mode int, dev int) (errno int)
+//sys Nanosleep(time *Timespec, leftover *Timespec) (errno int)
+//sys Open(path string, mode int, perm int) (fd int, errno int)
+//sys Openat(dirfd int, path string, flags int, mode int) (fd int, errno int)
+//sys Pause() (errno int)
+//sys PivotRoot(newroot string, putold string) (errno int) = SYS_PIVOT_ROOT
+//sys Pread(fd int, p []byte, offset int64) (n int, errno int) = SYS_PREAD64
+//sys Pwrite(fd int, p []byte, offset int64) (n int, errno int) = SYS_PWRITE64
+//sys Read(fd int, p []byte) (n int, errno int)
+//sys Readlink(path string, buf []byte) (n int, errno int)
+//sys Rename(oldpath string, newpath string) (errno int)
+//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (errno int)
+//sys Rmdir(path string) (errno int)
+//sys Seek(fd int, offset int64, whence int) (off int64, errno int) = SYS_LSEEK
+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int)
+//sys Setdomainname(p []byte) (errno int)
+//sys Setfsgid(gid int) (errno int)
+//sys Setfsuid(uid int) (errno int)
+//sys Setgid(gid int) (errno int)
+//sys Sethostname(p []byte) (errno int)
+//sys Setpgid(pid int, pgid int) (errno int)
+//sys Setregid(rgid int, egid int) (errno int)
+//sys Setresgid(rgid int, egid int, sgid int) (errno int)
+//sys Setresuid(ruid int, euid int, suid int) (errno int)
+//sys Setreuid(ruid int, euid int) (errno int)
+//sys Setrlimit(resource int, rlim *Rlimit) (errno int)
+//sys Setsid() (pid int)
+//sys Settimeofday(tv *Timeval) (errno int)
+//sys Setuid(uid int) (errno int)
+//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, errno int)
+//sys Stat(path string, stat *Stat_t) (errno int)
+//sys Statfs(path string, buf *Statfs_t) (errno int)
+//sys Symlink(oldpath string, newpath string) (errno int)
+//sys Sync()
+//sys SyncFileRange(fd int, off int64, n int64, flags int) (errno int)
+//sys Sysinfo(info *Sysinfo_t) (errno int)
+//sys Tee(rfd int, wfd int, len int, flags int) (n int64, errno int)
+//sys Tgkill(tgid int, tid int, sig int) (errno int)
+//sys Time(t *Time_t) (tt Time_t, errno int)
+//sys Times(tms *Tms) (ticks uintptr, errno int)
+//sys Truncate(path string, length int64) (errno int)
+//sys Umask(mask int) (oldmask int)
+//sys Uname(buf *Utsname) (errno int)
+//sys Unlink(path string) (errno int)
+//sys Unlinkat(dirfd int, path string) (errno int)
+//sys Unshare(flags int) (errno int)
+//sys Ustat(dev int, ubuf *Ustat_t) (errno int)
+//sys Utime(path string, buf *Utimbuf) (errno int)
+//sys Write(fd int, p []byte) (n int, errno int)
+//sys exitThread(code int) (errno int) = SYS_EXIT
+//sys read(fd int, p *byte, np int) (n int, errno int)
+//sys write(fd int, p *byte, np int) (n int, errno int)
+
+/*
+ * Unimplemented
+ */
+// AddKey
+// AfsSyscall
+// Alarm
+// ArchPrctl
+// Brk
+// Capget
+// Capset
+// ClockGetres
+// ClockGettime
+// ClockNanosleep
+// ClockSettime
+// Clone
+// CreateModule
+// DeleteModule
+// EpollCtlOld
+// EpollPwait
+// EpollWaitOld
+// Eventfd
+// Execve
+// Fadvise64
+// Fgetxattr
+// Flistxattr
+// Flock
+// Fork
+// Fremovexattr
+// Fsetxattr
+// Futex
+// GetKernelSyms
+// GetMempolicy
+// GetRobustList
+// GetThreadArea
+// Getitimer
+// Getpmsg
+// Getpriority
+// Getxattr
+// InotifyAddWatch
+// InotifyInit
+// InotifyRmWatch
+// IoCancel
+// IoDestroy
+// IoGetevents
+// IoSetup
+// IoSubmit
+// Ioctl
+// IoprioGet
+// IoprioSet
+// KexecLoad
+// Keyctl
+// Lgetxattr
+// Listxattr
+// Llistxattr
+// LookupDcookie
+// Lremovexattr
+// Lsetxattr
+// Madvise
+// Mbind
+// MigratePages
+// Mincore
+// Mlock
+// Mmap
+// ModifyLdt
+// Mount
+// MovePages
+// Mprotect
+// MqGetsetattr
+// MqNotify
+// MqOpen
+// MqTimedreceive
+// MqTimedsend
+// MqUnlink
+// Mremap
+// Msgctl
+// Msgget
+// Msgrcv
+// Msgsnd
+// Msync
+// Munlock
+// Munlockall
+// Munmap
+// Newfstatat
+// Nfsservctl
+// Personality
+// Poll
+// Ppoll
+// Prctl
+// Pselect6
+// Ptrace
+// Putpmsg
+// QueryModule
+// Quotactl
+// Readahead
+// Readv
+// Reboot
+// RemapFilePages
+// Removexattr
+// RequestKey
+// RestartSyscall
+// RtSigaction
+// RtSigpending
+// RtSigprocmask
+// RtSigqueueinfo
+// RtSigreturn
+// RtSigsuspend
+// RtSigtimedwait
+// SchedGetPriorityMax
+// SchedGetPriorityMin
+// SchedGetaffinity
+// SchedGetparam
+// SchedGetscheduler
+// SchedRrGetInterval
+// SchedSetaffinity
+// SchedSetparam
+// SchedYield
+// Security
+// Semctl
+// Semget
+// Semop
+// Semtimedop
+// Sendfile
+// SetMempolicy
+// SetRobustList
+// SetThreadArea
+// SetTidAddress
+// Setpriority
+// Setxattr
+// Shmat
+// Shmctl
+// Shmdt
+// Shmget
+// Sigaltstack
+// Signalfd
+// Swapoff
+// Swapon
+// Sysfs
+// TimerCreate
+// TimerDelete
+// TimerGetoverrun
+// TimerGettime
+// TimerSettime
+// Timerfd
+// Tkill (obsolete)
+// Tuxcall
+// Umount2
+// Uselib
+// Utimensat
+// Vfork
+// Vhangup
+// Vmsplice
+// Vserver
+// Waitid
+// Writev
+// _Sysctl
diff --git a/src/pkg/syscall/syscall_linux_386.go b/src/pkg/syscall/syscall_linux_386.go
new file mode 100644
index 000000000..9bf3f9cf0
--- /dev/null
+++ b/src/pkg/syscall/syscall_linux_386.go
@@ -0,0 +1,100 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall
+
+import (
+ "syscall";
+ "unsafe";
+)
+
+func Getpagesize() int {
+ return 4096
+}
+
+func TimespecToNsec(ts Timespec) int64 {
+ return int64(ts.Sec)*1e9 + int64(ts.Nsec);
+}
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = int32(nsec / 1e9);
+ ts.Nsec = int32(nsec % 1e9);
+ return;
+}
+
+func TimevalToNsec(tv Timeval) int64 {
+ return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3;
+}
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999; // round up to microsecond
+ tv.Sec = int32(nsec/1e9);
+ tv.Usec = int32(nsec%1e9 / 1e3);
+ return;
+}
+
+// On x86 Linux, all the socket calls go through an extra indirection,
+// I think because the 5-register system call interface can't handle
+// the 6-argument calls like sendto and recvfrom. Instead the
+// arguments to the underlying system call are the number below
+// and a pointer to an array of uintptr. We hide the pointer in the
+// socketcall assembly to avoid allocation on every system call.
+
+const (
+ // see linux/net.h
+ _SOCKET = 1;
+ _BIND = 2;
+ _CONNECT = 3;
+ _LISTEN = 4;
+ _ACCEPT = 5;
+ _GETSOCKNAME = 6;
+ _GETPEERNAME = 7;
+ _SOCKETPAIR = 8;
+ _SEND = 9;
+ _RECV = 10;
+ _SENDTO = 11;
+ _RECVFROM = 12;
+ _SHUTDOWN = 13;
+ _SETSOCKOPT = 14;
+ _GETSOCKOPT = 15;
+ _SENDMSG = 16;
+ _RECVMSG = 17;
+)
+
+func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, errno int)
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
+ fd, errno = socketcall(_SOCKET, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0);
+ return;
+}
+
+func bind(s int, addr uintptr, addrlen _Socklen) (errno int) {
+ var _ int;
+ _, errno = socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0);
+ return;
+}
+
+func connect(s int, addr uintptr, addrlen _Socklen) (errno int) {
+ var _ int;
+ _, errno = socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0);
+ return;
+}
+
+func socket(domain int, typ int, proto int) (fd int, errno int) {
+ fd, errno = socketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0);
+ return;
+}
+
+func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) {
+ var _ int;
+ _, errno = socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0);
+ return;
+}
+
+func Listen(s int, n int) (errno int) {
+ var _ int;
+ _, errno = socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0);
+ return;
+}
+
diff --git a/src/pkg/syscall/syscall_linux_amd64.go b/src/pkg/syscall/syscall_linux_amd64.go
new file mode 100644
index 000000000..a2a58c35b
--- /dev/null
+++ b/src/pkg/syscall/syscall_linux_amd64.go
@@ -0,0 +1,41 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall
+
+import "syscall"
+
+//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int)
+//sys bind(s int, addr uintptr, addrlen _Socklen) (errno int)
+//sys connect(s int, addr uintptr, addrlen _Socklen) (errno int)
+//sys socket(domain int, typ int, proto int) (fd int, errno int)
+//sys setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int)
+//sys Listen(s int, n int) (errno int)
+//sys Shutdown(fd int, how int) (errno int)
+
+func Getpagesize() int {
+ return 4096
+}
+
+func TimespecToNsec(ts Timespec) int64 {
+ return int64(ts.Sec)*1e9 + int64(ts.Nsec);
+}
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9;
+ ts.Nsec = nsec % 1e9;
+ return;
+}
+
+func TimevalToNsec(tv Timeval) int64 {
+ return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3;
+}
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999; // round up to microsecond
+ tv.Sec = nsec/1e9;
+ tv.Usec = nsec%1e9 / 1e3;
+ return;
+}
+
diff --git a/src/pkg/syscall/types_darwin.c b/src/pkg/syscall/types_darwin.c
new file mode 100644
index 000000000..65afd6ca6
--- /dev/null
+++ b/src/pkg/syscall/types_darwin.c
@@ -0,0 +1,226 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+/*
+Input to godefs. See PORT.
+ */
+
+#define __DARWIN_UNIX03 0
+#define KERNEL
+#define _DARWIN_USE_64_BIT_INODE
+#include <dirent.h>
+#include <fcntl.h>
+#include <mach/mach.h>
+#include <mach/message.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <signal.h>
+#include <stdio.h>
+#include <sys/event.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/param.h>
+#include <sys/ptrace.h>
+#include <sys/resource.h>
+#include <sys/select.h>
+#include <sys/signal.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/types.h>
+#include <sys/un.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+// Machine characteristics; for internal use.
+
+enum
+{
+ $sizeofPtr = sizeof(void*),
+ $sizeofShort = sizeof(short),
+ $sizeofInt = sizeof(int),
+ $sizeofLong = sizeof(long),
+ $sizeofLongLong = sizeof(long long),
+};
+
+
+// Time
+
+typedef struct timespec $Timespec;
+typedef struct timeval $Timeval;
+
+// Processes
+
+typedef struct rusage $Rusage;
+typedef struct rlimit $Rlimit;
+
+typedef int $_C_int;
+typedef gid_t $_Gid_t;
+
+// Files
+
+enum
+{
+ $O_RDONLY = O_RDONLY,
+ $O_WRONLY = O_WRONLY,
+ $O_RDWR = O_RDWR,
+ $O_APPEND = O_APPEND,
+ $O_ASYNC = O_ASYNC,
+ $O_CREAT = O_CREAT,
+ $O_NOCTTY = O_NOCTTY,
+ $O_NONBLOCK = O_NONBLOCK,
+ $O_SYNC = O_SYNC,
+ $O_TRUNC = O_TRUNC,
+ $O_CLOEXEC = 0, // not supported
+
+ $F_GETFD = F_GETFD,
+ $F_SETFD = F_SETFD,
+
+ $F_GETFL = F_GETFL,
+ $F_SETFL = F_SETFL,
+
+ $FD_CLOEXEC = FD_CLOEXEC,
+
+ $NAME_MAX = NAME_MAX
+};
+
+enum
+{ // Directory mode bits
+ $S_IFMT = S_IFMT,
+ $S_IFIFO = S_IFIFO,
+ $S_IFCHR = S_IFCHR,
+ $S_IFDIR = S_IFDIR,
+ $S_IFBLK = S_IFBLK,
+ $S_IFREG = S_IFREG,
+ $S_IFLNK = S_IFLNK,
+ $S_IFSOCK = S_IFSOCK,
+ $S_IFWHT = S_IFWHT,
+ $S_ISUID = S_ISUID,
+ $S_ISGID = S_ISGID,
+ $S_ISVTX = S_ISVTX,
+ $S_IRUSR = S_IRUSR,
+ $S_IWUSR = S_IWUSR,
+ $S_IXUSR = S_IXUSR,
+};
+
+typedef struct stat64 $Stat_t;
+typedef struct statfs64 $Statfs_t;
+
+typedef struct dirent $Dirent;
+
+// Wait status.
+
+enum
+{
+ $WNOHANG = WNOHANG,
+ $WUNTRACED = WUNTRACED,
+ $WEXITED = WEXITED,
+ $WSTOPPED = WSTOPPED,
+ $WCONTINUED = WCONTINUED,
+ $WNOWAIT = WNOWAIT,
+};
+
+// Sockets
+
+enum
+{
+ $AF_UNIX = AF_UNIX,
+ $AF_INET = AF_INET,
+ $AF_DATAKIT = AF_DATAKIT,
+ $AF_INET6 = AF_INET6,
+
+ $SOCK_STREAM = SOCK_STREAM,
+ $SOCK_DGRAM = SOCK_DGRAM,
+ $SOCK_RAW = SOCK_RAW,
+ $SOCK_SEQPACKET = SOCK_SEQPACKET,
+
+ $SOL_SOCKET = SOL_SOCKET,
+
+ $SO_REUSEADDR = SO_REUSEADDR,
+ $SO_KEEPALIVE = SO_KEEPALIVE,
+ $SO_DONTROUTE = SO_DONTROUTE,
+ $SO_BROADCAST = SO_BROADCAST,
+ $SO_USELOOPBACK = SO_USELOOPBACK,
+ $SO_LINGER = SO_LINGER,
+ $SO_REUSEPORT = SO_REUSEPORT,
+ $SO_SNDBUF = SO_SNDBUF,
+ $SO_RCVBUF = SO_RCVBUF,
+ $SO_SNDTIMEO = SO_SNDTIMEO,
+ $SO_RCVTIMEO = SO_RCVTIMEO,
+ $SO_NOSIGPIPE = SO_NOSIGPIPE,
+
+ $IPPROTO_TCP = IPPROTO_TCP,
+ $IPPROTO_UDP = IPPROTO_UDP,
+
+ $TCP_NODELAY = TCP_NODELAY,
+
+ $SOMAXCONN = SOMAXCONN
+};
+
+typedef struct sockaddr_in $RawSockaddrInet4;
+typedef struct sockaddr_in6 $RawSockaddrInet6;
+typedef struct sockaddr_un $RawSockaddrUnix;
+typedef struct sockaddr $RawSockaddr;
+
+union sockaddr_all {
+ struct sockaddr s1; // this one gets used for fields
+ struct sockaddr_in s2; // these pad it out
+ struct sockaddr_in6 s3;
+};
+
+struct sockaddr_any {
+ struct sockaddr addr;
+ char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
+};
+
+enum {
+ $SizeofSockaddrInet4 = sizeof(struct sockaddr_in),
+ $SizeofSockaddrInet6 = sizeof(struct sockaddr_in6),
+ $SizeofSockaddrAny = sizeof(struct sockaddr_any),
+ $SizeofSockaddrUnix = sizeof(struct sockaddr_un),
+};
+
+typedef struct sockaddr_any $RawSockaddrAny;
+typedef socklen_t $_Socklen;
+typedef struct linger $Linger;
+
+// Events (kqueue, kevent)
+
+enum {
+ // filters
+ $EVFILT_READ = EVFILT_READ,
+ $EVFILT_WRITE = EVFILT_WRITE,
+ $EVFILT_AIO = EVFILT_AIO,
+ $EVFILT_VNODE = EVFILT_VNODE,
+ $EVFILT_PROC = EVFILT_PROC,
+ $EVFILT_SIGNAL = EVFILT_SIGNAL,
+ $EVFILT_TIMER = EVFILT_TIMER,
+ $EVFILT_MACHPORT = EVFILT_MACHPORT,
+ $EVFILT_FS = EVFILT_FS,
+
+ $EVFILT_SYSCOUNT = EVFILT_SYSCOUNT,
+
+ // actions
+ $EV_ADD = EV_ADD,
+ $EV_DELETE = EV_DELETE,
+ $EV_DISABLE = EV_DISABLE,
+ $EV_RECEIPT = EV_RECEIPT,
+
+ // flags
+ $EV_ONESHOT = EV_ONESHOT,
+ $EV_CLEAR = EV_CLEAR,
+ $EV_SYSFLAGS = EV_SYSFLAGS,
+ $EV_FLAG0 = EV_FLAG0,
+ $EV_FLAG1 = EV_FLAG1,
+
+ // returned values
+ $EV_EOF = EV_EOF,
+ $EV_ERROR = EV_ERROR,
+};
+
+typedef struct kevent $Kevent_t;
+
+// Select
+
+typedef fd_set $FdSet;
diff --git a/src/pkg/syscall/types_darwin_386.c b/src/pkg/syscall/types_darwin_386.c
new file mode 100644
index 000000000..dd5356944
--- /dev/null
+++ b/src/pkg/syscall/types_darwin_386.c
@@ -0,0 +1 @@
+// Nothing to see here.
diff --git a/src/pkg/syscall/types_darwin_amd64.c b/src/pkg/syscall/types_darwin_amd64.c
new file mode 100644
index 000000000..dd5356944
--- /dev/null
+++ b/src/pkg/syscall/types_darwin_amd64.c
@@ -0,0 +1 @@
+// Nothing to see here.
diff --git a/src/pkg/syscall/types_linux.c b/src/pkg/syscall/types_linux.c
new file mode 100644
index 000000000..261772eac
--- /dev/null
+++ b/src/pkg/syscall/types_linux.c
@@ -0,0 +1,217 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+/*
+Input to godefs. See PORT.
+ */
+
+#define __DARWIN_UNIX03 0
+#define KERNEL
+
+#include <dirent.h>
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <signal.h>
+#include <stdio.h>
+#include <sys/epoll.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/param.h>
+#include <sys/ptrace.h>
+#include <sys/resource.h>
+#include <sys/select.h>
+#include <sys/signal.h>
+#include <sys/stat.h>
+#include <sys/statfs.h>
+#include <sys/sysinfo.h>
+#include <sys/time.h>
+#include <sys/times.h>
+#include <sys/timex.h>
+#include <sys/types.h>
+#include <sys/un.h>
+#include <sys/utsname.h>
+#include <sys/wait.h>
+#include <time.h>
+#include <unistd.h>
+#include <ustat.h>
+#include <utime.h>
+
+// Machine characteristics; for internal use.
+
+enum
+{
+ $sizeofPtr = sizeof(void*),
+ $sizeofShort = sizeof(short),
+ $sizeofInt = sizeof(int),
+ $sizeofLong = sizeof(long),
+ $sizeofLongLong = sizeof(long long),
+ $PathMax = PATH_MAX,
+};
+
+
+// Time
+
+typedef struct timespec $Timespec;
+typedef struct timeval $Timeval;
+typedef struct timex $Timex;
+typedef time_t $Time_t;
+typedef struct tms $Tms;
+typedef struct utimbuf $Utimbuf;
+
+// Processes
+
+typedef struct rusage $Rusage;
+typedef struct rlimit $Rlimit;
+
+typedef int $_C_int;
+typedef gid_t $_Gid_t;
+
+// Files
+
+enum
+{
+ $O_RDONLY = O_RDONLY,
+ $O_WRONLY = O_WRONLY,
+ $O_RDWR = O_RDWR,
+ $O_APPEND = O_APPEND,
+ $O_ASYNC = O_ASYNC,
+ $O_CREAT = O_CREAT,
+ $O_NOCTTY = O_NOCTTY,
+ $O_NONBLOCK = O_NONBLOCK,
+ $O_SYNC = O_SYNC,
+ $O_TRUNC = O_TRUNC,
+ $O_CLOEXEC = 0, // not supported
+
+ $F_GETFD = F_GETFD,
+ $F_SETFD = F_SETFD,
+
+ $F_GETFL = F_GETFL,
+ $F_SETFL = F_SETFL,
+
+ $FD_CLOEXEC = FD_CLOEXEC,
+
+ $NAME_MAX = NAME_MAX
+};
+
+enum
+{ // Directory mode bits
+ $S_IFMT = S_IFMT,
+ $S_IFIFO = S_IFIFO,
+ $S_IFCHR = S_IFCHR,
+ $S_IFDIR = S_IFDIR,
+ $S_IFBLK = S_IFBLK,
+ $S_IFREG = S_IFREG,
+ $S_IFLNK = S_IFLNK,
+ $S_IFSOCK = S_IFSOCK,
+ $S_ISUID = S_ISUID,
+ $S_ISGID = S_ISGID,
+ $S_ISVTX = S_ISVTX,
+ $S_IRUSR = S_IRUSR,
+ $S_IWUSR = S_IWUSR,
+ $S_IXUSR = S_IXUSR,
+};
+
+typedef struct stat $Stat_t;
+typedef struct statfs $Statfs_t;
+
+typedef struct dirent $Dirent;
+
+// Wait status.
+
+enum
+{
+ $WNOHANG = WNOHANG,
+ $WUNTRACED = WUNTRACED,
+ $WEXITED = WEXITED,
+ $WSTOPPED = WSTOPPED,
+ $WCONTINUED = WCONTINUED,
+ $WNOWAIT = WNOWAIT,
+};
+
+// Sockets
+
+enum
+{
+ $AF_UNIX = AF_UNIX,
+ $AF_INET = AF_INET,
+ $AF_INET6 = AF_INET6,
+
+ $SOCK_STREAM = SOCK_STREAM,
+ $SOCK_DGRAM = SOCK_DGRAM,
+ $SOCK_RAW = SOCK_RAW,
+ $SOCK_SEQPACKET = SOCK_SEQPACKET,
+
+ $SOL_SOCKET = SOL_SOCKET,
+
+ $SO_REUSEADDR = SO_REUSEADDR,
+ $SO_KEEPALIVE = SO_KEEPALIVE,
+ $SO_DONTROUTE = SO_DONTROUTE,
+ $SO_BROADCAST = SO_BROADCAST,
+ $SO_LINGER = SO_LINGER,
+ $SO_SNDBUF = SO_SNDBUF,
+ $SO_RCVBUF = SO_RCVBUF,
+ $SO_SNDTIMEO = SO_SNDTIMEO,
+ $SO_RCVTIMEO = SO_RCVTIMEO,
+
+ $IPPROTO_TCP = IPPROTO_TCP,
+ $IPPROTO_UDP = IPPROTO_UDP,
+
+ $TCP_NODELAY = TCP_NODELAY,
+
+ $SOMAXCONN = SOMAXCONN
+};
+
+typedef struct sockaddr_in $RawSockaddrInet4;
+typedef struct sockaddr_in6 $RawSockaddrInet6;
+typedef struct sockaddr_un $RawSockaddrUnix;
+typedef struct sockaddr $RawSockaddr;
+
+union sockaddr_all {
+ struct sockaddr s1; // this one gets used for fields
+ struct sockaddr_in s2; // these pad it out
+ struct sockaddr_in6 s3;
+};
+
+struct sockaddr_any {
+ struct sockaddr addr;
+ char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
+};
+
+enum {
+ $SizeofSockaddrInet4 = sizeof(struct sockaddr_in),
+ $SizeofSockaddrInet6 = sizeof(struct sockaddr_in6),
+ $SizeofSockaddrAny = sizeof(struct sockaddr_any),
+ $SizeofSockaddrUnix = sizeof(struct sockaddr_un),
+};
+
+typedef struct sockaddr_any $RawSockaddrAny;
+typedef socklen_t $_Socklen;
+typedef struct linger $Linger;
+
+// Misc
+
+enum {
+ $EPOLLIN = EPOLLIN,
+ $EPOLLRDHUP = EPOLLRDHUP,
+ $EPOLLOUT = EPOLLOUT,
+ $EPOLLONESHOT = EPOLLONESHOT,
+ $EPOLL_CTL_MOD = EPOLL_CTL_MOD,
+ $EPOLL_CTL_ADD = EPOLL_CTL_ADD,
+ $EPOLL_CTL_DEL = EPOLL_CTL_DEL,
+};
+
+typedef fd_set $FdSet;
+typedef struct sysinfo $Sysinfo_t;
+typedef struct utsname $Utsname;
+typedef struct ustat $Ustat_t;
+
+// The real epoll_event is a union, and godefs doesn't handle it well.
+struct my_epoll_event {
+ uint32_t events;
+ int32_t fd;
+ int32_t pad;
+};
+
+typedef struct my_epoll_event $EpollEvent;
diff --git a/src/pkg/syscall/types_linux_386.c b/src/pkg/syscall/types_linux_386.c
new file mode 100644
index 000000000..3b5481af4
--- /dev/null
+++ b/src/pkg/syscall/types_linux_386.c
@@ -0,0 +1 @@
+// Nothing to see here
diff --git a/src/pkg/syscall/types_linux_amd64.c b/src/pkg/syscall/types_linux_amd64.c
new file mode 100644
index 000000000..3b5481af4
--- /dev/null
+++ b/src/pkg/syscall/types_linux_amd64.c
@@ -0,0 +1 @@
+// Nothing to see here
diff --git a/src/pkg/syscall/zerrors_darwin_386.go b/src/pkg/syscall/zerrors_darwin_386.go
new file mode 100644
index 000000000..bc2d17656
--- /dev/null
+++ b/src/pkg/syscall/zerrors_darwin_386.go
@@ -0,0 +1,260 @@
+// mkerrors
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// godefs -gsyscall _errors.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+ EMULTIHOP = 0x5f;
+ EAFNOSUPPORT = 0x2f;
+ EACCES = 0xd;
+ EDESTADDRREQ = 0x27;
+ EILSEQ = 0x5c;
+ ESPIPE = 0x1d;
+ EMLINK = 0x1f;
+ EPROGUNAVAIL = 0x4a;
+ ENOTTY = 0x19;
+ EBADF = 0x9;
+ ERANGE = 0x22;
+ ECANCELED = 0x59;
+ ETXTBSY = 0x1a;
+ ENOMEM = 0xc;
+ EINPROGRESS = 0x24;
+ ENOTEMPTY = 0x42;
+ ENOTBLK = 0xf;
+ EPROTOTYPE = 0x29;
+ ENOMSG = 0x5b;
+ ERPCMISMATCH = 0x49;
+ ENOTDIR = 0x14;
+ EALREADY = 0x25;
+ ETIMEDOUT = 0x3c;
+ ENEEDAUTH = 0x51;
+ ENODATA = 0x60;
+ EINTR = 0x4;
+ ENOLINK = 0x61;
+ EPERM = 0x1;
+ ENETDOWN = 0x32;
+ ESTALE = 0x46;
+ ENOTSOCK = 0x26;
+ ENOSR = 0x62;
+ EAUTH = 0x50;
+ ECHILD = 0xa;
+ EPIPE = 0x20;
+ ENOATTR = 0x5d;
+ EBADMSG = 0x5e;
+ EREMOTE = 0x47;
+ ETOOMANYREFS = 0x3b;
+ EPFNOSUPPORT = 0x2e;
+ EPROCUNAVAIL = 0x4c;
+ EADDRINUSE = 0x30;
+ ENETRESET = 0x34;
+ EISDIR = 0x15;
+ EIDRM = 0x5a;
+ EDEVERR = 0x53;
+ EINVAL = 0x16;
+ ESHUTDOWN = 0x3a;
+ EPWROFF = 0x52;
+ EOVERFLOW = 0x54;
+ EBUSY = 0x10;
+ EPROCLIM = 0x43;
+ EPROTO = 0x64;
+ ENODEV = 0x13;
+ EROFS = 0x1e;
+ E2BIG = 0x7;
+ EDEADLK = 0xb;
+ ECONNRESET = 0x36;
+ EBADMACHO = 0x58;
+ ENXIO = 0x6;
+ EBADRPC = 0x48;
+ ENAMETOOLONG = 0x3f;
+ ELAST = 0x67;
+ ESOCKTNOSUPPORT = 0x2c;
+ EADDRNOTAVAIL = 0x31;
+ ETIME = 0x65;
+ EPROTONOSUPPORT = 0x2b;
+ EIO = 0x5;
+ ENETUNREACH = 0x33;
+ EXDEV = 0x12;
+ EDQUOT = 0x45;
+ ENOSPC = 0x1c;
+ ENOEXEC = 0x8;
+ EMSGSIZE = 0x28;
+ EFTYPE = 0x4f;
+ EDOM = 0x21;
+ ENOSTR = 0x63;
+ EFBIG = 0x1b;
+ ESRCH = 0x3;
+ EHOSTDOWN = 0x40;
+ ENOLCK = 0x4d;
+ ENFILE = 0x17;
+ ENOSYS = 0x4e;
+ EBADARCH = 0x56;
+ ENOTCONN = 0x39;
+ ENOTSUP = 0x2d;
+ ECONNABORTED = 0x35;
+ EISCONN = 0x38;
+ ESHLIBVERS = 0x57;
+ EUSERS = 0x44;
+ ENOPROTOOPT = 0x2a;
+ EMFILE = 0x18;
+ ELOOP = 0x3e;
+ ENOBUFS = 0x37;
+ EFAULT = 0xe;
+ EWOULDBLOCK = 0x23;
+ EBADEXEC = 0x55;
+ ENOPOLICY = 0x67;
+ ECONNREFUSED = 0x3d;
+ EAGAIN = 0x23;
+ EEXIST = 0x11;
+ EPROGMISMATCH = 0x4b;
+ ENOENT = 0x2;
+ EHOSTUNREACH = 0x41;
+ EOPNOTSUPP = 0x66;
+ SIGBUS = 0xa;
+ SIGTTIN = 0x15;
+ SIGPROF = 0x1b;
+ SIGFPE = 0x8;
+ SIGHUP = 0x1;
+ SIGTTOU = 0x16;
+ SIGUSR1 = 0x1e;
+ SIGURG = 0x10;
+ SIGQUIT = 0x3;
+ SIGIO = 0x17;
+ SIGABRT = 0x6;
+ SIGINFO = 0x1d;
+ SIGUSR2 = 0x1f;
+ SIGTRAP = 0x5;
+ SIGVTALRM = 0x1a;
+ SIGSEGV = 0xb;
+ SIGCONT = 0x13;
+ SIGPIPE = 0xd;
+ SIGXFSZ = 0x19;
+ SIGCHLD = 0x14;
+ SIGSYS = 0xc;
+ SIGSTOP = 0x11;
+ SIGALRM = 0xe;
+ SIGTSTP = 0x12;
+ SIGEMT = 0x7;
+ SIGKILL = 0x9;
+ SIGXCPU = 0x18;
+ SIGILL = 0x4;
+ SIGINT = 0x2;
+ SIGIOT = 0x6;
+ SIGTERM = 0xf;
+ SIGWINCH = 0x1c;
+)
+
+// Types
+
+
+// Error table
+var errors = [...]string {
+ 95: "EMULTIHOP (Reserved)",
+ 47: "address family not supported by protocol family",
+ 13: "permission denied",
+ 39: "destination address required",
+ 92: "illegal byte sequence",
+ 29: "illegal seek",
+ 31: "too many links",
+ 74: "RPC prog. not avail",
+ 25: "inappropriate ioctl for device",
+ 9: "bad file descriptor",
+ 34: "result too large",
+ 89: "operation canceled",
+ 26: "text file busy",
+ 12: "cannot allocate memory",
+ 36: "operation now in progress",
+ 66: "directory not empty",
+ 15: "block device required",
+ 41: "protocol wrong type for socket",
+ 91: "no message of desired type",
+ 73: "RPC version wrong",
+ 20: "not a directory",
+ 37: "operation already in progress",
+ 60: "operation timed out",
+ 81: "need authenticator",
+ 96: "no message available on STREAM",
+ 4: "interrupted system call",
+ 97: "ENOLINK (Reserved)",
+ 1: "operation not permitted",
+ 50: "network is down",
+ 70: "stale NFS file handle",
+ 38: "socket operation on non-socket",
+ 98: "no STREAM resources",
+ 80: "authentication error",
+ 10: "no child processes",
+ 32: "broken pipe",
+ 93: "attribute not found",
+ 94: "bad message",
+ 71: "too many levels of remote in path",
+ 59: "too many references: can't splice",
+ 46: "protocol family not supported",
+ 76: "bad procedure for program",
+ 48: "address already in use",
+ 52: "network dropped connection on reset",
+ 21: "is a directory",
+ 90: "identifier removed",
+ 83: "device error",
+ 22: "invalid argument",
+ 58: "can't send after socket shutdown",
+ 82: "device power is off",
+ 84: "value too large to be stored in data type",
+ 16: "resource busy",
+ 67: "too many processes",
+ 100: "protocol error",
+ 19: "operation not supported by device",
+ 30: "read-only file system",
+ 7: "argument list too long",
+ 11: "resource deadlock avoided",
+ 54: "connection reset by peer",
+ 88: "malformed Mach-o file",
+ 6: "device not configured",
+ 72: "RPC struct is bad",
+ 63: "file name too long",
+ 103: "policy not found",
+ 44: "socket type not supported",
+ 49: "can't assign requested address",
+ 101: "STREAM ioctl timeout",
+ 43: "protocol not supported",
+ 5: "input/output error",
+ 51: "network is unreachable",
+ 18: "cross-device link",
+ 69: "disc quota exceeded",
+ 28: "no space left on device",
+ 8: "exec format error",
+ 40: "message too long",
+ 79: "inappropriate file type or format",
+ 33: "numerical argument out of domain",
+ 99: "not a STREAM",
+ 27: "file too large",
+ 3: "no such process",
+ 64: "host is down",
+ 77: "no locks available",
+ 23: "too many open files in system",
+ 78: "function not implemented",
+ 86: "bad CPU type in executable",
+ 57: "socket is not connected",
+ 45: "operation not supported",
+ 53: "software caused connection abort",
+ 56: "socket is already connected",
+ 87: "shared library version mismatch",
+ 68: "too many users",
+ 42: "protocol not available",
+ 24: "too many open files",
+ 62: "too many levels of symbolic links",
+ 55: "no buffer space available",
+ 14: "bad address",
+ 35: "resource temporarily unavailable",
+ 85: "bad executable (or shared library)",
+ 61: "connection refused",
+ 17: "file exists",
+ 75: "program version wrong",
+ 2: "no such file or directory",
+ 65: "no route to host",
+ 102: "operation not supported on socket",
+}
+
diff --git a/src/pkg/syscall/zerrors_darwin_amd64.go b/src/pkg/syscall/zerrors_darwin_amd64.go
new file mode 100644
index 000000000..bc2d17656
--- /dev/null
+++ b/src/pkg/syscall/zerrors_darwin_amd64.go
@@ -0,0 +1,260 @@
+// mkerrors
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// godefs -gsyscall _errors.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+ EMULTIHOP = 0x5f;
+ EAFNOSUPPORT = 0x2f;
+ EACCES = 0xd;
+ EDESTADDRREQ = 0x27;
+ EILSEQ = 0x5c;
+ ESPIPE = 0x1d;
+ EMLINK = 0x1f;
+ EPROGUNAVAIL = 0x4a;
+ ENOTTY = 0x19;
+ EBADF = 0x9;
+ ERANGE = 0x22;
+ ECANCELED = 0x59;
+ ETXTBSY = 0x1a;
+ ENOMEM = 0xc;
+ EINPROGRESS = 0x24;
+ ENOTEMPTY = 0x42;
+ ENOTBLK = 0xf;
+ EPROTOTYPE = 0x29;
+ ENOMSG = 0x5b;
+ ERPCMISMATCH = 0x49;
+ ENOTDIR = 0x14;
+ EALREADY = 0x25;
+ ETIMEDOUT = 0x3c;
+ ENEEDAUTH = 0x51;
+ ENODATA = 0x60;
+ EINTR = 0x4;
+ ENOLINK = 0x61;
+ EPERM = 0x1;
+ ENETDOWN = 0x32;
+ ESTALE = 0x46;
+ ENOTSOCK = 0x26;
+ ENOSR = 0x62;
+ EAUTH = 0x50;
+ ECHILD = 0xa;
+ EPIPE = 0x20;
+ ENOATTR = 0x5d;
+ EBADMSG = 0x5e;
+ EREMOTE = 0x47;
+ ETOOMANYREFS = 0x3b;
+ EPFNOSUPPORT = 0x2e;
+ EPROCUNAVAIL = 0x4c;
+ EADDRINUSE = 0x30;
+ ENETRESET = 0x34;
+ EISDIR = 0x15;
+ EIDRM = 0x5a;
+ EDEVERR = 0x53;
+ EINVAL = 0x16;
+ ESHUTDOWN = 0x3a;
+ EPWROFF = 0x52;
+ EOVERFLOW = 0x54;
+ EBUSY = 0x10;
+ EPROCLIM = 0x43;
+ EPROTO = 0x64;
+ ENODEV = 0x13;
+ EROFS = 0x1e;
+ E2BIG = 0x7;
+ EDEADLK = 0xb;
+ ECONNRESET = 0x36;
+ EBADMACHO = 0x58;
+ ENXIO = 0x6;
+ EBADRPC = 0x48;
+ ENAMETOOLONG = 0x3f;
+ ELAST = 0x67;
+ ESOCKTNOSUPPORT = 0x2c;
+ EADDRNOTAVAIL = 0x31;
+ ETIME = 0x65;
+ EPROTONOSUPPORT = 0x2b;
+ EIO = 0x5;
+ ENETUNREACH = 0x33;
+ EXDEV = 0x12;
+ EDQUOT = 0x45;
+ ENOSPC = 0x1c;
+ ENOEXEC = 0x8;
+ EMSGSIZE = 0x28;
+ EFTYPE = 0x4f;
+ EDOM = 0x21;
+ ENOSTR = 0x63;
+ EFBIG = 0x1b;
+ ESRCH = 0x3;
+ EHOSTDOWN = 0x40;
+ ENOLCK = 0x4d;
+ ENFILE = 0x17;
+ ENOSYS = 0x4e;
+ EBADARCH = 0x56;
+ ENOTCONN = 0x39;
+ ENOTSUP = 0x2d;
+ ECONNABORTED = 0x35;
+ EISCONN = 0x38;
+ ESHLIBVERS = 0x57;
+ EUSERS = 0x44;
+ ENOPROTOOPT = 0x2a;
+ EMFILE = 0x18;
+ ELOOP = 0x3e;
+ ENOBUFS = 0x37;
+ EFAULT = 0xe;
+ EWOULDBLOCK = 0x23;
+ EBADEXEC = 0x55;
+ ENOPOLICY = 0x67;
+ ECONNREFUSED = 0x3d;
+ EAGAIN = 0x23;
+ EEXIST = 0x11;
+ EPROGMISMATCH = 0x4b;
+ ENOENT = 0x2;
+ EHOSTUNREACH = 0x41;
+ EOPNOTSUPP = 0x66;
+ SIGBUS = 0xa;
+ SIGTTIN = 0x15;
+ SIGPROF = 0x1b;
+ SIGFPE = 0x8;
+ SIGHUP = 0x1;
+ SIGTTOU = 0x16;
+ SIGUSR1 = 0x1e;
+ SIGURG = 0x10;
+ SIGQUIT = 0x3;
+ SIGIO = 0x17;
+ SIGABRT = 0x6;
+ SIGINFO = 0x1d;
+ SIGUSR2 = 0x1f;
+ SIGTRAP = 0x5;
+ SIGVTALRM = 0x1a;
+ SIGSEGV = 0xb;
+ SIGCONT = 0x13;
+ SIGPIPE = 0xd;
+ SIGXFSZ = 0x19;
+ SIGCHLD = 0x14;
+ SIGSYS = 0xc;
+ SIGSTOP = 0x11;
+ SIGALRM = 0xe;
+ SIGTSTP = 0x12;
+ SIGEMT = 0x7;
+ SIGKILL = 0x9;
+ SIGXCPU = 0x18;
+ SIGILL = 0x4;
+ SIGINT = 0x2;
+ SIGIOT = 0x6;
+ SIGTERM = 0xf;
+ SIGWINCH = 0x1c;
+)
+
+// Types
+
+
+// Error table
+var errors = [...]string {
+ 95: "EMULTIHOP (Reserved)",
+ 47: "address family not supported by protocol family",
+ 13: "permission denied",
+ 39: "destination address required",
+ 92: "illegal byte sequence",
+ 29: "illegal seek",
+ 31: "too many links",
+ 74: "RPC prog. not avail",
+ 25: "inappropriate ioctl for device",
+ 9: "bad file descriptor",
+ 34: "result too large",
+ 89: "operation canceled",
+ 26: "text file busy",
+ 12: "cannot allocate memory",
+ 36: "operation now in progress",
+ 66: "directory not empty",
+ 15: "block device required",
+ 41: "protocol wrong type for socket",
+ 91: "no message of desired type",
+ 73: "RPC version wrong",
+ 20: "not a directory",
+ 37: "operation already in progress",
+ 60: "operation timed out",
+ 81: "need authenticator",
+ 96: "no message available on STREAM",
+ 4: "interrupted system call",
+ 97: "ENOLINK (Reserved)",
+ 1: "operation not permitted",
+ 50: "network is down",
+ 70: "stale NFS file handle",
+ 38: "socket operation on non-socket",
+ 98: "no STREAM resources",
+ 80: "authentication error",
+ 10: "no child processes",
+ 32: "broken pipe",
+ 93: "attribute not found",
+ 94: "bad message",
+ 71: "too many levels of remote in path",
+ 59: "too many references: can't splice",
+ 46: "protocol family not supported",
+ 76: "bad procedure for program",
+ 48: "address already in use",
+ 52: "network dropped connection on reset",
+ 21: "is a directory",
+ 90: "identifier removed",
+ 83: "device error",
+ 22: "invalid argument",
+ 58: "can't send after socket shutdown",
+ 82: "device power is off",
+ 84: "value too large to be stored in data type",
+ 16: "resource busy",
+ 67: "too many processes",
+ 100: "protocol error",
+ 19: "operation not supported by device",
+ 30: "read-only file system",
+ 7: "argument list too long",
+ 11: "resource deadlock avoided",
+ 54: "connection reset by peer",
+ 88: "malformed Mach-o file",
+ 6: "device not configured",
+ 72: "RPC struct is bad",
+ 63: "file name too long",
+ 103: "policy not found",
+ 44: "socket type not supported",
+ 49: "can't assign requested address",
+ 101: "STREAM ioctl timeout",
+ 43: "protocol not supported",
+ 5: "input/output error",
+ 51: "network is unreachable",
+ 18: "cross-device link",
+ 69: "disc quota exceeded",
+ 28: "no space left on device",
+ 8: "exec format error",
+ 40: "message too long",
+ 79: "inappropriate file type or format",
+ 33: "numerical argument out of domain",
+ 99: "not a STREAM",
+ 27: "file too large",
+ 3: "no such process",
+ 64: "host is down",
+ 77: "no locks available",
+ 23: "too many open files in system",
+ 78: "function not implemented",
+ 86: "bad CPU type in executable",
+ 57: "socket is not connected",
+ 45: "operation not supported",
+ 53: "software caused connection abort",
+ 56: "socket is already connected",
+ 87: "shared library version mismatch",
+ 68: "too many users",
+ 42: "protocol not available",
+ 24: "too many open files",
+ 62: "too many levels of symbolic links",
+ 55: "no buffer space available",
+ 14: "bad address",
+ 35: "resource temporarily unavailable",
+ 85: "bad executable (or shared library)",
+ 61: "connection refused",
+ 17: "file exists",
+ 75: "program version wrong",
+ 2: "no such file or directory",
+ 65: "no route to host",
+ 102: "operation not supported on socket",
+}
+
diff --git a/src/pkg/syscall/zerrors_linux_386.go b/src/pkg/syscall/zerrors_linux_386.go
new file mode 100644
index 000000000..f1e7e011d
--- /dev/null
+++ b/src/pkg/syscall/zerrors_linux_386.go
@@ -0,0 +1,316 @@
+// mkerrors
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// godefs -gsyscall _errors.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+ EMULTIHOP = 0x48;
+ EUNATCH = 0x31;
+ EAFNOSUPPORT = 0x61;
+ EREMCHG = 0x4e;
+ EACCES = 0xd;
+ EL3RST = 0x2f;
+ EDESTADDRREQ = 0x59;
+ EILSEQ = 0x54;
+ ESPIPE = 0x1d;
+ EMLINK = 0x1f;
+ EOWNERDEAD = 0x82;
+ ENOTTY = 0x19;
+ EBADE = 0x34;
+ EBADF = 0x9;
+ EBADR = 0x35;
+ EADV = 0x44;
+ ERANGE = 0x22;
+ ECANCELED = 0x7d;
+ ETXTBSY = 0x1a;
+ ENOMEM = 0xc;
+ EINPROGRESS = 0x73;
+ ENOTBLK = 0xf;
+ EPROTOTYPE = 0x5b;
+ ERESTART = 0x55;
+ EISNAM = 0x78;
+ ENOMSG = 0x2a;
+ EALREADY = 0x72;
+ ETIMEDOUT = 0x6e;
+ ENODATA = 0x3d;
+ EINTR = 0x4;
+ ENOLINK = 0x43;
+ EPERM = 0x1;
+ ELOOP = 0x28;
+ ENETDOWN = 0x64;
+ ESTALE = 0x74;
+ ENOTSOCK = 0x58;
+ ENOSR = 0x3f;
+ ECHILD = 0xa;
+ ELNRNG = 0x30;
+ EPIPE = 0x20;
+ EBADMSG = 0x4a;
+ EBFONT = 0x3b;
+ EREMOTE = 0x42;
+ ETOOMANYREFS = 0x6d;
+ EPFNOSUPPORT = 0x60;
+ ENONET = 0x40;
+ EXFULL = 0x36;
+ EBADSLT = 0x39;
+ ENOTNAM = 0x76;
+ ELIBEXEC = 0x53;
+ ENOCSI = 0x32;
+ ENOTEMPTY = 0x27;
+ EADDRINUSE = 0x62;
+ ENETRESET = 0x66;
+ EISDIR = 0x15;
+ EIDRM = 0x2b;
+ ECOMM = 0x46;
+ EBADFD = 0x4d;
+ EL2HLT = 0x33;
+ ENOKEY = 0x7e;
+ EINVAL = 0x16;
+ ESHUTDOWN = 0x6c;
+ EKEYREJECTED = 0x81;
+ ELIBSCN = 0x51;
+ ENAVAIL = 0x77;
+ ENOSTR = 0x3c;
+ EOVERFLOW = 0x4b;
+ EUCLEAN = 0x75;
+ ENOMEDIUM = 0x7b;
+ EBUSY = 0x10;
+ EPROTO = 0x47;
+ ENODEV = 0x13;
+ EKEYEXPIRED = 0x7f;
+ EROFS = 0x1e;
+ ELIBACC = 0x4f;
+ E2BIG = 0x7;
+ EDEADLK = 0x23;
+ ECONNRESET = 0x68;
+ ENXIO = 0x6;
+ EBADRQC = 0x38;
+ ENAMETOOLONG = 0x24;
+ ESOCKTNOSUPPORT = 0x5e;
+ EDOTDOT = 0x49;
+ EADDRNOTAVAIL = 0x63;
+ ETIME = 0x3e;
+ EPROTONOSUPPORT = 0x5d;
+ ENOTRECOVERABLE = 0x83;
+ EIO = 0x5;
+ ENETUNREACH = 0x65;
+ EXDEV = 0x12;
+ EDQUOT = 0x7a;
+ EREMOTEIO = 0x79;
+ ENOSPC = 0x1c;
+ ENOEXEC = 0x8;
+ EMSGSIZE = 0x5a;
+ EDOM = 0x21;
+ EFBIG = 0x1b;
+ ESRCH = 0x3;
+ ECHRNG = 0x2c;
+ EHOSTDOWN = 0x70;
+ ENOLCK = 0x25;
+ ENFILE = 0x17;
+ ENOSYS = 0x26;
+ ENOTCONN = 0x6b;
+ ENOTSUP = 0x5f;
+ ESRMNT = 0x45;
+ EDEADLOCK = 0x23;
+ ECONNABORTED = 0x67;
+ ENOANO = 0x37;
+ EISCONN = 0x6a;
+ EUSERS = 0x57;
+ ENOPROTOOPT = 0x5c;
+ EMFILE = 0x18;
+ ENOBUFS = 0x69;
+ EL3HLT = 0x2e;
+ EFAULT = 0xe;
+ EWOULDBLOCK = 0xb;
+ ELIBBAD = 0x50;
+ ESTRPIPE = 0x56;
+ ECONNREFUSED = 0x6f;
+ EAGAIN = 0xb;
+ ELIBMAX = 0x52;
+ EEXIST = 0x11;
+ EL2NSYNC = 0x2d;
+ ENOENT = 0x2;
+ ENOPKG = 0x41;
+ EKEYREVOKED = 0x80;
+ EHOSTUNREACH = 0x71;
+ ENOTUNIQ = 0x4c;
+ EOPNOTSUPP = 0x5f;
+ ENOTDIR = 0x14;
+ EMEDIUMTYPE = 0x7c;
+ SIGBUS = 0x7;
+ SIGTTIN = 0x15;
+ SIGPROF = 0x1b;
+ SIGFPE = 0x8;
+ SIGHUP = 0x1;
+ SIGTTOU = 0x16;
+ SIGSTKFLT = 0x10;
+ SIGUSR1 = 0xa;
+ SIGURG = 0x17;
+ SIGQUIT = 0x3;
+ SIGCLD = 0x11;
+ SIGIO = 0x1d;
+ SIGABRT = 0x6;
+ SIGUSR2 = 0xc;
+ SIGTRAP = 0x5;
+ SIGVTALRM = 0x1a;
+ SIGPOLL = 0x1d;
+ SIGSEGV = 0xb;
+ SIGCONT = 0x12;
+ SIGPIPE = 0xd;
+ SIGWINCH = 0x1c;
+ SIGXFSZ = 0x19;
+ SIGCHLD = 0x11;
+ SIGSYS = 0x1f;
+ SIGSTOP = 0x13;
+ SIGALRM = 0xe;
+ SIGTSTP = 0x14;
+ SIGKILL = 0x9;
+ SIGXCPU = 0x18;
+ SIGUNUSED = 0x1f;
+ SIGPWR = 0x1e;
+ SIGILL = 0x4;
+ SIGINT = 0x2;
+ SIGIOT = 0x6;
+ SIGTERM = 0xf;
+)
+
+// Types
+
+
+// Error table
+var errors = [...]string {
+ 72: "multihop attempted",
+ 49: "protocol driver not attached",
+ 97: "address family not supported by protocol",
+ 78: "remote address changed",
+ 13: "permission denied",
+ 47: "level 3 reset",
+ 89: "destination address required",
+ 84: "invalid or incomplete multibyte or wide character",
+ 29: "illegal seek",
+ 31: "too many links",
+ 130: "owner died",
+ 25: "inappropriate ioctl for device",
+ 52: "invalid exchange",
+ 9: "bad file descriptor",
+ 53: "invalid request descriptor",
+ 68: "advertise error",
+ 34: "numerical result out of range",
+ 125: "operation canceled",
+ 26: "text file busy",
+ 12: "cannot allocate memory",
+ 115: "operation now in progress",
+ 15: "block device required",
+ 91: "protocol wrong type for socket",
+ 85: "interrupted system call should be restarted",
+ 120: "is a named type file",
+ 42: "no message of desired type",
+ 114: "operation already in progress",
+ 110: "connection timed out",
+ 61: "no data available",
+ 4: "interrupted system call",
+ 67: "link has been severed",
+ 1: "operation not permitted",
+ 40: "too many levels of symbolic links",
+ 100: "network is down",
+ 116: "stale NFS file handle",
+ 88: "socket operation on non-socket",
+ 63: "out of streams resources",
+ 10: "no child processes",
+ 48: "link number out of range",
+ 32: "broken pipe",
+ 74: "bad message",
+ 59: "bad font file format",
+ 66: "object is remote",
+ 109: "too many references: cannot splice",
+ 96: "protocol family not supported",
+ 64: "machine is not on the network",
+ 54: "exchange full",
+ 57: "invalid slot",
+ 118: "not a XENIX named type file",
+ 83: "cannot exec a shared library directly",
+ 50: "no CSI structure available",
+ 39: "directory not empty",
+ 98: "address already in use",
+ 102: "network dropped connection on reset",
+ 21: "is a directory",
+ 43: "identifier removed",
+ 70: "communication error on send",
+ 77: "file descriptor in bad state",
+ 51: "level 2 halted",
+ 126: "required key not available",
+ 22: "invalid argument",
+ 108: "cannot send after transport endpoint shutdown",
+ 129: "key was rejected by service",
+ 81: ".lib section in a.out corrupted",
+ 119: "no XENIX semaphores available",
+ 60: "device not a stream",
+ 75: "value too large for defined data type",
+ 117: "structure needs cleaning",
+ 123: "no medium found",
+ 16: "device or resource busy",
+ 71: "protocol error",
+ 19: "no such device",
+ 127: "key has expired",
+ 30: "read-only file system",
+ 79: "can not access a needed shared library",
+ 7: "argument list too long",
+ 35: "resource deadlock avoided",
+ 104: "connection reset by peer",
+ 6: "no such device or address",
+ 56: "invalid request code",
+ 36: "file name too long",
+ 94: "socket type not supported",
+ 73: "RFS specific error",
+ 99: "cannot assign requested address",
+ 62: "timer expired",
+ 93: "protocol not supported",
+ 131: "state not recoverable",
+ 5: "input/output error",
+ 101: "network is unreachable",
+ 18: "invalid cross-device link",
+ 122: "disk quota exceeded",
+ 121: "remote I/O error",
+ 28: "no space left on device",
+ 8: "exec format error",
+ 90: "message too long",
+ 33: "numerical argument out of domain",
+ 27: "file too large",
+ 3: "no such process",
+ 44: "channel number out of range",
+ 112: "host is down",
+ 37: "no locks available",
+ 23: "too many open files in system",
+ 38: "function not implemented",
+ 107: "transport endpoint is not connected",
+ 95: "operation not supported",
+ 69: "srmount error",
+ 103: "software caused connection abort",
+ 55: "no anode",
+ 106: "transport endpoint is already connected",
+ 87: "too many users",
+ 92: "protocol not available",
+ 24: "too many open files",
+ 105: "no buffer space available",
+ 46: "level 3 halted",
+ 14: "bad address",
+ 11: "resource temporarily unavailable",
+ 80: "accessing a corrupted shared library",
+ 86: "streams pipe error",
+ 111: "connection refused",
+ 82: "attempting to link in too many shared libraries",
+ 17: "file exists",
+ 45: "level 2 not synchronized",
+ 2: "no such file or directory",
+ 65: "package not installed",
+ 128: "key has been revoked",
+ 113: "no route to host",
+ 76: "name not unique on network",
+ 20: "not a directory",
+ 124: "wrong medium type",
+}
+
diff --git a/src/pkg/syscall/zerrors_linux_amd64.go b/src/pkg/syscall/zerrors_linux_amd64.go
new file mode 100644
index 000000000..f1e7e011d
--- /dev/null
+++ b/src/pkg/syscall/zerrors_linux_amd64.go
@@ -0,0 +1,316 @@
+// mkerrors
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// godefs -gsyscall _errors.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+ EMULTIHOP = 0x48;
+ EUNATCH = 0x31;
+ EAFNOSUPPORT = 0x61;
+ EREMCHG = 0x4e;
+ EACCES = 0xd;
+ EL3RST = 0x2f;
+ EDESTADDRREQ = 0x59;
+ EILSEQ = 0x54;
+ ESPIPE = 0x1d;
+ EMLINK = 0x1f;
+ EOWNERDEAD = 0x82;
+ ENOTTY = 0x19;
+ EBADE = 0x34;
+ EBADF = 0x9;
+ EBADR = 0x35;
+ EADV = 0x44;
+ ERANGE = 0x22;
+ ECANCELED = 0x7d;
+ ETXTBSY = 0x1a;
+ ENOMEM = 0xc;
+ EINPROGRESS = 0x73;
+ ENOTBLK = 0xf;
+ EPROTOTYPE = 0x5b;
+ ERESTART = 0x55;
+ EISNAM = 0x78;
+ ENOMSG = 0x2a;
+ EALREADY = 0x72;
+ ETIMEDOUT = 0x6e;
+ ENODATA = 0x3d;
+ EINTR = 0x4;
+ ENOLINK = 0x43;
+ EPERM = 0x1;
+ ELOOP = 0x28;
+ ENETDOWN = 0x64;
+ ESTALE = 0x74;
+ ENOTSOCK = 0x58;
+ ENOSR = 0x3f;
+ ECHILD = 0xa;
+ ELNRNG = 0x30;
+ EPIPE = 0x20;
+ EBADMSG = 0x4a;
+ EBFONT = 0x3b;
+ EREMOTE = 0x42;
+ ETOOMANYREFS = 0x6d;
+ EPFNOSUPPORT = 0x60;
+ ENONET = 0x40;
+ EXFULL = 0x36;
+ EBADSLT = 0x39;
+ ENOTNAM = 0x76;
+ ELIBEXEC = 0x53;
+ ENOCSI = 0x32;
+ ENOTEMPTY = 0x27;
+ EADDRINUSE = 0x62;
+ ENETRESET = 0x66;
+ EISDIR = 0x15;
+ EIDRM = 0x2b;
+ ECOMM = 0x46;
+ EBADFD = 0x4d;
+ EL2HLT = 0x33;
+ ENOKEY = 0x7e;
+ EINVAL = 0x16;
+ ESHUTDOWN = 0x6c;
+ EKEYREJECTED = 0x81;
+ ELIBSCN = 0x51;
+ ENAVAIL = 0x77;
+ ENOSTR = 0x3c;
+ EOVERFLOW = 0x4b;
+ EUCLEAN = 0x75;
+ ENOMEDIUM = 0x7b;
+ EBUSY = 0x10;
+ EPROTO = 0x47;
+ ENODEV = 0x13;
+ EKEYEXPIRED = 0x7f;
+ EROFS = 0x1e;
+ ELIBACC = 0x4f;
+ E2BIG = 0x7;
+ EDEADLK = 0x23;
+ ECONNRESET = 0x68;
+ ENXIO = 0x6;
+ EBADRQC = 0x38;
+ ENAMETOOLONG = 0x24;
+ ESOCKTNOSUPPORT = 0x5e;
+ EDOTDOT = 0x49;
+ EADDRNOTAVAIL = 0x63;
+ ETIME = 0x3e;
+ EPROTONOSUPPORT = 0x5d;
+ ENOTRECOVERABLE = 0x83;
+ EIO = 0x5;
+ ENETUNREACH = 0x65;
+ EXDEV = 0x12;
+ EDQUOT = 0x7a;
+ EREMOTEIO = 0x79;
+ ENOSPC = 0x1c;
+ ENOEXEC = 0x8;
+ EMSGSIZE = 0x5a;
+ EDOM = 0x21;
+ EFBIG = 0x1b;
+ ESRCH = 0x3;
+ ECHRNG = 0x2c;
+ EHOSTDOWN = 0x70;
+ ENOLCK = 0x25;
+ ENFILE = 0x17;
+ ENOSYS = 0x26;
+ ENOTCONN = 0x6b;
+ ENOTSUP = 0x5f;
+ ESRMNT = 0x45;
+ EDEADLOCK = 0x23;
+ ECONNABORTED = 0x67;
+ ENOANO = 0x37;
+ EISCONN = 0x6a;
+ EUSERS = 0x57;
+ ENOPROTOOPT = 0x5c;
+ EMFILE = 0x18;
+ ENOBUFS = 0x69;
+ EL3HLT = 0x2e;
+ EFAULT = 0xe;
+ EWOULDBLOCK = 0xb;
+ ELIBBAD = 0x50;
+ ESTRPIPE = 0x56;
+ ECONNREFUSED = 0x6f;
+ EAGAIN = 0xb;
+ ELIBMAX = 0x52;
+ EEXIST = 0x11;
+ EL2NSYNC = 0x2d;
+ ENOENT = 0x2;
+ ENOPKG = 0x41;
+ EKEYREVOKED = 0x80;
+ EHOSTUNREACH = 0x71;
+ ENOTUNIQ = 0x4c;
+ EOPNOTSUPP = 0x5f;
+ ENOTDIR = 0x14;
+ EMEDIUMTYPE = 0x7c;
+ SIGBUS = 0x7;
+ SIGTTIN = 0x15;
+ SIGPROF = 0x1b;
+ SIGFPE = 0x8;
+ SIGHUP = 0x1;
+ SIGTTOU = 0x16;
+ SIGSTKFLT = 0x10;
+ SIGUSR1 = 0xa;
+ SIGURG = 0x17;
+ SIGQUIT = 0x3;
+ SIGCLD = 0x11;
+ SIGIO = 0x1d;
+ SIGABRT = 0x6;
+ SIGUSR2 = 0xc;
+ SIGTRAP = 0x5;
+ SIGVTALRM = 0x1a;
+ SIGPOLL = 0x1d;
+ SIGSEGV = 0xb;
+ SIGCONT = 0x12;
+ SIGPIPE = 0xd;
+ SIGWINCH = 0x1c;
+ SIGXFSZ = 0x19;
+ SIGCHLD = 0x11;
+ SIGSYS = 0x1f;
+ SIGSTOP = 0x13;
+ SIGALRM = 0xe;
+ SIGTSTP = 0x14;
+ SIGKILL = 0x9;
+ SIGXCPU = 0x18;
+ SIGUNUSED = 0x1f;
+ SIGPWR = 0x1e;
+ SIGILL = 0x4;
+ SIGINT = 0x2;
+ SIGIOT = 0x6;
+ SIGTERM = 0xf;
+)
+
+// Types
+
+
+// Error table
+var errors = [...]string {
+ 72: "multihop attempted",
+ 49: "protocol driver not attached",
+ 97: "address family not supported by protocol",
+ 78: "remote address changed",
+ 13: "permission denied",
+ 47: "level 3 reset",
+ 89: "destination address required",
+ 84: "invalid or incomplete multibyte or wide character",
+ 29: "illegal seek",
+ 31: "too many links",
+ 130: "owner died",
+ 25: "inappropriate ioctl for device",
+ 52: "invalid exchange",
+ 9: "bad file descriptor",
+ 53: "invalid request descriptor",
+ 68: "advertise error",
+ 34: "numerical result out of range",
+ 125: "operation canceled",
+ 26: "text file busy",
+ 12: "cannot allocate memory",
+ 115: "operation now in progress",
+ 15: "block device required",
+ 91: "protocol wrong type for socket",
+ 85: "interrupted system call should be restarted",
+ 120: "is a named type file",
+ 42: "no message of desired type",
+ 114: "operation already in progress",
+ 110: "connection timed out",
+ 61: "no data available",
+ 4: "interrupted system call",
+ 67: "link has been severed",
+ 1: "operation not permitted",
+ 40: "too many levels of symbolic links",
+ 100: "network is down",
+ 116: "stale NFS file handle",
+ 88: "socket operation on non-socket",
+ 63: "out of streams resources",
+ 10: "no child processes",
+ 48: "link number out of range",
+ 32: "broken pipe",
+ 74: "bad message",
+ 59: "bad font file format",
+ 66: "object is remote",
+ 109: "too many references: cannot splice",
+ 96: "protocol family not supported",
+ 64: "machine is not on the network",
+ 54: "exchange full",
+ 57: "invalid slot",
+ 118: "not a XENIX named type file",
+ 83: "cannot exec a shared library directly",
+ 50: "no CSI structure available",
+ 39: "directory not empty",
+ 98: "address already in use",
+ 102: "network dropped connection on reset",
+ 21: "is a directory",
+ 43: "identifier removed",
+ 70: "communication error on send",
+ 77: "file descriptor in bad state",
+ 51: "level 2 halted",
+ 126: "required key not available",
+ 22: "invalid argument",
+ 108: "cannot send after transport endpoint shutdown",
+ 129: "key was rejected by service",
+ 81: ".lib section in a.out corrupted",
+ 119: "no XENIX semaphores available",
+ 60: "device not a stream",
+ 75: "value too large for defined data type",
+ 117: "structure needs cleaning",
+ 123: "no medium found",
+ 16: "device or resource busy",
+ 71: "protocol error",
+ 19: "no such device",
+ 127: "key has expired",
+ 30: "read-only file system",
+ 79: "can not access a needed shared library",
+ 7: "argument list too long",
+ 35: "resource deadlock avoided",
+ 104: "connection reset by peer",
+ 6: "no such device or address",
+ 56: "invalid request code",
+ 36: "file name too long",
+ 94: "socket type not supported",
+ 73: "RFS specific error",
+ 99: "cannot assign requested address",
+ 62: "timer expired",
+ 93: "protocol not supported",
+ 131: "state not recoverable",
+ 5: "input/output error",
+ 101: "network is unreachable",
+ 18: "invalid cross-device link",
+ 122: "disk quota exceeded",
+ 121: "remote I/O error",
+ 28: "no space left on device",
+ 8: "exec format error",
+ 90: "message too long",
+ 33: "numerical argument out of domain",
+ 27: "file too large",
+ 3: "no such process",
+ 44: "channel number out of range",
+ 112: "host is down",
+ 37: "no locks available",
+ 23: "too many open files in system",
+ 38: "function not implemented",
+ 107: "transport endpoint is not connected",
+ 95: "operation not supported",
+ 69: "srmount error",
+ 103: "software caused connection abort",
+ 55: "no anode",
+ 106: "transport endpoint is already connected",
+ 87: "too many users",
+ 92: "protocol not available",
+ 24: "too many open files",
+ 105: "no buffer space available",
+ 46: "level 3 halted",
+ 14: "bad address",
+ 11: "resource temporarily unavailable",
+ 80: "accessing a corrupted shared library",
+ 86: "streams pipe error",
+ 111: "connection refused",
+ 82: "attempting to link in too many shared libraries",
+ 17: "file exists",
+ 45: "level 2 not synchronized",
+ 2: "no such file or directory",
+ 65: "package not installed",
+ 128: "key has been revoked",
+ 113: "no route to host",
+ 76: "name not unique on network",
+ 20: "not a directory",
+ 124: "wrong medium type",
+}
+
diff --git a/src/pkg/syscall/zsyscall_darwin_386.go b/src/pkg/syscall/zsyscall_darwin_386.go
new file mode 100644
index 000000000..61f7c01db
--- /dev/null
+++ b/src/pkg/syscall/zsyscall_darwin_386.go
@@ -0,0 +1,624 @@
+// mksyscall -l32 syscall_darwin.go syscall_darwin_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package syscall
+
+import (
+ "syscall";
+ "unsafe";
+)
+
+func getgroups(ngid int, gid *_Gid_t) (n int, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func setgroups(ngid int, gid *_Gid_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0);
+ errno = int(e1);
+ return;
+}
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) {
+ r0, r1, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0);
+ wpid = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func pipe() (r int, w int, errno int) {
+ r0, r1, e1 := Syscall(SYS_PIPE, 0, 0, 0);
+ r = int(r0);
+ w = int(r1);
+ errno = int(e1);
+ return;
+}
+
+func lseek(fd int, offset int64, whence int) (newoffset uintptr, errno int) {
+ r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset >> 32), uintptr(whence), 0, 0);
+ newoffset = uintptr(r0);
+ errno = int(e1);
+ return;
+}
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)));
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func bind(s int, addr uintptr, addrlen _Socklen) (errno int) {
+ r0, r1, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen));
+ errno = int(e1);
+ return;
+}
+
+func connect(s int, addr uintptr, addrlen _Socklen) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen));
+ errno = int(e1);
+ return;
+}
+
+func socket(domain int, typ int, proto int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto));
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0);
+ errno = int(e1);
+ return;
+}
+
+func kevent(kq int, change uintptr, nchange int, event uintptr, nevent int, timeout *Timespec) (n int, errno int) {
+ r0, r1, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func fcntl(fd int, cmd int, arg int) (val int, errno int) {
+ r0, r1, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg));
+ val = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Access(path string, flags int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0);
+ errno = int(e1);
+ return;
+}
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (errno int) {
+ r0, r1, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Chdir(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Chflags(path string, flags int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0);
+ errno = int(e1);
+ return;
+}
+
+func Chmod(path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Chown(path string, uid int, gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+ errno = int(e1);
+ return;
+}
+
+func Chroot(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Close(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Dup(fd int) (nfd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0);
+ nfd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Dup2(from int, to int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0);
+ errno = int(e1);
+ return;
+}
+
+func Exchangedata(path1 string, path2 string, options int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(StringBytePtr(path1))), uintptr(unsafe.Pointer(StringBytePtr(path2))), uintptr(options));
+ errno = int(e1);
+ return;
+}
+
+func Exit(code int) () {
+ r0, r1, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0);
+ return;
+}
+
+func Fchdir(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Fchflags(path string, flags int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHFLAGS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fchmod(fd int, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fchown(fd int, uid int, gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid));
+ errno = int(e1);
+ return;
+}
+
+func Flock(fd int, how int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fpathconf(fd int, name int) (val int, errno int) {
+ r0, r1, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0);
+ val = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Fstat(fd int, stat *Stat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fstatfs(fd int, stat *Statfs_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fsync(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Ftruncate(fd int, length int64) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length >> 32));
+ errno = int(e1);
+ return;
+}
+
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, errno int) {
+ var _p0 *byte;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getdtablesize() (size int) {
+ r0, r1, e1 := Syscall(SYS_GETDTABLESIZE, 0, 0, 0);
+ size = int(r0);
+ return;
+}
+
+func Getegid() (egid int) {
+ r0, r1, e1 := Syscall(SYS_GETEGID, 0, 0, 0);
+ egid = int(r0);
+ return;
+}
+
+func Geteuid() (uid int) {
+ r0, r1, e1 := Syscall(SYS_GETEUID, 0, 0, 0);
+ uid = int(r0);
+ return;
+}
+
+func Getfsstat(buf []Statfs_t, flags int) (n int, errno int) {
+ var _p0 *Statfs_t;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall(SYS_GETFSSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getgid() (gid int) {
+ r0, r1, e1 := Syscall(SYS_GETGID, 0, 0, 0);
+ gid = int(r0);
+ return;
+}
+
+func Getpgid(pid int) (pgid int, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETPGID, uintptr(pid), 0, 0);
+ pgid = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getpgrp() (pgrp int) {
+ r0, r1, e1 := Syscall(SYS_GETPGRP, 0, 0, 0);
+ pgrp = int(r0);
+ return;
+}
+
+func Getpid() (pid int) {
+ r0, r1, e1 := Syscall(SYS_GETPID, 0, 0, 0);
+ pid = int(r0);
+ return;
+}
+
+func Getppid() (ppid int) {
+ r0, r1, e1 := Syscall(SYS_GETPPID, 0, 0, 0);
+ ppid = int(r0);
+ return;
+}
+
+func Getpriority(which int, who int) (prio int, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0);
+ prio = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getrlimit(which int, lim *Rlimit) (errno int) {
+ r0, r1, e1 := Syscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Getrusage(who int, rusage *Rusage) (errno int) {
+ r0, r1, e1 := Syscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Getsid(pid int) (sid int, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETSID, uintptr(pid), 0, 0);
+ sid = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getuid() (uid int) {
+ r0, r1, e1 := Syscall(SYS_GETUID, 0, 0, 0);
+ uid = int(r0);
+ return;
+}
+
+func Issetugid() (tainted bool) {
+ r0, r1, e1 := Syscall(SYS_ISSETUGID, 0, 0, 0);
+ tainted = bool(r0 != 0);
+ return;
+}
+
+func Kill(pid int, signum int, posix int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix));
+ errno = int(e1);
+ return;
+}
+
+func Kqueue() (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_KQUEUE, 0, 0, 0);
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Lchown(path string, uid int, gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+ errno = int(e1);
+ return;
+}
+
+func Link(path string, link string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(StringBytePtr(link))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Listen(s int, backlog int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0);
+ errno = int(e1);
+ return;
+}
+
+func Lstat(path string, stat *Stat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Mkdir(path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Mkfifo(path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Mknod(path string, mode int, dev int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(dev));
+ errno = int(e1);
+ return;
+}
+
+func Open(path string, mode int, perm int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm));
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Pathconf(path string, name int) (val int, errno int) {
+ r0, r1, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(name), 0);
+ val = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Pread(fd int, p []byte, offset int64) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), uintptr(offset >> 32), 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Pwrite(fd int, p []byte, offset int64) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), uintptr(offset >> 32), 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Read(fd int, p []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Readlink(path string, buf []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Rename(from string, to string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(StringBytePtr(from))), uintptr(unsafe.Pointer(StringBytePtr(to))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Revoke(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Rmdir(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setegid(egid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Seteuid(euid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETEUID, uintptr(euid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setgid(gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETGID, uintptr(gid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setlogin(name string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(StringBytePtr(name))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setpgid(pid int, pgid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setpriority(which int, who int, prio int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio));
+ errno = int(e1);
+ return;
+}
+
+func Setprivexec(flag int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setregid(rgid int, egid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setreuid(ruid int, euid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setrlimit(which int, lim *Rlimit) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setsid() (pid int, errno int) {
+ r0, r1, e1 := Syscall(SYS_SETSID, 0, 0, 0);
+ pid = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Settimeofday(tp *Timeval) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setuid(uid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETUID, uintptr(uid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Stat(path string, stat *Stat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Statfs(path string, stat *Statfs_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Symlink(path string, link string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(StringBytePtr(link))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Sync() (errno int) {
+ r0, r1, e1 := Syscall(SYS_SYNC, 0, 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Truncate(path string, length int64) (errno int) {
+ r0, r1, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(length), uintptr(length >> 32));
+ errno = int(e1);
+ return;
+}
+
+func Umask(newmask int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UMASK, uintptr(newmask), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Undelete(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Unlink(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Unmount(path string, flags int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0);
+ errno = int(e1);
+ return;
+}
+
+func Write(fd int, p []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func read(fd int, buf *byte, nbuf int) (n int, errno int) {
+ r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func write(fd int, buf *byte, nbuf int) (n int, errno int) {
+ r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func gettimeofday(tp *Timeval) (sec int64, usec int32, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0);
+ sec = int64(r0);
+ usec = int32(r1);
+ errno = int(e1);
+ return;
+}
+
+
+
diff --git a/src/pkg/syscall/zsyscall_darwin_amd64.go b/src/pkg/syscall/zsyscall_darwin_amd64.go
new file mode 100644
index 000000000..c8a0b10a7
--- /dev/null
+++ b/src/pkg/syscall/zsyscall_darwin_amd64.go
@@ -0,0 +1,624 @@
+// mksyscall syscall_darwin.go syscall_darwin_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package syscall
+
+import (
+ "syscall";
+ "unsafe";
+)
+
+func getgroups(ngid int, gid *_Gid_t) (n int, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func setgroups(ngid int, gid *_Gid_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0);
+ errno = int(e1);
+ return;
+}
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) {
+ r0, r1, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0);
+ wpid = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func pipe() (r int, w int, errno int) {
+ r0, r1, e1 := Syscall(SYS_PIPE, 0, 0, 0);
+ r = int(r0);
+ w = int(r1);
+ errno = int(e1);
+ return;
+}
+
+func lseek(fd int, offset int64, whence int) (newoffset uintptr, errno int) {
+ r0, r1, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence));
+ newoffset = uintptr(r0);
+ errno = int(e1);
+ return;
+}
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)));
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func bind(s int, addr uintptr, addrlen _Socklen) (errno int) {
+ r0, r1, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen));
+ errno = int(e1);
+ return;
+}
+
+func connect(s int, addr uintptr, addrlen _Socklen) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen));
+ errno = int(e1);
+ return;
+}
+
+func socket(domain int, typ int, proto int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto));
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0);
+ errno = int(e1);
+ return;
+}
+
+func kevent(kq int, change uintptr, nchange int, event uintptr, nevent int, timeout *Timespec) (n int, errno int) {
+ r0, r1, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func fcntl(fd int, cmd int, arg int) (val int, errno int) {
+ r0, r1, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg));
+ val = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Access(path string, flags int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0);
+ errno = int(e1);
+ return;
+}
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (errno int) {
+ r0, r1, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Chdir(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Chflags(path string, flags int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0);
+ errno = int(e1);
+ return;
+}
+
+func Chmod(path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Chown(path string, uid int, gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+ errno = int(e1);
+ return;
+}
+
+func Chroot(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Close(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Dup(fd int) (nfd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0);
+ nfd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Dup2(from int, to int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0);
+ errno = int(e1);
+ return;
+}
+
+func Exchangedata(path1 string, path2 string, options int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(StringBytePtr(path1))), uintptr(unsafe.Pointer(StringBytePtr(path2))), uintptr(options));
+ errno = int(e1);
+ return;
+}
+
+func Exit(code int) () {
+ r0, r1, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0);
+ return;
+}
+
+func Fchdir(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Fchflags(path string, flags int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHFLAGS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fchmod(fd int, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fchown(fd int, uid int, gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid));
+ errno = int(e1);
+ return;
+}
+
+func Flock(fd int, how int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fpathconf(fd int, name int) (val int, errno int) {
+ r0, r1, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0);
+ val = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Fstat(fd int, stat *Stat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fstatfs(fd int, stat *Statfs_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fsync(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Ftruncate(fd int, length int64) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0);
+ errno = int(e1);
+ return;
+}
+
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, errno int) {
+ var _p0 *byte;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getdtablesize() (size int) {
+ r0, r1, e1 := Syscall(SYS_GETDTABLESIZE, 0, 0, 0);
+ size = int(r0);
+ return;
+}
+
+func Getegid() (egid int) {
+ r0, r1, e1 := Syscall(SYS_GETEGID, 0, 0, 0);
+ egid = int(r0);
+ return;
+}
+
+func Geteuid() (uid int) {
+ r0, r1, e1 := Syscall(SYS_GETEUID, 0, 0, 0);
+ uid = int(r0);
+ return;
+}
+
+func Getfsstat(buf []Statfs_t, flags int) (n int, errno int) {
+ var _p0 *Statfs_t;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall(SYS_GETFSSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getgid() (gid int) {
+ r0, r1, e1 := Syscall(SYS_GETGID, 0, 0, 0);
+ gid = int(r0);
+ return;
+}
+
+func Getpgid(pid int) (pgid int, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETPGID, uintptr(pid), 0, 0);
+ pgid = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getpgrp() (pgrp int) {
+ r0, r1, e1 := Syscall(SYS_GETPGRP, 0, 0, 0);
+ pgrp = int(r0);
+ return;
+}
+
+func Getpid() (pid int) {
+ r0, r1, e1 := Syscall(SYS_GETPID, 0, 0, 0);
+ pid = int(r0);
+ return;
+}
+
+func Getppid() (ppid int) {
+ r0, r1, e1 := Syscall(SYS_GETPPID, 0, 0, 0);
+ ppid = int(r0);
+ return;
+}
+
+func Getpriority(which int, who int) (prio int, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0);
+ prio = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getrlimit(which int, lim *Rlimit) (errno int) {
+ r0, r1, e1 := Syscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Getrusage(who int, rusage *Rusage) (errno int) {
+ r0, r1, e1 := Syscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Getsid(pid int) (sid int, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETSID, uintptr(pid), 0, 0);
+ sid = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getuid() (uid int) {
+ r0, r1, e1 := Syscall(SYS_GETUID, 0, 0, 0);
+ uid = int(r0);
+ return;
+}
+
+func Issetugid() (tainted bool) {
+ r0, r1, e1 := Syscall(SYS_ISSETUGID, 0, 0, 0);
+ tainted = bool(r0 != 0);
+ return;
+}
+
+func Kill(pid int, signum int, posix int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix));
+ errno = int(e1);
+ return;
+}
+
+func Kqueue() (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_KQUEUE, 0, 0, 0);
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Lchown(path string, uid int, gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+ errno = int(e1);
+ return;
+}
+
+func Link(path string, link string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(StringBytePtr(link))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Listen(s int, backlog int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0);
+ errno = int(e1);
+ return;
+}
+
+func Lstat(path string, stat *Stat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Mkdir(path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Mkfifo(path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Mknod(path string, mode int, dev int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(dev));
+ errno = int(e1);
+ return;
+}
+
+func Open(path string, mode int, perm int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm));
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Pathconf(path string, name int) (val int, errno int) {
+ r0, r1, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(name), 0);
+ val = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Pread(fd int, p []byte, offset int64) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Pwrite(fd int, p []byte, offset int64) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Read(fd int, p []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Readlink(path string, buf []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Rename(from string, to string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(StringBytePtr(from))), uintptr(unsafe.Pointer(StringBytePtr(to))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Revoke(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Rmdir(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setegid(egid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Seteuid(euid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETEUID, uintptr(euid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setgid(gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETGID, uintptr(gid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setlogin(name string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(StringBytePtr(name))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setpgid(pid int, pgid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setpriority(which int, who int, prio int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio));
+ errno = int(e1);
+ return;
+}
+
+func Setprivexec(flag int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setregid(rgid int, egid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setreuid(ruid int, euid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setrlimit(which int, lim *Rlimit) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setsid() (pid int, errno int) {
+ r0, r1, e1 := Syscall(SYS_SETSID, 0, 0, 0);
+ pid = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Settimeofday(tp *Timeval) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setuid(uid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETUID, uintptr(uid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Stat(path string, stat *Stat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Statfs(path string, stat *Statfs_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Symlink(path string, link string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(StringBytePtr(link))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Sync() (errno int) {
+ r0, r1, e1 := Syscall(SYS_SYNC, 0, 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Truncate(path string, length int64) (errno int) {
+ r0, r1, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(length), 0);
+ errno = int(e1);
+ return;
+}
+
+func Umask(newmask int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UMASK, uintptr(newmask), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Undelete(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Unlink(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Unmount(path string, flags int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0);
+ errno = int(e1);
+ return;
+}
+
+func Write(fd int, p []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func read(fd int, buf *byte, nbuf int) (n int, errno int) {
+ r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func write(fd int, buf *byte, nbuf int) (n int, errno int) {
+ r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func gettimeofday(tp *Timeval) (sec int64, usec int32, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0);
+ sec = int64(r0);
+ usec = int32(r1);
+ errno = int(e1);
+ return;
+}
+
+
+
diff --git a/src/pkg/syscall/zsyscall_linux_386.go b/src/pkg/syscall/zsyscall_linux_386.go
new file mode 100644
index 000000000..ef323b088
--- /dev/null
+++ b/src/pkg/syscall/zsyscall_linux_386.go
@@ -0,0 +1,720 @@
+// mksyscall syscall_linux.go syscall_linux_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package syscall
+
+import (
+ "syscall";
+ "unsafe";
+)
+
+func pipe(p *[2]_C_int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func utimes(path string, times *[2]Timeval) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(times)), 0);
+ errno = int(e1);
+ return;
+}
+
+func futimesat(dirfd int, path string, times *[2]Timeval) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(times)));
+ errno = int(e1);
+ return;
+}
+
+func Getcwd(buf []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall(SYS_GETCWD, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func getgroups(n int, list *_Gid_t) (nn int, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
+ nn = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func setgroups(n int, list *_Gid_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
+ errno = int(e1);
+ return;
+}
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) {
+ r0, r1, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0);
+ wpid = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Access(path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Acct(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Adjtimex(buf *Timex) (state int, errno int) {
+ r0, r1, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0);
+ state = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Chdir(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Chmod(path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Chown(path string, uid int, gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+ errno = int(e1);
+ return;
+}
+
+func Chroot(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Close(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Creat(path string, mode int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_CREAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Dup(oldfd int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0);
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Dup2(oldfd int, newfd int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0);
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func EpollCreate(size int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0);
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, errno int) {
+ var _p0 *EpollEvent;
+ if len(events) > 0 { _p0 = &events[0]; }
+ r0, r1, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(unsafe.Pointer(_p0)), uintptr(len(events)), uintptr(msec), 0, 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Exit(code int) () {
+ r0, r1, e1 := Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0);
+ return;
+}
+
+func Faccessat(dirfd int, path string, mode int, flags int) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(flags), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Fallocate(fd int, mode int, off int64, len int64) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off >> 32), uintptr(len), uintptr(len >> 32));
+ errno = int(e1);
+ return;
+}
+
+func Fchdir(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Fchmod(fd int, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fchmodat(dirfd int, path string, mode int, flags int) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(flags), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Fchown(fd int, uid int, gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid));
+ errno = int(e1);
+ return;
+}
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid), uintptr(flags), 0);
+ errno = int(e1);
+ return;
+}
+
+func fcntl(fd int, cmd int, arg int) (val int, errno int) {
+ r0, r1, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg));
+ val = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Fdatasync(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Fstat(fd int, stat *Stat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fstatfs(fd int, buf *Statfs_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fsync(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Ftruncate(fd int, length int64) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length >> 32));
+ errno = int(e1);
+ return;
+}
+
+func Getdents(fd int, buf []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getegid() (egid int) {
+ r0, r1, e1 := Syscall(SYS_GETEGID, 0, 0, 0);
+ egid = int(r0);
+ return;
+}
+
+func Geteuid() (euid int) {
+ r0, r1, e1 := Syscall(SYS_GETEUID, 0, 0, 0);
+ euid = int(r0);
+ return;
+}
+
+func Getgid() (gid int) {
+ r0, r1, e1 := Syscall(SYS_GETGID, 0, 0, 0);
+ gid = int(r0);
+ return;
+}
+
+func Getpgid(pid int) (pgid int, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETPGID, uintptr(pid), 0, 0);
+ pgid = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getpgrp() (pid int) {
+ r0, r1, e1 := Syscall(SYS_GETPGRP, 0, 0, 0);
+ pid = int(r0);
+ return;
+}
+
+func Getpid() (pid int) {
+ r0, r1, e1 := Syscall(SYS_GETPID, 0, 0, 0);
+ pid = int(r0);
+ return;
+}
+
+func Getppid() (ppid int) {
+ r0, r1, e1 := Syscall(SYS_GETPPID, 0, 0, 0);
+ ppid = int(r0);
+ return;
+}
+
+func Getrlimit(resource int, rlim *Rlimit) (errno int) {
+ r0, r1, e1 := Syscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Getrusage(who int, rusage *Rusage) (errno int) {
+ r0, r1, e1 := Syscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Gettid() (tid int) {
+ r0, r1, e1 := Syscall(SYS_GETTID, 0, 0, 0);
+ tid = int(r0);
+ return;
+}
+
+func Gettimeofday(tv *Timeval) (errno int) {
+ r0, r1, e1 := Syscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Getuid() (uid int) {
+ r0, r1, e1 := Syscall(SYS_GETUID, 0, 0, 0);
+ uid = int(r0);
+ return;
+}
+
+func Ioperm(from int, num int, on int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on));
+ errno = int(e1);
+ return;
+}
+
+func Iopl(level int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Kill(pid int, sig int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(sig), 0);
+ errno = int(e1);
+ return;
+}
+
+func Klogctl(typ int, buf []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Lchown(path string, uid int, gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+ errno = int(e1);
+ return;
+}
+
+func Link(oldpath string, newpath string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Lstat(path string, stat *Stat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Mkdir(path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Mkdirat(dirfd int, path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode));
+ errno = int(e1);
+ return;
+}
+
+func Mknod(path string, mode int, dev int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(dev));
+ errno = int(e1);
+ return;
+}
+
+func Mknodat(dirfd int, path string, mode int, dev int) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(dev), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Nanosleep(time *Timespec, leftover *Timespec) (errno int) {
+ r0, r1, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Open(path string, mode int, perm int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm));
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Openat(dirfd int, path string, flags int, mode int) (fd int, errno int) {
+ r0, r1, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), uintptr(mode), 0, 0);
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Pause() (errno int) {
+ r0, r1, e1 := Syscall(SYS_PAUSE, 0, 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func PivotRoot(newroot string, putold string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(StringBytePtr(newroot))), uintptr(unsafe.Pointer(StringBytePtr(putold))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Pread(fd int, p []byte, offset int64) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), uintptr(offset >> 32), 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Pwrite(fd int, p []byte, offset int64) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), uintptr(offset >> 32), 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Read(fd int, p []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Readlink(path string, buf []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Rename(oldpath string, newpath string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(newdirfd), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Rmdir(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Seek(fd int, offset int64, whence int) (off int64, errno int) {
+ r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset >> 32), uintptr(whence), 0, 0);
+ off = int64(r0);
+ errno = int(e1);
+ return;
+}
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) {
+ r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Setdomainname(p []byte) (errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setfsgid(gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setfsuid(uid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setgid(gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETGID, uintptr(gid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Sethostname(p []byte) (errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall(SYS_SETHOSTNAME, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setpgid(pid int, pgid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setregid(rgid int, egid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setresgid(rgid int, egid int, sgid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid));
+ errno = int(e1);
+ return;
+}
+
+func Setresuid(ruid int, euid int, suid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid));
+ errno = int(e1);
+ return;
+}
+
+func Setreuid(ruid int, euid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setrlimit(resource int, rlim *Rlimit) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setsid() (pid int) {
+ r0, r1, e1 := Syscall(SYS_SETSID, 0, 0, 0);
+ pid = int(r0);
+ return;
+}
+
+func Settimeofday(tv *Timeval) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setuid(uid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETUID, uintptr(uid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, errno int) {
+ r0, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags));
+ n = int64(r0);
+ errno = int(e1);
+ return;
+}
+
+func Stat(path string, stat *Stat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Statfs(path string, buf *Statfs_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Symlink(oldpath string, newpath string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Sync() () {
+ r0, r1, e1 := Syscall(SYS_SYNC, 0, 0, 0);
+ return;
+}
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off >> 32), uintptr(n), uintptr(n >> 32), uintptr(flags));
+ errno = int(e1);
+ return;
+}
+
+func Sysinfo(info *Sysinfo_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, errno int) {
+ r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0);
+ n = int64(r0);
+ errno = int(e1);
+ return;
+}
+
+func Tgkill(tgid int, tid int, sig int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig));
+ errno = int(e1);
+ return;
+}
+
+func Time(t *Time_t) (tt Time_t, errno int) {
+ r0, r1, e1 := Syscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0);
+ tt = Time_t(r0);
+ errno = int(e1);
+ return;
+}
+
+func Times(tms *Tms) (ticks uintptr, errno int) {
+ r0, r1, e1 := Syscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0);
+ ticks = uintptr(r0);
+ errno = int(e1);
+ return;
+}
+
+func Truncate(path string, length int64) (errno int) {
+ r0, r1, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(length), uintptr(length >> 32));
+ errno = int(e1);
+ return;
+}
+
+func Umask(mask int) (oldmask int) {
+ r0, r1, e1 := Syscall(SYS_UMASK, uintptr(mask), 0, 0);
+ oldmask = int(r0);
+ return;
+}
+
+func Uname(buf *Utsname) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Unlink(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Unlinkat(dirfd int, path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Unshare(flags int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Ustat(dev int, ubuf *Ustat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Utime(path string, buf *Utimbuf) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Write(fd int, p []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func exitThread(code int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func read(fd int, p *byte, np int) (n int, errno int) {
+ r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func write(fd int, p *byte, np int) (n int, errno int) {
+ r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+
+
diff --git a/src/pkg/syscall/zsyscall_linux_amd64.go b/src/pkg/syscall/zsyscall_linux_amd64.go
new file mode 100644
index 000000000..490ffc392
--- /dev/null
+++ b/src/pkg/syscall/zsyscall_linux_amd64.go
@@ -0,0 +1,764 @@
+// mksyscall syscall_linux.go syscall_linux_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package syscall
+
+import (
+ "syscall";
+ "unsafe";
+)
+
+func pipe(p *[2]_C_int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func utimes(path string, times *[2]Timeval) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(times)), 0);
+ errno = int(e1);
+ return;
+}
+
+func futimesat(dirfd int, path string, times *[2]Timeval) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(times)));
+ errno = int(e1);
+ return;
+}
+
+func Getcwd(buf []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall(SYS_GETCWD, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func getgroups(n int, list *_Gid_t) (nn int, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
+ nn = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func setgroups(n int, list *_Gid_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
+ errno = int(e1);
+ return;
+}
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) {
+ r0, r1, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0);
+ wpid = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Access(path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Acct(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Adjtimex(buf *Timex) (state int, errno int) {
+ r0, r1, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0);
+ state = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Chdir(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Chmod(path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Chown(path string, uid int, gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+ errno = int(e1);
+ return;
+}
+
+func Chroot(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Close(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Creat(path string, mode int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_CREAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Dup(oldfd int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0);
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Dup2(oldfd int, newfd int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0);
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func EpollCreate(size int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0);
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, errno int) {
+ var _p0 *EpollEvent;
+ if len(events) > 0 { _p0 = &events[0]; }
+ r0, r1, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(unsafe.Pointer(_p0)), uintptr(len(events)), uintptr(msec), 0, 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Exit(code int) () {
+ r0, r1, e1 := Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0);
+ return;
+}
+
+func Faccessat(dirfd int, path string, mode int, flags int) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(flags), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Fallocate(fd int, mode int, off int64, len int64) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Fchdir(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Fchmod(fd int, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fchmodat(dirfd int, path string, mode int, flags int) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(flags), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Fchown(fd int, uid int, gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid));
+ errno = int(e1);
+ return;
+}
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid), uintptr(flags), 0);
+ errno = int(e1);
+ return;
+}
+
+func fcntl(fd int, cmd int, arg int) (val int, errno int) {
+ r0, r1, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg));
+ val = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Fdatasync(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Fstat(fd int, stat *Stat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fstatfs(fd int, buf *Statfs_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Fsync(fd int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Ftruncate(fd int, length int64) (errno int) {
+ r0, r1, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0);
+ errno = int(e1);
+ return;
+}
+
+func Getdents(fd int, buf []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getegid() (egid int) {
+ r0, r1, e1 := Syscall(SYS_GETEGID, 0, 0, 0);
+ egid = int(r0);
+ return;
+}
+
+func Geteuid() (euid int) {
+ r0, r1, e1 := Syscall(SYS_GETEUID, 0, 0, 0);
+ euid = int(r0);
+ return;
+}
+
+func Getgid() (gid int) {
+ r0, r1, e1 := Syscall(SYS_GETGID, 0, 0, 0);
+ gid = int(r0);
+ return;
+}
+
+func Getpgid(pid int) (pgid int, errno int) {
+ r0, r1, e1 := Syscall(SYS_GETPGID, uintptr(pid), 0, 0);
+ pgid = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Getpgrp() (pid int) {
+ r0, r1, e1 := Syscall(SYS_GETPGRP, 0, 0, 0);
+ pid = int(r0);
+ return;
+}
+
+func Getpid() (pid int) {
+ r0, r1, e1 := Syscall(SYS_GETPID, 0, 0, 0);
+ pid = int(r0);
+ return;
+}
+
+func Getppid() (ppid int) {
+ r0, r1, e1 := Syscall(SYS_GETPPID, 0, 0, 0);
+ ppid = int(r0);
+ return;
+}
+
+func Getrlimit(resource int, rlim *Rlimit) (errno int) {
+ r0, r1, e1 := Syscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Getrusage(who int, rusage *Rusage) (errno int) {
+ r0, r1, e1 := Syscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Gettid() (tid int) {
+ r0, r1, e1 := Syscall(SYS_GETTID, 0, 0, 0);
+ tid = int(r0);
+ return;
+}
+
+func Gettimeofday(tv *Timeval) (errno int) {
+ r0, r1, e1 := Syscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Getuid() (uid int) {
+ r0, r1, e1 := Syscall(SYS_GETUID, 0, 0, 0);
+ uid = int(r0);
+ return;
+}
+
+func Ioperm(from int, num int, on int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on));
+ errno = int(e1);
+ return;
+}
+
+func Iopl(level int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Kill(pid int, sig int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(sig), 0);
+ errno = int(e1);
+ return;
+}
+
+func Klogctl(typ int, buf []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Lchown(path string, uid int, gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+ errno = int(e1);
+ return;
+}
+
+func Link(oldpath string, newpath string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Lstat(path string, stat *Stat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Mkdir(path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+ errno = int(e1);
+ return;
+}
+
+func Mkdirat(dirfd int, path string, mode int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode));
+ errno = int(e1);
+ return;
+}
+
+func Mknod(path string, mode int, dev int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(dev));
+ errno = int(e1);
+ return;
+}
+
+func Mknodat(dirfd int, path string, mode int, dev int) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(dev), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Nanosleep(time *Timespec, leftover *Timespec) (errno int) {
+ r0, r1, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Open(path string, mode int, perm int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm));
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Openat(dirfd int, path string, flags int, mode int) (fd int, errno int) {
+ r0, r1, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), uintptr(mode), 0, 0);
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Pause() (errno int) {
+ r0, r1, e1 := Syscall(SYS_PAUSE, 0, 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func PivotRoot(newroot string, putold string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(StringBytePtr(newroot))), uintptr(unsafe.Pointer(StringBytePtr(putold))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Pread(fd int, p []byte, offset int64) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Pwrite(fd int, p []byte, offset int64) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Read(fd int, p []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Readlink(path string, buf []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(buf) > 0 { _p0 = &buf[0]; }
+ r0, r1, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Rename(oldpath string, newpath string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(newdirfd), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Rmdir(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Seek(fd int, offset int64, whence int) (off int64, errno int) {
+ r0, r1, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence));
+ off = int64(r0);
+ errno = int(e1);
+ return;
+}
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) {
+ r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func Setdomainname(p []byte) (errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setfsgid(gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setfsuid(uid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setgid(gid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETGID, uintptr(gid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Sethostname(p []byte) (errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall(SYS_SETHOSTNAME, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setpgid(pid int, pgid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setregid(rgid int, egid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setresgid(rgid int, egid int, sgid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid));
+ errno = int(e1);
+ return;
+}
+
+func Setresuid(ruid int, euid int, suid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid));
+ errno = int(e1);
+ return;
+}
+
+func Setreuid(ruid int, euid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setrlimit(resource int, rlim *Rlimit) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Setsid() (pid int) {
+ r0, r1, e1 := Syscall(SYS_SETSID, 0, 0, 0);
+ pid = int(r0);
+ return;
+}
+
+func Settimeofday(tv *Timeval) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Setuid(uid int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SETUID, uintptr(uid), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, errno int) {
+ r0, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags));
+ n = int64(r0);
+ errno = int(e1);
+ return;
+}
+
+func Stat(path string, stat *Stat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Statfs(path string, buf *Statfs_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Symlink(oldpath string, newpath string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Sync() () {
+ r0, r1, e1 := Syscall(SYS_SYNC, 0, 0, 0);
+ return;
+}
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Sysinfo(info *Sysinfo_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, errno int) {
+ r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0);
+ n = int64(r0);
+ errno = int(e1);
+ return;
+}
+
+func Tgkill(tgid int, tid int, sig int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig));
+ errno = int(e1);
+ return;
+}
+
+func Time(t *Time_t) (tt Time_t, errno int) {
+ r0, r1, e1 := Syscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0);
+ tt = Time_t(r0);
+ errno = int(e1);
+ return;
+}
+
+func Times(tms *Tms) (ticks uintptr, errno int) {
+ r0, r1, e1 := Syscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0);
+ ticks = uintptr(r0);
+ errno = int(e1);
+ return;
+}
+
+func Truncate(path string, length int64) (errno int) {
+ r0, r1, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(length), 0);
+ errno = int(e1);
+ return;
+}
+
+func Umask(mask int) (oldmask int) {
+ r0, r1, e1 := Syscall(SYS_UMASK, uintptr(mask), 0, 0);
+ oldmask = int(r0);
+ return;
+}
+
+func Uname(buf *Utsname) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Unlink(path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Unlinkat(dirfd int, path string) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), 0);
+ errno = int(e1);
+ return;
+}
+
+func Unshare(flags int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func Ustat(dev int, ubuf *Ustat_t) (errno int) {
+ r0, r1, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Utime(path string, buf *Utimbuf) (errno int) {
+ r0, r1, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0);
+ errno = int(e1);
+ return;
+}
+
+func Write(fd int, p []byte) (n int, errno int) {
+ var _p0 *byte;
+ if len(p) > 0 { _p0 = &p[0]; }
+ r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func exitThread(code int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0);
+ errno = int(e1);
+ return;
+}
+
+func read(fd int, p *byte, np int) (n int, errno int) {
+ r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func write(fd int, p *byte, np int) (n int, errno int) {
+ r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np));
+ n = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)));
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func bind(s int, addr uintptr, addrlen _Socklen) (errno int) {
+ r0, r1, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen));
+ errno = int(e1);
+ return;
+}
+
+func connect(s int, addr uintptr, addrlen _Socklen) (errno int) {
+ r0, r1, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen));
+ errno = int(e1);
+ return;
+}
+
+func socket(domain int, typ int, proto int) (fd int, errno int) {
+ r0, r1, e1 := Syscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto));
+ fd = int(r0);
+ errno = int(e1);
+ return;
+}
+
+func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) {
+ r0, r1, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0);
+ errno = int(e1);
+ return;
+}
+
+func Listen(s int, n int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0);
+ errno = int(e1);
+ return;
+}
+
+func Shutdown(fd int, how int) (errno int) {
+ r0, r1, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0);
+ errno = int(e1);
+ return;
+}
+
+
+
diff --git a/src/pkg/syscall/zsysnum_darwin_386.go b/src/pkg/syscall/zsysnum_darwin_386.go
new file mode 100644
index 000000000..c4c48c2a2
--- /dev/null
+++ b/src/pkg/syscall/zsysnum_darwin_386.go
@@ -0,0 +1,485 @@
+// mksysnum_darwin /home/rsc/pub/xnu-1228/bsd/kern/syscalls.master
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+package syscall
+
+const (
+ // SYS_NOSYS = 0; // { int nosys(void); } { indirect syscall }
+ SYS_EXIT = 1; // { void exit(int rval); }
+ SYS_FORK = 2; // { int fork(void); }
+ SYS_READ = 3; // { user_ssize_t read(int fd, user_addr_t cbuf, user_size_t nbyte); }
+ SYS_WRITE = 4; // { user_ssize_t write(int fd, user_addr_t cbuf, user_size_t nbyte); }
+ SYS_OPEN = 5; // { int open(user_addr_t path, int flags, int mode); }
+ SYS_CLOSE = 6; // { int close(int fd); }
+ SYS_WAIT4 = 7; // { int wait4(int pid, user_addr_t status, int options, user_addr_t rusage); }
+ // SYS_NOSYS = 8; // { int nosys(void); } { old creat }
+ SYS_LINK = 9; // { int link(user_addr_t path, user_addr_t link); }
+ SYS_UNLINK = 10; // { int unlink(user_addr_t path); }
+ // SYS_NOSYS = 11; // { int nosys(void); } { old execv }
+ SYS_CHDIR = 12; // { int chdir(user_addr_t path); }
+ SYS_FCHDIR = 13; // { int fchdir(int fd); }
+ SYS_MKNOD = 14; // { int mknod(user_addr_t path, int mode, int dev); }
+ SYS_CHMOD = 15; // { int chmod(user_addr_t path, int mode); }
+ SYS_CHOWN = 16; // { int chown(user_addr_t path, int uid, int gid); }
+ SYS_OGETFSSTAT = 18; // { int ogetfsstat(user_addr_t buf, int bufsize, int flags); }
+ SYS_GETFSSTAT = 18; // { int getfsstat(user_addr_t buf, int bufsize, int flags); }
+ // SYS_NOSYS = 19; // { int nosys(void); } { old lseek }
+ SYS_GETPID = 20; // { int getpid(void); }
+ // SYS_NOSYS = 21; // { int nosys(void); } { old mount }
+ // SYS_NOSYS = 22; // { int nosys(void); } { old umount }
+ SYS_SETUID = 23; // { int setuid(uid_t uid); }
+ SYS_GETUID = 24; // { int getuid(void); }
+ SYS_GETEUID = 25; // { int geteuid(void); }
+ SYS_PTRACE = 26; // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
+ SYS_RECVMSG = 27; // { int recvmsg(int s, struct msghdr *msg, int flags); }
+ SYS_SENDMSG = 28; // { int sendmsg(int s, caddr_t msg, int flags); }
+ SYS_RECVFROM = 29; // { int recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, int *fromlenaddr); }
+ SYS_ACCEPT = 30; // { int accept(int s, caddr_t name, socklen_t *anamelen); }
+ SYS_GETPEERNAME = 31; // { int getpeername(int fdes, caddr_t asa, socklen_t *alen); }
+ SYS_GETSOCKNAME = 32; // { int getsockname(int fdes, caddr_t asa, socklen_t *alen); }
+ // SYS_NOSYS = 27; // { int nosys(void); }
+ // SYS_NOSYS = 28; // { int nosys(void); }
+ // SYS_NOSYS = 29; // { int nosys(void); }
+ // SYS_NOSYS = 30; // { int nosys(void); }
+ // SYS_NOSYS = 31; // { int nosys(void); }
+ // SYS_NOSYS = 32; // { int nosys(void); }
+ SYS_ACCESS = 33; // { int access(user_addr_t path, int flags); }
+ SYS_CHFLAGS = 34; // { int chflags(char *path, int flags); }
+ SYS_FCHFLAGS = 35; // { int fchflags(int fd, int flags); }
+ SYS_SYNC = 36; // { int sync(void); }
+ SYS_KILL = 37; // { int kill(int pid, int signum, int posix); }
+ // SYS_NOSYS = 38; // { int nosys(void); } { old stat }
+ SYS_GETPPID = 39; // { int getppid(void); }
+ // SYS_NOSYS = 40; // { int nosys(void); } { old lstat }
+ SYS_DUP = 41; // { int dup(u_int fd); }
+ SYS_PIPE = 42; // { int pipe(void); }
+ SYS_GETEGID = 43; // { int getegid(void); }
+ SYS_PROFIL = 44; // { int profil(short *bufbase, size_t bufsize, u_long pcoffset, u_int pcscale); }
+ // SYS_NOSYS = 45; // { int nosys(void); } { old ktrace }
+ SYS_SIGACTION = 46; // { int sigaction(int signum, struct __sigaction *nsa, struct sigaction *osa); }
+ SYS_GETGID = 47; // { int getgid(void); }
+ SYS_SIGPROCMASK = 48; // { int sigprocmask(int how, user_addr_t mask, user_addr_t omask); }
+ SYS_GETLOGIN = 49; // { int getlogin(char *namebuf, u_int namelen); }
+ SYS_SETLOGIN = 50; // { int setlogin(char *namebuf); }
+ SYS_ACCT = 51; // { int acct(char *path); }
+ SYS_SIGPENDING = 52; // { int sigpending(struct sigvec *osv); }
+ SYS_SIGALTSTACK = 53; // { int sigaltstack(struct sigaltstack *nss, struct sigaltstack *oss); }
+ SYS_IOCTL = 54; // { int ioctl(int fd, u_long com, caddr_t data); }
+ SYS_REBOOT = 55; // { int reboot(int opt, char *command); }
+ SYS_REVOKE = 56; // { int revoke(char *path); }
+ SYS_SYMLINK = 57; // { int symlink(char *path, char *link); }
+ SYS_READLINK = 58; // { int readlink(char *path, char *buf, int count); }
+ SYS_EXECVE = 59; // { int execve(char *fname, char **argp, char **envp); }
+ SYS_UMASK = 60; // { int umask(int newmask); }
+ SYS_CHROOT = 61; // { int chroot(user_addr_t path); }
+ // SYS_NOSYS = 62; // { int nosys(void); } { old fstat }
+ // SYS_NOSYS = 63; // { int nosys(void); } { used internally, reserved }
+ // SYS_NOSYS = 64; // { int nosys(void); } { old getpagesize }
+ SYS_MSYNC = 65; // { int msync(caddr_t addr, size_t len, int flags); }
+ SYS_VFORK = 66; // { int vfork(void); }
+ // SYS_NOSYS = 67; // { int nosys(void); } { old vread }
+ // SYS_NOSYS = 68; // { int nosys(void); } { old vwrite }
+ SYS_SBRK = 69; // { int sbrk(int incr) NO_SYSCALL_STUB; }
+ SYS_SSTK = 70; // { int sstk(int incr) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 71; // { int nosys(void); } { old mmap }
+ SYS_OVADVISE = 72; // { int ovadvise(void) NO_SYSCALL_STUB; } { old vadvise }
+ SYS_MUNMAP = 73; // { int munmap(caddr_t addr, size_t len); }
+ SYS_MPROTECT = 74; // { int mprotect(caddr_t addr, size_t len, int prot); }
+ SYS_MADVISE = 75; // { int madvise(caddr_t addr, size_t len, int behav); }
+ // SYS_NOSYS = 76; // { int nosys(void); } { old vhangup }
+ // SYS_NOSYS = 77; // { int nosys(void); } { old vlimit }
+ SYS_MINCORE = 78; // { int mincore(user_addr_t addr, user_size_t len, user_addr_t vec); }
+ SYS_GETGROUPS = 79; // { int getgroups(u_int gidsetsize, gid_t *gidset); }
+ SYS_SETGROUPS = 80; // { int setgroups(u_int gidsetsize, gid_t *gidset); }
+ SYS_GETPGRP = 81; // { int getpgrp(void); }
+ SYS_SETPGID = 82; // { int setpgid(int pid, int pgid); }
+ SYS_SETITIMER = 83; // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
+ // SYS_NOSYS = 84; // { int nosys(void); } { old wait }
+ SYS_SWAPON = 85; // { int swapon(void); }
+ SYS_GETITIMER = 86; // { int getitimer(u_int which, struct itimerval *itv); }
+ // SYS_NOSYS = 87; // { int nosys(void); } { old gethostname }
+ // SYS_NOSYS = 88; // { int nosys(void); } { old sethostname }
+ SYS_GETDTABLESIZE = 89; // { int getdtablesize(void); }
+ SYS_DUP2 = 90; // { int dup2(u_int from, u_int to); }
+ // SYS_NOSYS = 91; // { int nosys(void); } { old getdopt }
+ SYS_FCNTL = 92; // { int fcntl(int fd, int cmd, long arg); }
+ SYS_SELECT = 93; // { int select(int nd, u_int32_t *in, u_int32_t *ou, u_int32_t *ex, struct timeval *tv); }
+ // SYS_NOSYS = 94; // { int nosys(void); } { old setdopt }
+ SYS_FSYNC = 95; // { int fsync(int fd); }
+ SYS_SETPRIORITY = 96; // { int setpriority(int which, id_t who, int prio); }
+ SYS_SOCKET = 97; // { int socket(int domain, int type, int protocol); }
+ SYS_CONNECT = 98; // { int connect(int s, caddr_t name, socklen_t namelen); }
+ // SYS_NOSYS = 97; // { int nosys(void); }
+ // SYS_NOSYS = 98; // { int nosys(void); }
+ // SYS_NOSYS = 99; // { int nosys(void); } { old accept }
+ SYS_GETPRIORITY = 100; // { int getpriority(int which, id_t who); }
+ // SYS_NOSYS = 101; // { int nosys(void); } { old send }
+ // SYS_NOSYS = 102; // { int nosys(void); } { old recv }
+ // SYS_NOSYS = 103; // { int nosys(void); } { old sigreturn }
+ SYS_BIND = 104; // { int bind(int s, caddr_t name, socklen_t namelen); }
+ SYS_SETSOCKOPT = 105; // { int setsockopt(int s, int level, int name, caddr_t val, socklen_t valsize); }
+ SYS_LISTEN = 106; // { int listen(int s, int backlog); }
+ // SYS_NOSYS = 104; // { int nosys(void); }
+ // SYS_NOSYS = 105; // { int nosys(void); }
+ // SYS_NOSYS = 106; // { int nosys(void); }
+ // SYS_NOSYS = 107; // { int nosys(void); } { old vtimes }
+ // SYS_NOSYS = 108; // { int nosys(void); } { old sigvec }
+ // SYS_NOSYS = 109; // { int nosys(void); } { old sigblock }
+ // SYS_NOSYS = 110; // { int nosys(void); } { old sigsetmask }
+ SYS_SIGSUSPEND = 111; // { int sigsuspend(sigset_t mask); }
+ // SYS_NOSYS = 112; // { int nosys(void); } { old sigstack }
+ // SYS_NOSYS = 113; // { int nosys(void); } { old recvmsg }
+ // SYS_NOSYS = 114; // { int nosys(void); } { old sendmsg }
+ // SYS_NOSYS = 113; // { int nosys(void); }
+ // SYS_NOSYS = 114; // { int nosys(void); }
+ // SYS_NOSYS = 115; // { int nosys(void); } { old vtrace }
+ SYS_GETTIMEOFDAY = 116; // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
+ SYS_GETRUSAGE = 117; // { int getrusage(int who, struct rusage *rusage); }
+ SYS_GETSOCKOPT = 118; // { int getsockopt(int s, int level, int name, caddr_t val, socklen_t *avalsize); }
+ // SYS_NOSYS = 118; // { int nosys(void); }
+ // SYS_NOSYS = 119; // { int nosys(void); } { old resuba }
+ SYS_READV = 120; // { user_ssize_t readv(int fd, struct iovec *iovp, u_int iovcnt); }
+ SYS_WRITEV = 121; // { user_ssize_t writev(int fd, struct iovec *iovp, u_int iovcnt); }
+ SYS_SETTIMEOFDAY = 122; // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
+ SYS_FCHOWN = 123; // { int fchown(int fd, int uid, int gid); }
+ SYS_FCHMOD = 124; // { int fchmod(int fd, int mode); }
+ // SYS_NOSYS = 125; // { int nosys(void); } { old recvfrom }
+ SYS_SETREUID = 126; // { int setreuid(uid_t ruid, uid_t euid); }
+ SYS_SETREGID = 127; // { int setregid(gid_t rgid, gid_t egid); }
+ SYS_RENAME = 128; // { int rename(char *from, char *to); }
+ // SYS_NOSYS = 129; // { int nosys(void); } { old truncate }
+ // SYS_NOSYS = 130; // { int nosys(void); } { old ftruncate }
+ SYS_FLOCK = 131; // { int flock(int fd, int how); }
+ SYS_MKFIFO = 132; // { int mkfifo(user_addr_t path, int mode); }
+ SYS_SENDTO = 133; // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, socklen_t tolen); }
+ SYS_SHUTDOWN = 134; // { int shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135; // { int socketpair(int domain, int type, int protocol, int *rsv); }
+ // SYS_NOSYS = 133; // { int nosys(void); }
+ // SYS_NOSYS = 134; // { int nosys(void); }
+ // SYS_NOSYS = 135; // { int nosys(void); }
+ SYS_MKDIR = 136; // { int mkdir(user_addr_t path, int mode); }
+ SYS_RMDIR = 137; // { int rmdir(char *path); }
+ SYS_UTIMES = 138; // { int utimes(char *path, struct timeval *tptr); }
+ SYS_FUTIMES = 139; // { int futimes(int fd, struct timeval *tptr); }
+ SYS_ADJTIME = 140; // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
+ // SYS_NOSYS = 141; // { int nosys(void); } { old getpeername }
+ SYS_GETHOSTUUID = 142; // { int gethostuuid(unsigned char *uuid_buf, const struct timespec *timeoutp); }
+ // SYS_NOSYS = 143; // { int nosys(void); } { old sethostid }
+ // SYS_NOSYS = 144; // { int nosys(void); } { old getrlimit }
+ // SYS_NOSYS = 145; // { int nosys(void); } { old setrlimit }
+ // SYS_NOSYS = 146; // { int nosys(void); } { old killpg }
+ SYS_SETSID = 147; // { int setsid(void); }
+ // SYS_NOSYS = 148; // { int nosys(void); } { old setquota }
+ // SYS_NOSYS = 149; // { int nosys(void); } { old qquota }
+ // SYS_NOSYS = 150; // { int nosys(void); } { old getsockname }
+ SYS_GETPGID = 151; // { int getpgid(pid_t pid); }
+ SYS_SETPRIVEXEC = 152; // { int setprivexec(int flag); }
+ SYS_PREAD = 153; // { user_ssize_t pread(int fd, user_addr_t buf, user_size_t nbyte, off_t offset); }
+ SYS_PWRITE = 154; // { user_ssize_t pwrite(int fd, user_addr_t buf, user_size_t nbyte, off_t offset); }
+ SYS_NFSSVC = 155; // { int nfssvc(int flag, caddr_t argp); }
+ // SYS_NOSYS = 155; // { int nosys(void); }
+ // SYS_NOSYS = 156; // { int nosys(void); } { old getdirentries }
+ SYS_STATFS = 157; // { int statfs(char *path, struct statfs *buf); }
+ SYS_FSTATFS = 158; // { int fstatfs(int fd, struct statfs *buf); }
+ SYS_UNMOUNT = 159; // { int unmount(user_addr_t path, int flags); }
+ // SYS_NOSYS = 160; // { int nosys(void); } { old async_daemon }
+ SYS_GETFH = 161; // { int getfh(char *fname, fhandle_t *fhp); }
+ // SYS_NOSYS = 161; // { int nosys(void); }
+ // SYS_NOSYS = 162; // { int nosys(void); } { old getdomainname }
+ // SYS_NOSYS = 163; // { int nosys(void); } { old setdomainname }
+ // SYS_NOSYS = 164; // { int nosys(void); }
+ SYS_QUOTACTL = 165; // { int quotactl(const char *path, int cmd, int uid, caddr_t arg); }
+ // SYS_NOSYS = 166; // { int nosys(void); } { old exportfs }
+ SYS_MOUNT = 167; // { int mount(char *type, char *path, int flags, caddr_t data); }
+ // SYS_NOSYS = 168; // { int nosys(void); } { old ustat }
+ SYS_CSOPS = 169; // { int csops(pid_t pid, uint32_t ops, user_addr_t useraddr, user_size_t usersize); }
+ // SYS_NOSYS = 171; // { int nosys(void); } { old wait3 }
+ // SYS_NOSYS = 172; // { int nosys(void); } { old rpause }
+ SYS_WAITID = 173; // { int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options); }
+ // SYS_NOSYS = 174; // { int nosys(void); } { old getdents }
+ // SYS_NOSYS = 175; // { int nosys(void); } { old gc_control }
+ SYS_ADD_PROFIL = 176; // { int add_profil(short *bufbase, size_t bufsize, u_long pcoffset, u_int pcscale); }
+ // SYS_NOSYS = 177; // { int nosys(void); }
+ // SYS_NOSYS = 178; // { int nosys(void); }
+ // SYS_NOSYS = 179; // { int nosys(void); }
+ SYS_KDEBUG_TRACE = 180; // { int kdebug_trace(int code, int arg1, int arg2, int arg3, int arg4, int arg5) NO_SYSCALL_STUB; }
+ SYS_SETGID = 181; // { int setgid(gid_t gid); }
+ SYS_SETEGID = 182; // { int setegid(gid_t egid); }
+ SYS_SETEUID = 183; // { int seteuid(uid_t euid); }
+ SYS_SIGRETURN = 184; // { int sigreturn(struct ucontext *uctx, int infostyle); }
+ // SYS_NOSYS = 186; // { int nosys(void); }
+ // SYS_NOSYS = 187; // { int nosys(void); }
+ SYS_STAT = 188; // { int stat(user_addr_t path, user_addr_t ub); }
+ SYS_FSTAT = 189; // { int fstat(int fd, user_addr_t ub); }
+ SYS_LSTAT = 190; // { int lstat(user_addr_t path, user_addr_t ub); }
+ SYS_PATHCONF = 191; // { int pathconf(char *path, int name); }
+ SYS_FPATHCONF = 192; // { int fpathconf(int fd, int name); }
+ // SYS_NOSYS = 193; // { int nosys(void); }
+ SYS_GETRLIMIT = 194; // { int getrlimit(u_int which, struct rlimit *rlp); }
+ SYS_SETRLIMIT = 195; // { int setrlimit(u_int which, struct rlimit *rlp); }
+ SYS_GETDIRENTRIES = 196; // { int getdirentries(int fd, char *buf, u_int count, long *basep); }
+ SYS_MMAP = 197; // { user_addr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }
+ // SYS_NOSYS = 198; // { int nosys(void); } { __syscall }
+ SYS_LSEEK = 199; // { off_t lseek(int fd, off_t offset, int whence); }
+ SYS_TRUNCATE = 200; // { int truncate(char *path, off_t length); }
+ SYS_FTRUNCATE = 201; // { int ftruncate(int fd, off_t length); }
+ SYS___SYSCTL = 202; // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }
+ SYS_MLOCK = 203; // { int mlock(caddr_t addr, size_t len); }
+ SYS_MUNLOCK = 204; // { int munlock(caddr_t addr, size_t len); }
+ SYS_UNDELETE = 205; // { int undelete(user_addr_t path); }
+ SYS_ATSOCKET = 206; // { int ATsocket(int proto); }
+ // SYS_NOSYS = 213; // { int nosys(void); } { Reserved for AppleTalk }
+ // SYS_NOSYS = 206; // { int nosys(void); }
+ // SYS_NOSYS = 207; // { int nosys(void); }
+ // SYS_NOSYS = 208; // { int nosys(void); }
+ // SYS_NOSYS = 209; // { int nosys(void); }
+ // SYS_NOSYS = 210; // { int nosys(void); }
+ // SYS_NOSYS = 211; // { int nosys(void); }
+ // SYS_NOSYS = 212; // { int nosys(void); }
+ // SYS_NOSYS = 213; // { int nosys(void); } { Reserved for AppleTalk }
+ SYS_KQUEUE_FROM_PORTSET_NP = 214; // { int kqueue_from_portset_np(int portset); }
+ SYS_KQUEUE_PORTSET_NP = 215; // { int kqueue_portset_np(int fd); }
+ SYS_GETATTRLIST = 220; // { int getattrlist(const char *path, struct attrlist *alist, void *attributeBuffer, size_t bufferSize, u_long options); }
+ SYS_SETATTRLIST = 221; // { int setattrlist(const char *path, struct attrlist *alist, void *attributeBuffer, size_t bufferSize, u_long options); }
+ SYS_GETDIRENTRIESATTR = 222; // { int getdirentriesattr(int fd, struct attrlist *alist, void *buffer, size_t buffersize, u_long *count, u_long *basep, u_long *newstate, u_long options); }
+ SYS_EXCHANGEDATA = 223; // { int exchangedata(const char *path1, const char *path2, u_long options); }
+ // SYS_NOSYS = 224; // { int nosys(void); } { was checkuseraccess }
+ SYS_SEARCHFS = 225; // { int searchfs(const char *path, struct fssearchblock *searchblock, u_long *nummatches, u_long scriptcode, u_long options, struct searchstate *state); }
+ SYS_DELETE = 226; // { int delete(user_addr_t path) NO_SYSCALL_STUB; } { private delete (Carbon semantics) }
+ SYS_COPYFILE = 227; // { int copyfile(char *from, char *to, int mode, int flags) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 228; // { int nosys(void); }
+ // SYS_NOSYS = 229; // { int nosys(void); }
+ SYS_POLL = 230; // { int poll(struct pollfd *fds, u_int nfds, int timeout); }
+ SYS_WATCHEVENT = 231; // { int watchevent(struct eventreq *u_req, int u_eventmask); }
+ SYS_WAITEVENT = 232; // { int waitevent(struct eventreq *u_req, struct timeval *tv); }
+ SYS_MODWATCH = 233; // { int modwatch(struct eventreq *u_req, int u_eventmask); }
+ SYS_GETXATTR = 234; // { user_ssize_t getxattr(user_addr_t path, user_addr_t attrname, user_addr_t value, size_t size, uint32_t position, int options); }
+ SYS_FGETXATTR = 235; // { user_ssize_t fgetxattr(int fd, user_addr_t attrname, user_addr_t value, size_t size, uint32_t position, int options); }
+ SYS_SETXATTR = 236; // { int setxattr(user_addr_t path, user_addr_t attrname, user_addr_t value, size_t size, uint32_t position, int options); }
+ SYS_FSETXATTR = 237; // { int fsetxattr(int fd, user_addr_t attrname, user_addr_t value, size_t size, uint32_t position, int options); }
+ SYS_REMOVEXATTR = 238; // { int removexattr(user_addr_t path, user_addr_t attrname, int options); }
+ SYS_FREMOVEXATTR = 239; // { int fremovexattr(int fd, user_addr_t attrname, int options); }
+ SYS_LISTXATTR = 240; // { user_ssize_t listxattr(user_addr_t path, user_addr_t namebuf, size_t bufsize, int options); }
+ SYS_FLISTXATTR = 241; // { user_ssize_t flistxattr(int fd, user_addr_t namebuf, size_t bufsize, int options); }
+ SYS_FSCTL = 242; // { int fsctl(const char *path, u_long cmd, caddr_t data, u_long options); }
+ SYS_INITGROUPS = 243; // { int initgroups(u_int gidsetsize, gid_t *gidset, int gmuid); }
+ SYS_POSIX_SPAWN = 244; // { int posix_spawn(pid_t *pid, const char *path, const struct _posix_spawn_args_desc *adesc, char **argv, char **envp); }
+ // SYS_NOSYS = 245; // { int nosys(void); }
+ // SYS_NOSYS = 246; // { int nosys(void); }
+ SYS_NFSCLNT = 247; // { int nfsclnt(int flag, caddr_t argp); }
+ // SYS_NOSYS = 247; // { int nosys(void); }
+ SYS_FHOPEN = 248; // { int fhopen(const struct fhandle *u_fhp, int flags); }
+ // SYS_NOSYS = 248; // { int nosys(void); }
+ // SYS_NOSYS = 249; // { int nosys(void); }
+ SYS_MINHERIT = 250; // { int minherit(void *addr, size_t len, int inherit); }
+ SYS_SEMSYS = 251; // { int semsys(u_int which, int a2, int a3, int a4, int a5); }
+ // SYS_NOSYS = 251; // { int nosys(void); }
+ SYS_MSGSYS = 252; // { int msgsys(u_int which, int a2, int a3, int a4, int a5); }
+ // SYS_NOSYS = 252; // { int nosys(void); }
+ SYS_SHMSYS = 253; // { int shmsys(u_int which, int a2, int a3, int a4); }
+ // SYS_NOSYS = 253; // { int nosys(void); }
+ SYS_SEMCTL = 254; // { int semctl(int semid, int semnum, int cmd, semun_t arg); }
+ SYS_SEMGET = 255; // { int semget(key_t key, int nsems, int semflg); }
+ SYS_SEMOP = 256; // { int semop(int semid, struct sembuf *sops, int nsops); }
+ // SYS_NOSYS = 257; // { int nosys(void); }
+ // SYS_NOSYS = 254; // { int nosys(void); }
+ // SYS_NOSYS = 255; // { int nosys(void); }
+ // SYS_NOSYS = 256; // { int nosys(void); }
+ // SYS_NOSYS = 257; // { int nosys(void); }
+ SYS_MSGCTL = 258; // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }
+ SYS_MSGGET = 259; // { int msgget(key_t key, int msgflg); }
+ SYS_MSGSND = 260; // { int msgsnd(int msqid, void *msgp, size_t msgsz, int msgflg); }
+ SYS_MSGRCV = 261; // { user_ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
+ // SYS_NOSYS = 258; // { int nosys(void); }
+ // SYS_NOSYS = 259; // { int nosys(void); }
+ // SYS_NOSYS = 260; // { int nosys(void); }
+ // SYS_NOSYS = 261; // { int nosys(void); }
+ SYS_SHMAT = 262; // { user_addr_t shmat(int shmid, void *shmaddr, int shmflg); }
+ SYS_SHMCTL = 263; // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }
+ SYS_SHMDT = 264; // { int shmdt(void *shmaddr); }
+ SYS_SHMGET = 265; // { int shmget(key_t key, size_t size, int shmflg); }
+ // SYS_NOSYS = 262; // { int nosys(void); }
+ // SYS_NOSYS = 263; // { int nosys(void); }
+ // SYS_NOSYS = 264; // { int nosys(void); }
+ // SYS_NOSYS = 265; // { int nosys(void); }
+ SYS_SHM_OPEN = 266; // { int shm_open(const char *name, int oflag, int mode); }
+ SYS_SHM_UNLINK = 267; // { int shm_unlink(const char *name); }
+ SYS_SEM_OPEN = 268; // { user_addr_t sem_open(const char *name, int oflag, int mode, int value); }
+ SYS_SEM_CLOSE = 269; // { int sem_close(sem_t *sem); }
+ SYS_SEM_UNLINK = 270; // { int sem_unlink(const char *name); }
+ SYS_SEM_WAIT = 271; // { int sem_wait(sem_t *sem); }
+ SYS_SEM_TRYWAIT = 272; // { int sem_trywait(sem_t *sem); }
+ SYS_SEM_POST = 273; // { int sem_post(sem_t *sem); }
+ SYS_SEM_GETVALUE = 274; // { int sem_getvalue(sem_t *sem, int *sval); }
+ SYS_SEM_INIT = 275; // { int sem_init(sem_t *sem, int phsared, u_int value); }
+ SYS_SEM_DESTROY = 276; // { int sem_destroy(sem_t *sem); }
+ SYS_OPEN_EXTENDED = 277; // { int open_extended(user_addr_t path, int flags, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
+ SYS_UMASK_EXTENDED = 278; // { int umask_extended(int newmask, user_addr_t xsecurity) NO_SYSCALL_STUB; }
+ SYS_STAT_EXTENDED = 279; // { int stat_extended(user_addr_t path, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
+ SYS_LSTAT_EXTENDED = 280; // { int lstat_extended(user_addr_t path, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
+ SYS_FSTAT_EXTENDED = 281; // { int fstat_extended(int fd, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
+ SYS_CHMOD_EXTENDED = 282; // { int chmod_extended(user_addr_t path, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
+ SYS_FCHMOD_EXTENDED = 283; // { int fchmod_extended(int fd, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
+ SYS_ACCESS_EXTENDED = 284; // { int access_extended(user_addr_t entries, size_t size, user_addr_t results, uid_t uid) NO_SYSCALL_STUB; }
+ SYS_SETTID = 285; // { int settid(uid_t uid, gid_t gid) NO_SYSCALL_STUB; }
+ SYS_GETTID = 286; // { int gettid(uid_t *uidp, gid_t *gidp) NO_SYSCALL_STUB; }
+ SYS_SETSGROUPS = 287; // { int setsgroups(int setlen, user_addr_t guidset) NO_SYSCALL_STUB; }
+ SYS_GETSGROUPS = 288; // { int getsgroups(user_addr_t setlen, user_addr_t guidset) NO_SYSCALL_STUB; }
+ SYS_SETWGROUPS = 289; // { int setwgroups(int setlen, user_addr_t guidset) NO_SYSCALL_STUB; }
+ SYS_GETWGROUPS = 290; // { int getwgroups(user_addr_t setlen, user_addr_t guidset) NO_SYSCALL_STUB; }
+ SYS_MKFIFO_EXTENDED = 291; // { int mkfifo_extended(user_addr_t path, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
+ SYS_MKDIR_EXTENDED = 292; // { int mkdir_extended(user_addr_t path, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
+ SYS_IDENTITYSVC = 293; // { int identitysvc(int opcode, user_addr_t message) NO_SYSCALL_STUB; }
+ SYS_SHARED_REGION_CHECK_NP = 294; // { int shared_region_check_np(uint64_t *start_address) NO_SYSCALL_STUB; }
+ SYS_SHARED_REGION_MAP_NP = 295; // { int shared_region_map_np(int fd, uint32_t count, const struct shared_file_mapping_np *mappings) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 296; // { int nosys(void); } { old load_shared_file }
+ // SYS_NOSYS = 297; // { int nosys(void); } { old reset_shared_file }
+ // SYS_NOSYS = 298; // { int nosys(void); } { old new_system_shared_regions }
+ // SYS_ENOSYS = 299; // { int enosys(void); } { old shared_region_map_file_np }
+ // SYS_ENOSYS = 300; // { int enosys(void); } { old shared_region_make_private_np }
+ SYS___PTHREAD_MUTEX_DESTROY = 301; // { int __pthread_mutex_destroy(int mutexid); }
+ SYS___PTHREAD_MUTEX_INIT = 302; // { int __pthread_mutex_init(user_addr_t mutex, user_addr_t attr); }
+ SYS___PTHREAD_MUTEX_LOCK = 303; // { int __pthread_mutex_lock(int mutexid); }
+ SYS___PTHREAD_MUTEX_TRYLOCK = 304; // { int __pthread_mutex_trylock(int mutexid); }
+ SYS___PTHREAD_MUTEX_UNLOCK = 305; // { int __pthread_mutex_unlock(int mutexid); }
+ SYS___PTHREAD_COND_INIT = 306; // { int __pthread_cond_init(user_addr_t cond, user_addr_t attr); }
+ SYS___PTHREAD_COND_DESTROY = 307; // { int __pthread_cond_destroy(int condid); }
+ SYS___PTHREAD_COND_BROADCAST = 308; // { int __pthread_cond_broadcast(int condid); }
+ SYS___PTHREAD_COND_SIGNAL = 309; // { int __pthread_cond_signal(int condid); }
+ SYS_GETSID = 310; // { int getsid(pid_t pid); }
+ SYS_SETTID_WITH_PID = 311; // { int settid_with_pid(pid_t pid, int assume) NO_SYSCALL_STUB; }
+ SYS___PTHREAD_COND_TIMEDWAIT = 312; // { int __pthread_cond_timedwait(int condid, int mutexid, user_addr_t abstime); }
+ SYS_AIO_FSYNC = 313; // { int aio_fsync(int op, user_addr_t aiocbp); }
+ SYS_AIO_RETURN = 314; // { user_ssize_t aio_return(user_addr_t aiocbp); }
+ SYS_AIO_SUSPEND = 315; // { int aio_suspend(user_addr_t aiocblist, int nent, user_addr_t timeoutp); }
+ SYS_AIO_CANCEL = 316; // { int aio_cancel(int fd, user_addr_t aiocbp); }
+ SYS_AIO_ERROR = 317; // { int aio_error(user_addr_t aiocbp); }
+ SYS_AIO_READ = 318; // { int aio_read(user_addr_t aiocbp); }
+ SYS_AIO_WRITE = 319; // { int aio_write(user_addr_t aiocbp); }
+ SYS_LIO_LISTIO = 320; // { int lio_listio(int mode, user_addr_t aiocblist, int nent, user_addr_t sigp); }
+ SYS___PTHREAD_COND_WAIT = 321; // { int __pthread_cond_wait(int condid, int mutexid); }
+ SYS_IOPOLICYSYS = 322; // { int iopolicysys(int cmd, void *arg) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 323; // { int nosys(void); }
+ SYS_MLOCKALL = 324; // { int mlockall(int how); }
+ SYS_MUNLOCKALL = 325; // { int munlockall(int how); }
+ // SYS_NOSYS = 326; // { int nosys(void); }
+ SYS_ISSETUGID = 327; // { int issetugid(void); }
+ SYS___PTHREAD_KILL = 328; // { int __pthread_kill(int thread_port, int sig); }
+ SYS___PTHREAD_SIGMASK = 329; // { int __pthread_sigmask(int how, user_addr_t set, user_addr_t oset); }
+ SYS___SIGWAIT = 330; // { int __sigwait(user_addr_t set, user_addr_t sig); }
+ SYS___DISABLE_THREADSIGNAL = 331; // { int __disable_threadsignal(int value); }
+ SYS___PTHREAD_MARKCANCEL = 332; // { int __pthread_markcancel(int thread_port); }
+ SYS___PTHREAD_CANCELED = 333; // { int __pthread_canceled(int action); }
+ SYS___SEMWAIT_SIGNAL = 334; // { int __semwait_signal(int cond_sem, int mutex_sem, int timeout, int relative, time_t tv_sec, int32_t tv_nsec); }
+ // SYS_NOSYS = 335; // { int nosys(void); } { old utrace }
+ SYS_PROC_INFO = 336; // { int proc_info(int32_t callnum,int32_t pid,uint32_t flavor, uint64_t arg,user_addr_t buffer,int32_t buffersize) NO_SYSCALL_STUB; }
+ SYS_SENDFILE = 337; // { int sendfile(int fd, int s, off_t offset, off_t *nbytes, struct sf_hdtr *hdtr, int flags); }
+ // SYS_NOSYS = 337; // { int nosys(void); }
+ SYS_STAT64 = 338; // { int stat64(user_addr_t path, user_addr_t ub); }
+ SYS_FSTAT64 = 339; // { int fstat64(int fd, user_addr_t ub); }
+ SYS_LSTAT64 = 340; // { int lstat64(user_addr_t path, user_addr_t ub); }
+ SYS_STAT64_EXTENDED = 341; // { int stat64_extended(user_addr_t path, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
+ SYS_LSTAT64_EXTENDED = 342; // { int lstat64_extended(user_addr_t path, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
+ SYS_FSTAT64_EXTENDED = 343; // { int fstat64_extended(int fd, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
+ SYS_GETDIRENTRIES64 = 344; // { user_ssize_t getdirentries64(int fd, void *buf, user_size_t bufsize, off_t *position) NO_SYSCALL_STUB; }
+ SYS_STATFS64 = 345; // { int statfs64(char *path, struct statfs64 *buf); }
+ SYS_FSTATFS64 = 346; // { int fstatfs64(int fd, struct statfs64 *buf); }
+ SYS_GETFSSTAT64 = 347; // { int getfsstat64(user_addr_t buf, int bufsize, int flags); }
+ SYS___PTHREAD_CHDIR = 348; // { int __pthread_chdir(user_addr_t path); }
+ SYS___PTHREAD_FCHDIR = 349; // { int __pthread_fchdir(int fd); }
+ SYS_AUDIT = 350; // { int audit(void *record, int length); }
+ SYS_AUDITON = 351; // { int auditon(int cmd, void *data, int length); }
+ // SYS_NOSYS = 352; // { int nosys(void); }
+ SYS_GETAUID = 353; // { int getauid(au_id_t *auid); }
+ SYS_SETAUID = 354; // { int setauid(au_id_t *auid); }
+ SYS_GETAUDIT = 355; // { int getaudit(struct auditinfo *auditinfo); }
+ SYS_SETAUDIT = 356; // { int setaudit(struct auditinfo *auditinfo); }
+ SYS_GETAUDIT_ADDR = 357; // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, int length); }
+ SYS_SETAUDIT_ADDR = 358; // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, int length); }
+ SYS_AUDITCTL = 359; // { int auditctl(char *path); }
+ // SYS_NOSYS = 350; // { int nosys(void); }
+ // SYS_NOSYS = 351; // { int nosys(void); }
+ // SYS_NOSYS = 352; // { int nosys(void); }
+ // SYS_NOSYS = 353; // { int nosys(void); }
+ // SYS_NOSYS = 354; // { int nosys(void); }
+ // SYS_NOSYS = 355; // { int nosys(void); }
+ // SYS_NOSYS = 356; // { int nosys(void); }
+ // SYS_NOSYS = 357; // { int nosys(void); }
+ // SYS_NOSYS = 358; // { int nosys(void); }
+ // SYS_NOSYS = 359; // { int nosys(void); }
+ SYS_BSDTHREAD_CREATE = 360; // { user_addr_t bsdthread_create(user_addr_t func, user_addr_t func_arg, user_addr_t stack, user_addr_t pthread, uint32_t flags) NO_SYSCALL_STUB; }
+ SYS_BSDTHREAD_TERMINATE = 361; // { int bsdthread_terminate(user_addr_t stackaddr, size_t freesize, uint32_t port, uint32_t sem) NO_SYSCALL_STUB; }
+ SYS_KQUEUE = 362; // { int kqueue(void); }
+ SYS_KEVENT = 363; // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
+ SYS_LCHOWN = 364; // { int lchown(user_addr_t path, uid_t owner, gid_t group); }
+ SYS_STACK_SNAPSHOT = 365; // { int stack_snapshot(pid_t pid, user_addr_t tracebuf, uint32_t tracebuf_size, uint32_t options) NO_SYSCALL_STUB; }
+ SYS_BSDTHREAD_REGISTER = 366; // { int bsdthread_register(user_addr_t threadstart, user_addr_t wqthread, int pthsize) NO_SYSCALL_STUB; }
+ SYS_WORKQ_OPEN = 367; // { int workq_open(void) NO_SYSCALL_STUB; }
+ SYS_WORKQ_OPS = 368; // { int workq_ops(int options, user_addr_t item, int prio) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 369; // { int nosys(void); }
+ // SYS_NOSYS = 370; // { int nosys(void); }
+ // SYS_NOSYS = 371; // { int nosys(void); }
+ // SYS_NOSYS = 372; // { int nosys(void); }
+ // SYS_NOSYS = 373; // { int nosys(void); }
+ // SYS_NOSYS = 374; // { int nosys(void); }
+ // SYS_NOSYS = 375; // { int nosys(void); }
+ // SYS_NOSYS = 376; // { int nosys(void); }
+ // SYS_NOSYS = 377; // { int nosys(void); }
+ // SYS_NOSYS = 378; // { int nosys(void); }
+ // SYS_NOSYS = 379; // { int nosys(void); }
+ SYS___MAC_EXECVE = 380; // { int __mac_execve(char *fname, char **argp, char **envp, struct mac *mac_p); }
+ SYS___MAC_SYSCALL = 381; // { int __mac_syscall(char *policy, int call, user_addr_t arg); }
+ SYS___MAC_GET_FILE = 382; // { int __mac_get_file(char *path_p, struct mac *mac_p); }
+ SYS___MAC_SET_FILE = 383; // { int __mac_set_file(char *path_p, struct mac *mac_p); }
+ SYS___MAC_GET_LINK = 384; // { int __mac_get_link(char *path_p, struct mac *mac_p); }
+ SYS___MAC_SET_LINK = 385; // { int __mac_set_link(char *path_p, struct mac *mac_p); }
+ SYS___MAC_GET_PROC = 386; // { int __mac_get_proc(struct mac *mac_p); }
+ SYS___MAC_SET_PROC = 387; // { int __mac_set_proc(struct mac *mac_p); }
+ SYS___MAC_GET_FD = 388; // { int __mac_get_fd(int fd, struct mac *mac_p); }
+ SYS___MAC_SET_FD = 389; // { int __mac_set_fd(int fd, struct mac *mac_p); }
+ SYS___MAC_GET_PID = 390; // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }
+ SYS___MAC_GET_LCID = 391; // { int __mac_get_lcid(pid_t lcid, struct mac *mac_p); }
+ SYS___MAC_GET_LCTX = 392; // { int __mac_get_lctx(struct mac *mac_p); }
+ SYS___MAC_SET_LCTX = 393; // { int __mac_set_lctx(struct mac *mac_p); }
+ SYS_SETLCID = 394; // { int setlcid(pid_t pid, pid_t lcid) NO_SYSCALL_STUB; }
+ SYS_GETLCID = 395; // { int getlcid(pid_t pid) NO_SYSCALL_STUB; }
+ SYS_READ_NOCANCEL = 396; // { user_ssize_t read_nocancel(int fd, user_addr_t cbuf, user_size_t nbyte) NO_SYSCALL_STUB; }
+ SYS_WRITE_NOCANCEL = 397; // { user_ssize_t write_nocancel(int fd, user_addr_t cbuf, user_size_t nbyte) NO_SYSCALL_STUB; }
+ SYS_OPEN_NOCANCEL = 398; // { int open_nocancel(user_addr_t path, int flags, int mode) NO_SYSCALL_STUB; }
+ SYS_CLOSE_NOCANCEL = 399; // { int close_nocancel(int fd) NO_SYSCALL_STUB; }
+ SYS_WAIT4_NOCANCEL = 400; // { int wait4_nocancel(int pid, user_addr_t status, int options, user_addr_t rusage) NO_SYSCALL_STUB; }
+ SYS_RECVMSG_NOCANCEL = 401; // { int recvmsg_nocancel(int s, struct msghdr *msg, int flags) NO_SYSCALL_STUB; }
+ SYS_SENDMSG_NOCANCEL = 402; // { int sendmsg_nocancel(int s, caddr_t msg, int flags) NO_SYSCALL_STUB; }
+ SYS_RECVFROM_NOCANCEL = 403; // { int recvfrom_nocancel(int s, void *buf, size_t len, int flags, struct sockaddr *from, int *fromlenaddr) NO_SYSCALL_STUB; }
+ SYS_ACCEPT_NOCANCEL = 404; // { int accept_nocancel(int s, caddr_t name, socklen_t *anamelen) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 401; // { int nosys(void); }
+ // SYS_NOSYS = 402; // { int nosys(void); }
+ // SYS_NOSYS = 403; // { int nosys(void); }
+ // SYS_NOSYS = 404; // { int nosys(void); }
+ SYS_MSYNC_NOCANCEL = 405; // { int msync_nocancel(caddr_t addr, size_t len, int flags) NO_SYSCALL_STUB; }
+ SYS_FCNTL_NOCANCEL = 406; // { int fcntl_nocancel(int fd, int cmd, long arg) NO_SYSCALL_STUB; }
+ SYS_SELECT_NOCANCEL = 407; // { int select_nocancel(int nd, u_int32_t *in, u_int32_t *ou, u_int32_t *ex, struct timeval *tv) NO_SYSCALL_STUB; }
+ SYS_FSYNC_NOCANCEL = 408; // { int fsync_nocancel(int fd) NO_SYSCALL_STUB; }
+ SYS_CONNECT_NOCANCEL = 409; // { int connect_nocancel(int s, caddr_t name, socklen_t namelen) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 409; // { int nosys(void); }
+ SYS_SIGSUSPEND_NOCANCEL = 410; // { int sigsuspend_nocancel(sigset_t mask) NO_SYSCALL_STUB; }
+ SYS_READV_NOCANCEL = 411; // { user_ssize_t readv_nocancel(int fd, struct iovec *iovp, u_int iovcnt) NO_SYSCALL_STUB; }
+ SYS_WRITEV_NOCANCEL = 412; // { user_ssize_t writev_nocancel(int fd, struct iovec *iovp, u_int iovcnt) NO_SYSCALL_STUB; }
+ SYS_SENDTO_NOCANCEL = 413; // { int sendto_nocancel(int s, caddr_t buf, size_t len, int flags, caddr_t to, socklen_t tolen) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 413; // { int nosys(void); }
+ SYS_PREAD_NOCANCEL = 414; // { user_ssize_t pread_nocancel(int fd, user_addr_t buf, user_size_t nbyte, off_t offset) NO_SYSCALL_STUB; }
+ SYS_PWRITE_NOCANCEL = 415; // { user_ssize_t pwrite_nocancel(int fd, user_addr_t buf, user_size_t nbyte, off_t offset) NO_SYSCALL_STUB; }
+ SYS_WAITID_NOCANCEL = 416; // { int waitid_nocancel(idtype_t idtype, id_t id, siginfo_t *infop, int options) NO_SYSCALL_STUB; }
+ SYS_POLL_NOCANCEL = 417; // { int poll_nocancel(struct pollfd *fds, u_int nfds, int timeout) NO_SYSCALL_STUB; }
+ SYS_MSGSND_NOCANCEL = 418; // { int msgsnd_nocancel(int msqid, void *msgp, size_t msgsz, int msgflg) NO_SYSCALL_STUB; }
+ SYS_MSGRCV_NOCANCEL = 419; // { user_ssize_t msgrcv_nocancel(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 418; // { int nosys(void); }
+ // SYS_NOSYS = 419; // { int nosys(void); }
+ SYS_SEM_WAIT_NOCANCEL = 420; // { int sem_wait_nocancel(sem_t *sem) NO_SYSCALL_STUB; }
+ SYS_AIO_SUSPEND_NOCANCEL = 421; // { int aio_suspend_nocancel(user_addr_t aiocblist, int nent, user_addr_t timeoutp) NO_SYSCALL_STUB; }
+ SYS___SIGWAIT_NOCANCEL = 422; // { int __sigwait_nocancel(user_addr_t set, user_addr_t sig) NO_SYSCALL_STUB; }
+ SYS___SEMWAIT_SIGNAL_NOCANCEL = 423; // { int __semwait_signal_nocancel(int cond_sem, int mutex_sem, int timeout, int relative, time_t tv_sec, int32_t tv_nsec) NO_SYSCALL_STUB; }
+ SYS___MAC_MOUNT = 424; // { int __mac_mount(char *type, char *path, int flags, caddr_t data, struct mac *mac_p); }
+ SYS___MAC_GET_MOUNT = 425; // { int __mac_get_mount(char *path, struct mac *mac_p); }
+ SYS___MAC_GETFSSTAT = 426; // { int __mac_getfsstat(user_addr_t buf, int bufsize, user_addr_t mac, int macsize, int flags); }
+)
diff --git a/src/pkg/syscall/zsysnum_darwin_amd64.go b/src/pkg/syscall/zsysnum_darwin_amd64.go
new file mode 100644
index 000000000..c4c48c2a2
--- /dev/null
+++ b/src/pkg/syscall/zsysnum_darwin_amd64.go
@@ -0,0 +1,485 @@
+// mksysnum_darwin /home/rsc/pub/xnu-1228/bsd/kern/syscalls.master
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+package syscall
+
+const (
+ // SYS_NOSYS = 0; // { int nosys(void); } { indirect syscall }
+ SYS_EXIT = 1; // { void exit(int rval); }
+ SYS_FORK = 2; // { int fork(void); }
+ SYS_READ = 3; // { user_ssize_t read(int fd, user_addr_t cbuf, user_size_t nbyte); }
+ SYS_WRITE = 4; // { user_ssize_t write(int fd, user_addr_t cbuf, user_size_t nbyte); }
+ SYS_OPEN = 5; // { int open(user_addr_t path, int flags, int mode); }
+ SYS_CLOSE = 6; // { int close(int fd); }
+ SYS_WAIT4 = 7; // { int wait4(int pid, user_addr_t status, int options, user_addr_t rusage); }
+ // SYS_NOSYS = 8; // { int nosys(void); } { old creat }
+ SYS_LINK = 9; // { int link(user_addr_t path, user_addr_t link); }
+ SYS_UNLINK = 10; // { int unlink(user_addr_t path); }
+ // SYS_NOSYS = 11; // { int nosys(void); } { old execv }
+ SYS_CHDIR = 12; // { int chdir(user_addr_t path); }
+ SYS_FCHDIR = 13; // { int fchdir(int fd); }
+ SYS_MKNOD = 14; // { int mknod(user_addr_t path, int mode, int dev); }
+ SYS_CHMOD = 15; // { int chmod(user_addr_t path, int mode); }
+ SYS_CHOWN = 16; // { int chown(user_addr_t path, int uid, int gid); }
+ SYS_OGETFSSTAT = 18; // { int ogetfsstat(user_addr_t buf, int bufsize, int flags); }
+ SYS_GETFSSTAT = 18; // { int getfsstat(user_addr_t buf, int bufsize, int flags); }
+ // SYS_NOSYS = 19; // { int nosys(void); } { old lseek }
+ SYS_GETPID = 20; // { int getpid(void); }
+ // SYS_NOSYS = 21; // { int nosys(void); } { old mount }
+ // SYS_NOSYS = 22; // { int nosys(void); } { old umount }
+ SYS_SETUID = 23; // { int setuid(uid_t uid); }
+ SYS_GETUID = 24; // { int getuid(void); }
+ SYS_GETEUID = 25; // { int geteuid(void); }
+ SYS_PTRACE = 26; // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
+ SYS_RECVMSG = 27; // { int recvmsg(int s, struct msghdr *msg, int flags); }
+ SYS_SENDMSG = 28; // { int sendmsg(int s, caddr_t msg, int flags); }
+ SYS_RECVFROM = 29; // { int recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, int *fromlenaddr); }
+ SYS_ACCEPT = 30; // { int accept(int s, caddr_t name, socklen_t *anamelen); }
+ SYS_GETPEERNAME = 31; // { int getpeername(int fdes, caddr_t asa, socklen_t *alen); }
+ SYS_GETSOCKNAME = 32; // { int getsockname(int fdes, caddr_t asa, socklen_t *alen); }
+ // SYS_NOSYS = 27; // { int nosys(void); }
+ // SYS_NOSYS = 28; // { int nosys(void); }
+ // SYS_NOSYS = 29; // { int nosys(void); }
+ // SYS_NOSYS = 30; // { int nosys(void); }
+ // SYS_NOSYS = 31; // { int nosys(void); }
+ // SYS_NOSYS = 32; // { int nosys(void); }
+ SYS_ACCESS = 33; // { int access(user_addr_t path, int flags); }
+ SYS_CHFLAGS = 34; // { int chflags(char *path, int flags); }
+ SYS_FCHFLAGS = 35; // { int fchflags(int fd, int flags); }
+ SYS_SYNC = 36; // { int sync(void); }
+ SYS_KILL = 37; // { int kill(int pid, int signum, int posix); }
+ // SYS_NOSYS = 38; // { int nosys(void); } { old stat }
+ SYS_GETPPID = 39; // { int getppid(void); }
+ // SYS_NOSYS = 40; // { int nosys(void); } { old lstat }
+ SYS_DUP = 41; // { int dup(u_int fd); }
+ SYS_PIPE = 42; // { int pipe(void); }
+ SYS_GETEGID = 43; // { int getegid(void); }
+ SYS_PROFIL = 44; // { int profil(short *bufbase, size_t bufsize, u_long pcoffset, u_int pcscale); }
+ // SYS_NOSYS = 45; // { int nosys(void); } { old ktrace }
+ SYS_SIGACTION = 46; // { int sigaction(int signum, struct __sigaction *nsa, struct sigaction *osa); }
+ SYS_GETGID = 47; // { int getgid(void); }
+ SYS_SIGPROCMASK = 48; // { int sigprocmask(int how, user_addr_t mask, user_addr_t omask); }
+ SYS_GETLOGIN = 49; // { int getlogin(char *namebuf, u_int namelen); }
+ SYS_SETLOGIN = 50; // { int setlogin(char *namebuf); }
+ SYS_ACCT = 51; // { int acct(char *path); }
+ SYS_SIGPENDING = 52; // { int sigpending(struct sigvec *osv); }
+ SYS_SIGALTSTACK = 53; // { int sigaltstack(struct sigaltstack *nss, struct sigaltstack *oss); }
+ SYS_IOCTL = 54; // { int ioctl(int fd, u_long com, caddr_t data); }
+ SYS_REBOOT = 55; // { int reboot(int opt, char *command); }
+ SYS_REVOKE = 56; // { int revoke(char *path); }
+ SYS_SYMLINK = 57; // { int symlink(char *path, char *link); }
+ SYS_READLINK = 58; // { int readlink(char *path, char *buf, int count); }
+ SYS_EXECVE = 59; // { int execve(char *fname, char **argp, char **envp); }
+ SYS_UMASK = 60; // { int umask(int newmask); }
+ SYS_CHROOT = 61; // { int chroot(user_addr_t path); }
+ // SYS_NOSYS = 62; // { int nosys(void); } { old fstat }
+ // SYS_NOSYS = 63; // { int nosys(void); } { used internally, reserved }
+ // SYS_NOSYS = 64; // { int nosys(void); } { old getpagesize }
+ SYS_MSYNC = 65; // { int msync(caddr_t addr, size_t len, int flags); }
+ SYS_VFORK = 66; // { int vfork(void); }
+ // SYS_NOSYS = 67; // { int nosys(void); } { old vread }
+ // SYS_NOSYS = 68; // { int nosys(void); } { old vwrite }
+ SYS_SBRK = 69; // { int sbrk(int incr) NO_SYSCALL_STUB; }
+ SYS_SSTK = 70; // { int sstk(int incr) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 71; // { int nosys(void); } { old mmap }
+ SYS_OVADVISE = 72; // { int ovadvise(void) NO_SYSCALL_STUB; } { old vadvise }
+ SYS_MUNMAP = 73; // { int munmap(caddr_t addr, size_t len); }
+ SYS_MPROTECT = 74; // { int mprotect(caddr_t addr, size_t len, int prot); }
+ SYS_MADVISE = 75; // { int madvise(caddr_t addr, size_t len, int behav); }
+ // SYS_NOSYS = 76; // { int nosys(void); } { old vhangup }
+ // SYS_NOSYS = 77; // { int nosys(void); } { old vlimit }
+ SYS_MINCORE = 78; // { int mincore(user_addr_t addr, user_size_t len, user_addr_t vec); }
+ SYS_GETGROUPS = 79; // { int getgroups(u_int gidsetsize, gid_t *gidset); }
+ SYS_SETGROUPS = 80; // { int setgroups(u_int gidsetsize, gid_t *gidset); }
+ SYS_GETPGRP = 81; // { int getpgrp(void); }
+ SYS_SETPGID = 82; // { int setpgid(int pid, int pgid); }
+ SYS_SETITIMER = 83; // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
+ // SYS_NOSYS = 84; // { int nosys(void); } { old wait }
+ SYS_SWAPON = 85; // { int swapon(void); }
+ SYS_GETITIMER = 86; // { int getitimer(u_int which, struct itimerval *itv); }
+ // SYS_NOSYS = 87; // { int nosys(void); } { old gethostname }
+ // SYS_NOSYS = 88; // { int nosys(void); } { old sethostname }
+ SYS_GETDTABLESIZE = 89; // { int getdtablesize(void); }
+ SYS_DUP2 = 90; // { int dup2(u_int from, u_int to); }
+ // SYS_NOSYS = 91; // { int nosys(void); } { old getdopt }
+ SYS_FCNTL = 92; // { int fcntl(int fd, int cmd, long arg); }
+ SYS_SELECT = 93; // { int select(int nd, u_int32_t *in, u_int32_t *ou, u_int32_t *ex, struct timeval *tv); }
+ // SYS_NOSYS = 94; // { int nosys(void); } { old setdopt }
+ SYS_FSYNC = 95; // { int fsync(int fd); }
+ SYS_SETPRIORITY = 96; // { int setpriority(int which, id_t who, int prio); }
+ SYS_SOCKET = 97; // { int socket(int domain, int type, int protocol); }
+ SYS_CONNECT = 98; // { int connect(int s, caddr_t name, socklen_t namelen); }
+ // SYS_NOSYS = 97; // { int nosys(void); }
+ // SYS_NOSYS = 98; // { int nosys(void); }
+ // SYS_NOSYS = 99; // { int nosys(void); } { old accept }
+ SYS_GETPRIORITY = 100; // { int getpriority(int which, id_t who); }
+ // SYS_NOSYS = 101; // { int nosys(void); } { old send }
+ // SYS_NOSYS = 102; // { int nosys(void); } { old recv }
+ // SYS_NOSYS = 103; // { int nosys(void); } { old sigreturn }
+ SYS_BIND = 104; // { int bind(int s, caddr_t name, socklen_t namelen); }
+ SYS_SETSOCKOPT = 105; // { int setsockopt(int s, int level, int name, caddr_t val, socklen_t valsize); }
+ SYS_LISTEN = 106; // { int listen(int s, int backlog); }
+ // SYS_NOSYS = 104; // { int nosys(void); }
+ // SYS_NOSYS = 105; // { int nosys(void); }
+ // SYS_NOSYS = 106; // { int nosys(void); }
+ // SYS_NOSYS = 107; // { int nosys(void); } { old vtimes }
+ // SYS_NOSYS = 108; // { int nosys(void); } { old sigvec }
+ // SYS_NOSYS = 109; // { int nosys(void); } { old sigblock }
+ // SYS_NOSYS = 110; // { int nosys(void); } { old sigsetmask }
+ SYS_SIGSUSPEND = 111; // { int sigsuspend(sigset_t mask); }
+ // SYS_NOSYS = 112; // { int nosys(void); } { old sigstack }
+ // SYS_NOSYS = 113; // { int nosys(void); } { old recvmsg }
+ // SYS_NOSYS = 114; // { int nosys(void); } { old sendmsg }
+ // SYS_NOSYS = 113; // { int nosys(void); }
+ // SYS_NOSYS = 114; // { int nosys(void); }
+ // SYS_NOSYS = 115; // { int nosys(void); } { old vtrace }
+ SYS_GETTIMEOFDAY = 116; // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
+ SYS_GETRUSAGE = 117; // { int getrusage(int who, struct rusage *rusage); }
+ SYS_GETSOCKOPT = 118; // { int getsockopt(int s, int level, int name, caddr_t val, socklen_t *avalsize); }
+ // SYS_NOSYS = 118; // { int nosys(void); }
+ // SYS_NOSYS = 119; // { int nosys(void); } { old resuba }
+ SYS_READV = 120; // { user_ssize_t readv(int fd, struct iovec *iovp, u_int iovcnt); }
+ SYS_WRITEV = 121; // { user_ssize_t writev(int fd, struct iovec *iovp, u_int iovcnt); }
+ SYS_SETTIMEOFDAY = 122; // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
+ SYS_FCHOWN = 123; // { int fchown(int fd, int uid, int gid); }
+ SYS_FCHMOD = 124; // { int fchmod(int fd, int mode); }
+ // SYS_NOSYS = 125; // { int nosys(void); } { old recvfrom }
+ SYS_SETREUID = 126; // { int setreuid(uid_t ruid, uid_t euid); }
+ SYS_SETREGID = 127; // { int setregid(gid_t rgid, gid_t egid); }
+ SYS_RENAME = 128; // { int rename(char *from, char *to); }
+ // SYS_NOSYS = 129; // { int nosys(void); } { old truncate }
+ // SYS_NOSYS = 130; // { int nosys(void); } { old ftruncate }
+ SYS_FLOCK = 131; // { int flock(int fd, int how); }
+ SYS_MKFIFO = 132; // { int mkfifo(user_addr_t path, int mode); }
+ SYS_SENDTO = 133; // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, socklen_t tolen); }
+ SYS_SHUTDOWN = 134; // { int shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135; // { int socketpair(int domain, int type, int protocol, int *rsv); }
+ // SYS_NOSYS = 133; // { int nosys(void); }
+ // SYS_NOSYS = 134; // { int nosys(void); }
+ // SYS_NOSYS = 135; // { int nosys(void); }
+ SYS_MKDIR = 136; // { int mkdir(user_addr_t path, int mode); }
+ SYS_RMDIR = 137; // { int rmdir(char *path); }
+ SYS_UTIMES = 138; // { int utimes(char *path, struct timeval *tptr); }
+ SYS_FUTIMES = 139; // { int futimes(int fd, struct timeval *tptr); }
+ SYS_ADJTIME = 140; // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
+ // SYS_NOSYS = 141; // { int nosys(void); } { old getpeername }
+ SYS_GETHOSTUUID = 142; // { int gethostuuid(unsigned char *uuid_buf, const struct timespec *timeoutp); }
+ // SYS_NOSYS = 143; // { int nosys(void); } { old sethostid }
+ // SYS_NOSYS = 144; // { int nosys(void); } { old getrlimit }
+ // SYS_NOSYS = 145; // { int nosys(void); } { old setrlimit }
+ // SYS_NOSYS = 146; // { int nosys(void); } { old killpg }
+ SYS_SETSID = 147; // { int setsid(void); }
+ // SYS_NOSYS = 148; // { int nosys(void); } { old setquota }
+ // SYS_NOSYS = 149; // { int nosys(void); } { old qquota }
+ // SYS_NOSYS = 150; // { int nosys(void); } { old getsockname }
+ SYS_GETPGID = 151; // { int getpgid(pid_t pid); }
+ SYS_SETPRIVEXEC = 152; // { int setprivexec(int flag); }
+ SYS_PREAD = 153; // { user_ssize_t pread(int fd, user_addr_t buf, user_size_t nbyte, off_t offset); }
+ SYS_PWRITE = 154; // { user_ssize_t pwrite(int fd, user_addr_t buf, user_size_t nbyte, off_t offset); }
+ SYS_NFSSVC = 155; // { int nfssvc(int flag, caddr_t argp); }
+ // SYS_NOSYS = 155; // { int nosys(void); }
+ // SYS_NOSYS = 156; // { int nosys(void); } { old getdirentries }
+ SYS_STATFS = 157; // { int statfs(char *path, struct statfs *buf); }
+ SYS_FSTATFS = 158; // { int fstatfs(int fd, struct statfs *buf); }
+ SYS_UNMOUNT = 159; // { int unmount(user_addr_t path, int flags); }
+ // SYS_NOSYS = 160; // { int nosys(void); } { old async_daemon }
+ SYS_GETFH = 161; // { int getfh(char *fname, fhandle_t *fhp); }
+ // SYS_NOSYS = 161; // { int nosys(void); }
+ // SYS_NOSYS = 162; // { int nosys(void); } { old getdomainname }
+ // SYS_NOSYS = 163; // { int nosys(void); } { old setdomainname }
+ // SYS_NOSYS = 164; // { int nosys(void); }
+ SYS_QUOTACTL = 165; // { int quotactl(const char *path, int cmd, int uid, caddr_t arg); }
+ // SYS_NOSYS = 166; // { int nosys(void); } { old exportfs }
+ SYS_MOUNT = 167; // { int mount(char *type, char *path, int flags, caddr_t data); }
+ // SYS_NOSYS = 168; // { int nosys(void); } { old ustat }
+ SYS_CSOPS = 169; // { int csops(pid_t pid, uint32_t ops, user_addr_t useraddr, user_size_t usersize); }
+ // SYS_NOSYS = 171; // { int nosys(void); } { old wait3 }
+ // SYS_NOSYS = 172; // { int nosys(void); } { old rpause }
+ SYS_WAITID = 173; // { int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options); }
+ // SYS_NOSYS = 174; // { int nosys(void); } { old getdents }
+ // SYS_NOSYS = 175; // { int nosys(void); } { old gc_control }
+ SYS_ADD_PROFIL = 176; // { int add_profil(short *bufbase, size_t bufsize, u_long pcoffset, u_int pcscale); }
+ // SYS_NOSYS = 177; // { int nosys(void); }
+ // SYS_NOSYS = 178; // { int nosys(void); }
+ // SYS_NOSYS = 179; // { int nosys(void); }
+ SYS_KDEBUG_TRACE = 180; // { int kdebug_trace(int code, int arg1, int arg2, int arg3, int arg4, int arg5) NO_SYSCALL_STUB; }
+ SYS_SETGID = 181; // { int setgid(gid_t gid); }
+ SYS_SETEGID = 182; // { int setegid(gid_t egid); }
+ SYS_SETEUID = 183; // { int seteuid(uid_t euid); }
+ SYS_SIGRETURN = 184; // { int sigreturn(struct ucontext *uctx, int infostyle); }
+ // SYS_NOSYS = 186; // { int nosys(void); }
+ // SYS_NOSYS = 187; // { int nosys(void); }
+ SYS_STAT = 188; // { int stat(user_addr_t path, user_addr_t ub); }
+ SYS_FSTAT = 189; // { int fstat(int fd, user_addr_t ub); }
+ SYS_LSTAT = 190; // { int lstat(user_addr_t path, user_addr_t ub); }
+ SYS_PATHCONF = 191; // { int pathconf(char *path, int name); }
+ SYS_FPATHCONF = 192; // { int fpathconf(int fd, int name); }
+ // SYS_NOSYS = 193; // { int nosys(void); }
+ SYS_GETRLIMIT = 194; // { int getrlimit(u_int which, struct rlimit *rlp); }
+ SYS_SETRLIMIT = 195; // { int setrlimit(u_int which, struct rlimit *rlp); }
+ SYS_GETDIRENTRIES = 196; // { int getdirentries(int fd, char *buf, u_int count, long *basep); }
+ SYS_MMAP = 197; // { user_addr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }
+ // SYS_NOSYS = 198; // { int nosys(void); } { __syscall }
+ SYS_LSEEK = 199; // { off_t lseek(int fd, off_t offset, int whence); }
+ SYS_TRUNCATE = 200; // { int truncate(char *path, off_t length); }
+ SYS_FTRUNCATE = 201; // { int ftruncate(int fd, off_t length); }
+ SYS___SYSCTL = 202; // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }
+ SYS_MLOCK = 203; // { int mlock(caddr_t addr, size_t len); }
+ SYS_MUNLOCK = 204; // { int munlock(caddr_t addr, size_t len); }
+ SYS_UNDELETE = 205; // { int undelete(user_addr_t path); }
+ SYS_ATSOCKET = 206; // { int ATsocket(int proto); }
+ // SYS_NOSYS = 213; // { int nosys(void); } { Reserved for AppleTalk }
+ // SYS_NOSYS = 206; // { int nosys(void); }
+ // SYS_NOSYS = 207; // { int nosys(void); }
+ // SYS_NOSYS = 208; // { int nosys(void); }
+ // SYS_NOSYS = 209; // { int nosys(void); }
+ // SYS_NOSYS = 210; // { int nosys(void); }
+ // SYS_NOSYS = 211; // { int nosys(void); }
+ // SYS_NOSYS = 212; // { int nosys(void); }
+ // SYS_NOSYS = 213; // { int nosys(void); } { Reserved for AppleTalk }
+ SYS_KQUEUE_FROM_PORTSET_NP = 214; // { int kqueue_from_portset_np(int portset); }
+ SYS_KQUEUE_PORTSET_NP = 215; // { int kqueue_portset_np(int fd); }
+ SYS_GETATTRLIST = 220; // { int getattrlist(const char *path, struct attrlist *alist, void *attributeBuffer, size_t bufferSize, u_long options); }
+ SYS_SETATTRLIST = 221; // { int setattrlist(const char *path, struct attrlist *alist, void *attributeBuffer, size_t bufferSize, u_long options); }
+ SYS_GETDIRENTRIESATTR = 222; // { int getdirentriesattr(int fd, struct attrlist *alist, void *buffer, size_t buffersize, u_long *count, u_long *basep, u_long *newstate, u_long options); }
+ SYS_EXCHANGEDATA = 223; // { int exchangedata(const char *path1, const char *path2, u_long options); }
+ // SYS_NOSYS = 224; // { int nosys(void); } { was checkuseraccess }
+ SYS_SEARCHFS = 225; // { int searchfs(const char *path, struct fssearchblock *searchblock, u_long *nummatches, u_long scriptcode, u_long options, struct searchstate *state); }
+ SYS_DELETE = 226; // { int delete(user_addr_t path) NO_SYSCALL_STUB; } { private delete (Carbon semantics) }
+ SYS_COPYFILE = 227; // { int copyfile(char *from, char *to, int mode, int flags) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 228; // { int nosys(void); }
+ // SYS_NOSYS = 229; // { int nosys(void); }
+ SYS_POLL = 230; // { int poll(struct pollfd *fds, u_int nfds, int timeout); }
+ SYS_WATCHEVENT = 231; // { int watchevent(struct eventreq *u_req, int u_eventmask); }
+ SYS_WAITEVENT = 232; // { int waitevent(struct eventreq *u_req, struct timeval *tv); }
+ SYS_MODWATCH = 233; // { int modwatch(struct eventreq *u_req, int u_eventmask); }
+ SYS_GETXATTR = 234; // { user_ssize_t getxattr(user_addr_t path, user_addr_t attrname, user_addr_t value, size_t size, uint32_t position, int options); }
+ SYS_FGETXATTR = 235; // { user_ssize_t fgetxattr(int fd, user_addr_t attrname, user_addr_t value, size_t size, uint32_t position, int options); }
+ SYS_SETXATTR = 236; // { int setxattr(user_addr_t path, user_addr_t attrname, user_addr_t value, size_t size, uint32_t position, int options); }
+ SYS_FSETXATTR = 237; // { int fsetxattr(int fd, user_addr_t attrname, user_addr_t value, size_t size, uint32_t position, int options); }
+ SYS_REMOVEXATTR = 238; // { int removexattr(user_addr_t path, user_addr_t attrname, int options); }
+ SYS_FREMOVEXATTR = 239; // { int fremovexattr(int fd, user_addr_t attrname, int options); }
+ SYS_LISTXATTR = 240; // { user_ssize_t listxattr(user_addr_t path, user_addr_t namebuf, size_t bufsize, int options); }
+ SYS_FLISTXATTR = 241; // { user_ssize_t flistxattr(int fd, user_addr_t namebuf, size_t bufsize, int options); }
+ SYS_FSCTL = 242; // { int fsctl(const char *path, u_long cmd, caddr_t data, u_long options); }
+ SYS_INITGROUPS = 243; // { int initgroups(u_int gidsetsize, gid_t *gidset, int gmuid); }
+ SYS_POSIX_SPAWN = 244; // { int posix_spawn(pid_t *pid, const char *path, const struct _posix_spawn_args_desc *adesc, char **argv, char **envp); }
+ // SYS_NOSYS = 245; // { int nosys(void); }
+ // SYS_NOSYS = 246; // { int nosys(void); }
+ SYS_NFSCLNT = 247; // { int nfsclnt(int flag, caddr_t argp); }
+ // SYS_NOSYS = 247; // { int nosys(void); }
+ SYS_FHOPEN = 248; // { int fhopen(const struct fhandle *u_fhp, int flags); }
+ // SYS_NOSYS = 248; // { int nosys(void); }
+ // SYS_NOSYS = 249; // { int nosys(void); }
+ SYS_MINHERIT = 250; // { int minherit(void *addr, size_t len, int inherit); }
+ SYS_SEMSYS = 251; // { int semsys(u_int which, int a2, int a3, int a4, int a5); }
+ // SYS_NOSYS = 251; // { int nosys(void); }
+ SYS_MSGSYS = 252; // { int msgsys(u_int which, int a2, int a3, int a4, int a5); }
+ // SYS_NOSYS = 252; // { int nosys(void); }
+ SYS_SHMSYS = 253; // { int shmsys(u_int which, int a2, int a3, int a4); }
+ // SYS_NOSYS = 253; // { int nosys(void); }
+ SYS_SEMCTL = 254; // { int semctl(int semid, int semnum, int cmd, semun_t arg); }
+ SYS_SEMGET = 255; // { int semget(key_t key, int nsems, int semflg); }
+ SYS_SEMOP = 256; // { int semop(int semid, struct sembuf *sops, int nsops); }
+ // SYS_NOSYS = 257; // { int nosys(void); }
+ // SYS_NOSYS = 254; // { int nosys(void); }
+ // SYS_NOSYS = 255; // { int nosys(void); }
+ // SYS_NOSYS = 256; // { int nosys(void); }
+ // SYS_NOSYS = 257; // { int nosys(void); }
+ SYS_MSGCTL = 258; // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }
+ SYS_MSGGET = 259; // { int msgget(key_t key, int msgflg); }
+ SYS_MSGSND = 260; // { int msgsnd(int msqid, void *msgp, size_t msgsz, int msgflg); }
+ SYS_MSGRCV = 261; // { user_ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
+ // SYS_NOSYS = 258; // { int nosys(void); }
+ // SYS_NOSYS = 259; // { int nosys(void); }
+ // SYS_NOSYS = 260; // { int nosys(void); }
+ // SYS_NOSYS = 261; // { int nosys(void); }
+ SYS_SHMAT = 262; // { user_addr_t shmat(int shmid, void *shmaddr, int shmflg); }
+ SYS_SHMCTL = 263; // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }
+ SYS_SHMDT = 264; // { int shmdt(void *shmaddr); }
+ SYS_SHMGET = 265; // { int shmget(key_t key, size_t size, int shmflg); }
+ // SYS_NOSYS = 262; // { int nosys(void); }
+ // SYS_NOSYS = 263; // { int nosys(void); }
+ // SYS_NOSYS = 264; // { int nosys(void); }
+ // SYS_NOSYS = 265; // { int nosys(void); }
+ SYS_SHM_OPEN = 266; // { int shm_open(const char *name, int oflag, int mode); }
+ SYS_SHM_UNLINK = 267; // { int shm_unlink(const char *name); }
+ SYS_SEM_OPEN = 268; // { user_addr_t sem_open(const char *name, int oflag, int mode, int value); }
+ SYS_SEM_CLOSE = 269; // { int sem_close(sem_t *sem); }
+ SYS_SEM_UNLINK = 270; // { int sem_unlink(const char *name); }
+ SYS_SEM_WAIT = 271; // { int sem_wait(sem_t *sem); }
+ SYS_SEM_TRYWAIT = 272; // { int sem_trywait(sem_t *sem); }
+ SYS_SEM_POST = 273; // { int sem_post(sem_t *sem); }
+ SYS_SEM_GETVALUE = 274; // { int sem_getvalue(sem_t *sem, int *sval); }
+ SYS_SEM_INIT = 275; // { int sem_init(sem_t *sem, int phsared, u_int value); }
+ SYS_SEM_DESTROY = 276; // { int sem_destroy(sem_t *sem); }
+ SYS_OPEN_EXTENDED = 277; // { int open_extended(user_addr_t path, int flags, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
+ SYS_UMASK_EXTENDED = 278; // { int umask_extended(int newmask, user_addr_t xsecurity) NO_SYSCALL_STUB; }
+ SYS_STAT_EXTENDED = 279; // { int stat_extended(user_addr_t path, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
+ SYS_LSTAT_EXTENDED = 280; // { int lstat_extended(user_addr_t path, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
+ SYS_FSTAT_EXTENDED = 281; // { int fstat_extended(int fd, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
+ SYS_CHMOD_EXTENDED = 282; // { int chmod_extended(user_addr_t path, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
+ SYS_FCHMOD_EXTENDED = 283; // { int fchmod_extended(int fd, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
+ SYS_ACCESS_EXTENDED = 284; // { int access_extended(user_addr_t entries, size_t size, user_addr_t results, uid_t uid) NO_SYSCALL_STUB; }
+ SYS_SETTID = 285; // { int settid(uid_t uid, gid_t gid) NO_SYSCALL_STUB; }
+ SYS_GETTID = 286; // { int gettid(uid_t *uidp, gid_t *gidp) NO_SYSCALL_STUB; }
+ SYS_SETSGROUPS = 287; // { int setsgroups(int setlen, user_addr_t guidset) NO_SYSCALL_STUB; }
+ SYS_GETSGROUPS = 288; // { int getsgroups(user_addr_t setlen, user_addr_t guidset) NO_SYSCALL_STUB; }
+ SYS_SETWGROUPS = 289; // { int setwgroups(int setlen, user_addr_t guidset) NO_SYSCALL_STUB; }
+ SYS_GETWGROUPS = 290; // { int getwgroups(user_addr_t setlen, user_addr_t guidset) NO_SYSCALL_STUB; }
+ SYS_MKFIFO_EXTENDED = 291; // { int mkfifo_extended(user_addr_t path, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
+ SYS_MKDIR_EXTENDED = 292; // { int mkdir_extended(user_addr_t path, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
+ SYS_IDENTITYSVC = 293; // { int identitysvc(int opcode, user_addr_t message) NO_SYSCALL_STUB; }
+ SYS_SHARED_REGION_CHECK_NP = 294; // { int shared_region_check_np(uint64_t *start_address) NO_SYSCALL_STUB; }
+ SYS_SHARED_REGION_MAP_NP = 295; // { int shared_region_map_np(int fd, uint32_t count, const struct shared_file_mapping_np *mappings) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 296; // { int nosys(void); } { old load_shared_file }
+ // SYS_NOSYS = 297; // { int nosys(void); } { old reset_shared_file }
+ // SYS_NOSYS = 298; // { int nosys(void); } { old new_system_shared_regions }
+ // SYS_ENOSYS = 299; // { int enosys(void); } { old shared_region_map_file_np }
+ // SYS_ENOSYS = 300; // { int enosys(void); } { old shared_region_make_private_np }
+ SYS___PTHREAD_MUTEX_DESTROY = 301; // { int __pthread_mutex_destroy(int mutexid); }
+ SYS___PTHREAD_MUTEX_INIT = 302; // { int __pthread_mutex_init(user_addr_t mutex, user_addr_t attr); }
+ SYS___PTHREAD_MUTEX_LOCK = 303; // { int __pthread_mutex_lock(int mutexid); }
+ SYS___PTHREAD_MUTEX_TRYLOCK = 304; // { int __pthread_mutex_trylock(int mutexid); }
+ SYS___PTHREAD_MUTEX_UNLOCK = 305; // { int __pthread_mutex_unlock(int mutexid); }
+ SYS___PTHREAD_COND_INIT = 306; // { int __pthread_cond_init(user_addr_t cond, user_addr_t attr); }
+ SYS___PTHREAD_COND_DESTROY = 307; // { int __pthread_cond_destroy(int condid); }
+ SYS___PTHREAD_COND_BROADCAST = 308; // { int __pthread_cond_broadcast(int condid); }
+ SYS___PTHREAD_COND_SIGNAL = 309; // { int __pthread_cond_signal(int condid); }
+ SYS_GETSID = 310; // { int getsid(pid_t pid); }
+ SYS_SETTID_WITH_PID = 311; // { int settid_with_pid(pid_t pid, int assume) NO_SYSCALL_STUB; }
+ SYS___PTHREAD_COND_TIMEDWAIT = 312; // { int __pthread_cond_timedwait(int condid, int mutexid, user_addr_t abstime); }
+ SYS_AIO_FSYNC = 313; // { int aio_fsync(int op, user_addr_t aiocbp); }
+ SYS_AIO_RETURN = 314; // { user_ssize_t aio_return(user_addr_t aiocbp); }
+ SYS_AIO_SUSPEND = 315; // { int aio_suspend(user_addr_t aiocblist, int nent, user_addr_t timeoutp); }
+ SYS_AIO_CANCEL = 316; // { int aio_cancel(int fd, user_addr_t aiocbp); }
+ SYS_AIO_ERROR = 317; // { int aio_error(user_addr_t aiocbp); }
+ SYS_AIO_READ = 318; // { int aio_read(user_addr_t aiocbp); }
+ SYS_AIO_WRITE = 319; // { int aio_write(user_addr_t aiocbp); }
+ SYS_LIO_LISTIO = 320; // { int lio_listio(int mode, user_addr_t aiocblist, int nent, user_addr_t sigp); }
+ SYS___PTHREAD_COND_WAIT = 321; // { int __pthread_cond_wait(int condid, int mutexid); }
+ SYS_IOPOLICYSYS = 322; // { int iopolicysys(int cmd, void *arg) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 323; // { int nosys(void); }
+ SYS_MLOCKALL = 324; // { int mlockall(int how); }
+ SYS_MUNLOCKALL = 325; // { int munlockall(int how); }
+ // SYS_NOSYS = 326; // { int nosys(void); }
+ SYS_ISSETUGID = 327; // { int issetugid(void); }
+ SYS___PTHREAD_KILL = 328; // { int __pthread_kill(int thread_port, int sig); }
+ SYS___PTHREAD_SIGMASK = 329; // { int __pthread_sigmask(int how, user_addr_t set, user_addr_t oset); }
+ SYS___SIGWAIT = 330; // { int __sigwait(user_addr_t set, user_addr_t sig); }
+ SYS___DISABLE_THREADSIGNAL = 331; // { int __disable_threadsignal(int value); }
+ SYS___PTHREAD_MARKCANCEL = 332; // { int __pthread_markcancel(int thread_port); }
+ SYS___PTHREAD_CANCELED = 333; // { int __pthread_canceled(int action); }
+ SYS___SEMWAIT_SIGNAL = 334; // { int __semwait_signal(int cond_sem, int mutex_sem, int timeout, int relative, time_t tv_sec, int32_t tv_nsec); }
+ // SYS_NOSYS = 335; // { int nosys(void); } { old utrace }
+ SYS_PROC_INFO = 336; // { int proc_info(int32_t callnum,int32_t pid,uint32_t flavor, uint64_t arg,user_addr_t buffer,int32_t buffersize) NO_SYSCALL_STUB; }
+ SYS_SENDFILE = 337; // { int sendfile(int fd, int s, off_t offset, off_t *nbytes, struct sf_hdtr *hdtr, int flags); }
+ // SYS_NOSYS = 337; // { int nosys(void); }
+ SYS_STAT64 = 338; // { int stat64(user_addr_t path, user_addr_t ub); }
+ SYS_FSTAT64 = 339; // { int fstat64(int fd, user_addr_t ub); }
+ SYS_LSTAT64 = 340; // { int lstat64(user_addr_t path, user_addr_t ub); }
+ SYS_STAT64_EXTENDED = 341; // { int stat64_extended(user_addr_t path, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
+ SYS_LSTAT64_EXTENDED = 342; // { int lstat64_extended(user_addr_t path, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
+ SYS_FSTAT64_EXTENDED = 343; // { int fstat64_extended(int fd, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
+ SYS_GETDIRENTRIES64 = 344; // { user_ssize_t getdirentries64(int fd, void *buf, user_size_t bufsize, off_t *position) NO_SYSCALL_STUB; }
+ SYS_STATFS64 = 345; // { int statfs64(char *path, struct statfs64 *buf); }
+ SYS_FSTATFS64 = 346; // { int fstatfs64(int fd, struct statfs64 *buf); }
+ SYS_GETFSSTAT64 = 347; // { int getfsstat64(user_addr_t buf, int bufsize, int flags); }
+ SYS___PTHREAD_CHDIR = 348; // { int __pthread_chdir(user_addr_t path); }
+ SYS___PTHREAD_FCHDIR = 349; // { int __pthread_fchdir(int fd); }
+ SYS_AUDIT = 350; // { int audit(void *record, int length); }
+ SYS_AUDITON = 351; // { int auditon(int cmd, void *data, int length); }
+ // SYS_NOSYS = 352; // { int nosys(void); }
+ SYS_GETAUID = 353; // { int getauid(au_id_t *auid); }
+ SYS_SETAUID = 354; // { int setauid(au_id_t *auid); }
+ SYS_GETAUDIT = 355; // { int getaudit(struct auditinfo *auditinfo); }
+ SYS_SETAUDIT = 356; // { int setaudit(struct auditinfo *auditinfo); }
+ SYS_GETAUDIT_ADDR = 357; // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, int length); }
+ SYS_SETAUDIT_ADDR = 358; // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, int length); }
+ SYS_AUDITCTL = 359; // { int auditctl(char *path); }
+ // SYS_NOSYS = 350; // { int nosys(void); }
+ // SYS_NOSYS = 351; // { int nosys(void); }
+ // SYS_NOSYS = 352; // { int nosys(void); }
+ // SYS_NOSYS = 353; // { int nosys(void); }
+ // SYS_NOSYS = 354; // { int nosys(void); }
+ // SYS_NOSYS = 355; // { int nosys(void); }
+ // SYS_NOSYS = 356; // { int nosys(void); }
+ // SYS_NOSYS = 357; // { int nosys(void); }
+ // SYS_NOSYS = 358; // { int nosys(void); }
+ // SYS_NOSYS = 359; // { int nosys(void); }
+ SYS_BSDTHREAD_CREATE = 360; // { user_addr_t bsdthread_create(user_addr_t func, user_addr_t func_arg, user_addr_t stack, user_addr_t pthread, uint32_t flags) NO_SYSCALL_STUB; }
+ SYS_BSDTHREAD_TERMINATE = 361; // { int bsdthread_terminate(user_addr_t stackaddr, size_t freesize, uint32_t port, uint32_t sem) NO_SYSCALL_STUB; }
+ SYS_KQUEUE = 362; // { int kqueue(void); }
+ SYS_KEVENT = 363; // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
+ SYS_LCHOWN = 364; // { int lchown(user_addr_t path, uid_t owner, gid_t group); }
+ SYS_STACK_SNAPSHOT = 365; // { int stack_snapshot(pid_t pid, user_addr_t tracebuf, uint32_t tracebuf_size, uint32_t options) NO_SYSCALL_STUB; }
+ SYS_BSDTHREAD_REGISTER = 366; // { int bsdthread_register(user_addr_t threadstart, user_addr_t wqthread, int pthsize) NO_SYSCALL_STUB; }
+ SYS_WORKQ_OPEN = 367; // { int workq_open(void) NO_SYSCALL_STUB; }
+ SYS_WORKQ_OPS = 368; // { int workq_ops(int options, user_addr_t item, int prio) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 369; // { int nosys(void); }
+ // SYS_NOSYS = 370; // { int nosys(void); }
+ // SYS_NOSYS = 371; // { int nosys(void); }
+ // SYS_NOSYS = 372; // { int nosys(void); }
+ // SYS_NOSYS = 373; // { int nosys(void); }
+ // SYS_NOSYS = 374; // { int nosys(void); }
+ // SYS_NOSYS = 375; // { int nosys(void); }
+ // SYS_NOSYS = 376; // { int nosys(void); }
+ // SYS_NOSYS = 377; // { int nosys(void); }
+ // SYS_NOSYS = 378; // { int nosys(void); }
+ // SYS_NOSYS = 379; // { int nosys(void); }
+ SYS___MAC_EXECVE = 380; // { int __mac_execve(char *fname, char **argp, char **envp, struct mac *mac_p); }
+ SYS___MAC_SYSCALL = 381; // { int __mac_syscall(char *policy, int call, user_addr_t arg); }
+ SYS___MAC_GET_FILE = 382; // { int __mac_get_file(char *path_p, struct mac *mac_p); }
+ SYS___MAC_SET_FILE = 383; // { int __mac_set_file(char *path_p, struct mac *mac_p); }
+ SYS___MAC_GET_LINK = 384; // { int __mac_get_link(char *path_p, struct mac *mac_p); }
+ SYS___MAC_SET_LINK = 385; // { int __mac_set_link(char *path_p, struct mac *mac_p); }
+ SYS___MAC_GET_PROC = 386; // { int __mac_get_proc(struct mac *mac_p); }
+ SYS___MAC_SET_PROC = 387; // { int __mac_set_proc(struct mac *mac_p); }
+ SYS___MAC_GET_FD = 388; // { int __mac_get_fd(int fd, struct mac *mac_p); }
+ SYS___MAC_SET_FD = 389; // { int __mac_set_fd(int fd, struct mac *mac_p); }
+ SYS___MAC_GET_PID = 390; // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }
+ SYS___MAC_GET_LCID = 391; // { int __mac_get_lcid(pid_t lcid, struct mac *mac_p); }
+ SYS___MAC_GET_LCTX = 392; // { int __mac_get_lctx(struct mac *mac_p); }
+ SYS___MAC_SET_LCTX = 393; // { int __mac_set_lctx(struct mac *mac_p); }
+ SYS_SETLCID = 394; // { int setlcid(pid_t pid, pid_t lcid) NO_SYSCALL_STUB; }
+ SYS_GETLCID = 395; // { int getlcid(pid_t pid) NO_SYSCALL_STUB; }
+ SYS_READ_NOCANCEL = 396; // { user_ssize_t read_nocancel(int fd, user_addr_t cbuf, user_size_t nbyte) NO_SYSCALL_STUB; }
+ SYS_WRITE_NOCANCEL = 397; // { user_ssize_t write_nocancel(int fd, user_addr_t cbuf, user_size_t nbyte) NO_SYSCALL_STUB; }
+ SYS_OPEN_NOCANCEL = 398; // { int open_nocancel(user_addr_t path, int flags, int mode) NO_SYSCALL_STUB; }
+ SYS_CLOSE_NOCANCEL = 399; // { int close_nocancel(int fd) NO_SYSCALL_STUB; }
+ SYS_WAIT4_NOCANCEL = 400; // { int wait4_nocancel(int pid, user_addr_t status, int options, user_addr_t rusage) NO_SYSCALL_STUB; }
+ SYS_RECVMSG_NOCANCEL = 401; // { int recvmsg_nocancel(int s, struct msghdr *msg, int flags) NO_SYSCALL_STUB; }
+ SYS_SENDMSG_NOCANCEL = 402; // { int sendmsg_nocancel(int s, caddr_t msg, int flags) NO_SYSCALL_STUB; }
+ SYS_RECVFROM_NOCANCEL = 403; // { int recvfrom_nocancel(int s, void *buf, size_t len, int flags, struct sockaddr *from, int *fromlenaddr) NO_SYSCALL_STUB; }
+ SYS_ACCEPT_NOCANCEL = 404; // { int accept_nocancel(int s, caddr_t name, socklen_t *anamelen) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 401; // { int nosys(void); }
+ // SYS_NOSYS = 402; // { int nosys(void); }
+ // SYS_NOSYS = 403; // { int nosys(void); }
+ // SYS_NOSYS = 404; // { int nosys(void); }
+ SYS_MSYNC_NOCANCEL = 405; // { int msync_nocancel(caddr_t addr, size_t len, int flags) NO_SYSCALL_STUB; }
+ SYS_FCNTL_NOCANCEL = 406; // { int fcntl_nocancel(int fd, int cmd, long arg) NO_SYSCALL_STUB; }
+ SYS_SELECT_NOCANCEL = 407; // { int select_nocancel(int nd, u_int32_t *in, u_int32_t *ou, u_int32_t *ex, struct timeval *tv) NO_SYSCALL_STUB; }
+ SYS_FSYNC_NOCANCEL = 408; // { int fsync_nocancel(int fd) NO_SYSCALL_STUB; }
+ SYS_CONNECT_NOCANCEL = 409; // { int connect_nocancel(int s, caddr_t name, socklen_t namelen) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 409; // { int nosys(void); }
+ SYS_SIGSUSPEND_NOCANCEL = 410; // { int sigsuspend_nocancel(sigset_t mask) NO_SYSCALL_STUB; }
+ SYS_READV_NOCANCEL = 411; // { user_ssize_t readv_nocancel(int fd, struct iovec *iovp, u_int iovcnt) NO_SYSCALL_STUB; }
+ SYS_WRITEV_NOCANCEL = 412; // { user_ssize_t writev_nocancel(int fd, struct iovec *iovp, u_int iovcnt) NO_SYSCALL_STUB; }
+ SYS_SENDTO_NOCANCEL = 413; // { int sendto_nocancel(int s, caddr_t buf, size_t len, int flags, caddr_t to, socklen_t tolen) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 413; // { int nosys(void); }
+ SYS_PREAD_NOCANCEL = 414; // { user_ssize_t pread_nocancel(int fd, user_addr_t buf, user_size_t nbyte, off_t offset) NO_SYSCALL_STUB; }
+ SYS_PWRITE_NOCANCEL = 415; // { user_ssize_t pwrite_nocancel(int fd, user_addr_t buf, user_size_t nbyte, off_t offset) NO_SYSCALL_STUB; }
+ SYS_WAITID_NOCANCEL = 416; // { int waitid_nocancel(idtype_t idtype, id_t id, siginfo_t *infop, int options) NO_SYSCALL_STUB; }
+ SYS_POLL_NOCANCEL = 417; // { int poll_nocancel(struct pollfd *fds, u_int nfds, int timeout) NO_SYSCALL_STUB; }
+ SYS_MSGSND_NOCANCEL = 418; // { int msgsnd_nocancel(int msqid, void *msgp, size_t msgsz, int msgflg) NO_SYSCALL_STUB; }
+ SYS_MSGRCV_NOCANCEL = 419; // { user_ssize_t msgrcv_nocancel(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg) NO_SYSCALL_STUB; }
+ // SYS_NOSYS = 418; // { int nosys(void); }
+ // SYS_NOSYS = 419; // { int nosys(void); }
+ SYS_SEM_WAIT_NOCANCEL = 420; // { int sem_wait_nocancel(sem_t *sem) NO_SYSCALL_STUB; }
+ SYS_AIO_SUSPEND_NOCANCEL = 421; // { int aio_suspend_nocancel(user_addr_t aiocblist, int nent, user_addr_t timeoutp) NO_SYSCALL_STUB; }
+ SYS___SIGWAIT_NOCANCEL = 422; // { int __sigwait_nocancel(user_addr_t set, user_addr_t sig) NO_SYSCALL_STUB; }
+ SYS___SEMWAIT_SIGNAL_NOCANCEL = 423; // { int __semwait_signal_nocancel(int cond_sem, int mutex_sem, int timeout, int relative, time_t tv_sec, int32_t tv_nsec) NO_SYSCALL_STUB; }
+ SYS___MAC_MOUNT = 424; // { int __mac_mount(char *type, char *path, int flags, caddr_t data, struct mac *mac_p); }
+ SYS___MAC_GET_MOUNT = 425; // { int __mac_get_mount(char *path, struct mac *mac_p); }
+ SYS___MAC_GETFSSTAT = 426; // { int __mac_getfsstat(user_addr_t buf, int bufsize, user_addr_t mac, int macsize, int flags); }
+)
diff --git a/src/pkg/syscall/zsysnum_linux_386.go b/src/pkg/syscall/zsysnum_linux_386.go
new file mode 100644
index 000000000..46c1112f8
--- /dev/null
+++ b/src/pkg/syscall/zsysnum_linux_386.go
@@ -0,0 +1,319 @@
+// Generated by mklinux; DO NOT EDIT.
+// mklinux /usr/include/asm/unistd_32.h
+
+package syscall
+
+const(
+ SYS_RESTART_SYSCALL = 0;
+ SYS_EXIT = 1;
+ SYS_FORK = 2;
+ SYS_READ = 3;
+ SYS_WRITE = 4;
+ SYS_OPEN = 5;
+ SYS_CLOSE = 6;
+ SYS_WAITPID = 7;
+ SYS_CREAT = 8;
+ SYS_LINK = 9;
+ SYS_UNLINK = 10;
+ SYS_EXECVE = 11;
+ SYS_CHDIR = 12;
+ SYS_TIME = 13;
+ SYS_MKNOD = 14;
+ SYS_CHMOD = 15;
+ SYS_LCHOWN = 16;
+ SYS_BREAK = 17;
+ SYS_OLDSTAT = 18;
+ SYS_LSEEK = 19;
+ SYS_GETPID = 20;
+ SYS_MOUNT = 21;
+ SYS_UMOUNT = 22;
+ SYS_SETUID = 23;
+ SYS_GETUID = 24;
+ SYS_STIME = 25;
+ SYS_PTRACE = 26;
+ SYS_ALARM = 27;
+ SYS_OLDFSTAT = 28;
+ SYS_PAUSE = 29;
+ SYS_UTIME = 30;
+ SYS_STTY = 31;
+ SYS_GTTY = 32;
+ SYS_ACCESS = 33;
+ SYS_NICE = 34;
+ SYS_FTIME = 35;
+ SYS_SYNC = 36;
+ SYS_KILL = 37;
+ SYS_RENAME = 38;
+ SYS_MKDIR = 39;
+ SYS_RMDIR = 40;
+ SYS_DUP = 41;
+ SYS_PIPE = 42;
+ SYS_TIMES = 43;
+ SYS_PROF = 44;
+ SYS_BRK = 45;
+ SYS_SETGID = 46;
+ SYS_GETGID = 47;
+ SYS_SIGNAL = 48;
+ SYS_GETEUID = 49;
+ SYS_GETEGID = 50;
+ SYS_ACCT = 51;
+ SYS_UMOUNT2 = 52;
+ SYS_LOCK = 53;
+ SYS_IOCTL = 54;
+ SYS_FCNTL = 55;
+ SYS_MPX = 56;
+ SYS_SETPGID = 57;
+ SYS_ULIMIT = 58;
+ SYS_OLDOLDUNAME = 59;
+ SYS_UMASK = 60;
+ SYS_CHROOT = 61;
+ SYS_USTAT = 62;
+ SYS_DUP2 = 63;
+ SYS_GETPPID = 64;
+ SYS_GETPGRP = 65;
+ SYS_SETSID = 66;
+ SYS_SIGACTION = 67;
+ SYS_SGETMASK = 68;
+ SYS_SSETMASK = 69;
+ SYS_SETREUID = 70;
+ SYS_SETREGID = 71;
+ SYS_SIGSUSPEND = 72;
+ SYS_SIGPENDING = 73;
+ SYS_SETHOSTNAME = 74;
+ SYS_SETRLIMIT = 75;
+ SYS_GETRLIMIT = 76;
+ SYS_GETRUSAGE = 77;
+ SYS_GETTIMEOFDAY = 78;
+ SYS_SETTIMEOFDAY = 79;
+ SYS_GETGROUPS = 80;
+ SYS_SETGROUPS = 81;
+ SYS_SELECT = 82;
+ SYS_SYMLINK = 83;
+ SYS_OLDLSTAT = 84;
+ SYS_READLINK = 85;
+ SYS_USELIB = 86;
+ SYS_SWAPON = 87;
+ SYS_REBOOT = 88;
+ SYS_READDIR = 89;
+ SYS_MMAP = 90;
+ SYS_MUNMAP = 91;
+ SYS_TRUNCATE = 92;
+ SYS_FTRUNCATE = 93;
+ SYS_FCHMOD = 94;
+ SYS_FCHOWN = 95;
+ SYS_GETPRIORITY = 96;
+ SYS_SETPRIORITY = 97;
+ SYS_PROFIL = 98;
+ SYS_STATFS = 99;
+ SYS_FSTATFS = 100;
+ SYS_IOPERM = 101;
+ SYS_SOCKETCALL = 102;
+ SYS_SYSLOG = 103;
+ SYS_SETITIMER = 104;
+ SYS_GETITIMER = 105;
+ SYS_STAT = 106;
+ SYS_LSTAT = 107;
+ SYS_FSTAT = 108;
+ SYS_OLDUNAME = 109;
+ SYS_IOPL = 110;
+ SYS_VHANGUP = 111;
+ SYS_IDLE = 112;
+ SYS_VM86OLD = 113;
+ SYS_WAIT4 = 114;
+ SYS_SWAPOFF = 115;
+ SYS_SYSINFO = 116;
+ SYS_IPC = 117;
+ SYS_FSYNC = 118;
+ SYS_SIGRETURN = 119;
+ SYS_CLONE = 120;
+ SYS_SETDOMAINNAME = 121;
+ SYS_UNAME = 122;
+ SYS_MODIFY_LDT = 123;
+ SYS_ADJTIMEX = 124;
+ SYS_MPROTECT = 125;
+ SYS_SIGPROCMASK = 126;
+ SYS_CREATE_MODULE = 127;
+ SYS_INIT_MODULE = 128;
+ SYS_DELETE_MODULE = 129;
+ SYS_GET_KERNEL_SYMS = 130;
+ SYS_QUOTACTL = 131;
+ SYS_GETPGID = 132;
+ SYS_FCHDIR = 133;
+ SYS_BDFLUSH = 134;
+ SYS_SYSFS = 135;
+ SYS_PERSONALITY = 136;
+ SYS_AFS_SYSCALL = 137;
+ SYS_SETFSUID = 138;
+ SYS_SETFSGID = 139;
+ SYS__LLSEEK = 140;
+ SYS_GETDENTS = 141;
+ SYS__NEWSELECT = 142;
+ SYS_FLOCK = 143;
+ SYS_MSYNC = 144;
+ SYS_READV = 145;
+ SYS_WRITEV = 146;
+ SYS_GETSID = 147;
+ SYS_FDATASYNC = 148;
+ SYS__SYSCTL = 149;
+ SYS_MLOCK = 150;
+ SYS_MUNLOCK = 151;
+ SYS_MLOCKALL = 152;
+ SYS_MUNLOCKALL = 153;
+ SYS_SCHED_SETPARAM = 154;
+ SYS_SCHED_GETPARAM = 155;
+ SYS_SCHED_SETSCHEDULER = 156;
+ SYS_SCHED_GETSCHEDULER = 157;
+ SYS_SCHED_YIELD = 158;
+ SYS_SCHED_GET_PRIORITY_MAX = 159;
+ SYS_SCHED_GET_PRIORITY_MIN = 160;
+ SYS_SCHED_RR_GET_INTERVAL = 161;
+ SYS_NANOSLEEP = 162;
+ SYS_MREMAP = 163;
+ SYS_SETRESUID = 164;
+ SYS_GETRESUID = 165;
+ SYS_VM86 = 166;
+ SYS_QUERY_MODULE = 167;
+ SYS_POLL = 168;
+ SYS_NFSSERVCTL = 169;
+ SYS_SETRESGID = 170;
+ SYS_GETRESGID = 171;
+ SYS_PRCTL = 172;
+ SYS_RT_SIGRETURN = 173;
+ SYS_RT_SIGACTION = 174;
+ SYS_RT_SIGPROCMASK = 175;
+ SYS_RT_SIGPENDING = 176;
+ SYS_RT_SIGTIMEDWAIT = 177;
+ SYS_RT_SIGQUEUEINFO = 178;
+ SYS_RT_SIGSUSPEND = 179;
+ SYS_PREAD64 = 180;
+ SYS_PWRITE64 = 181;
+ SYS_CHOWN = 182;
+ SYS_GETCWD = 183;
+ SYS_CAPGET = 184;
+ SYS_CAPSET = 185;
+ SYS_SIGALTSTACK = 186;
+ SYS_SENDFILE = 187;
+ SYS_GETPMSG = 188;
+ SYS_PUTPMSG = 189;
+ SYS_VFORK = 190;
+ SYS_UGETRLIMIT = 191;
+ SYS_MMAP2 = 192;
+ SYS_TRUNCATE64 = 193;
+ SYS_FTRUNCATE64 = 194;
+ SYS_STAT64 = 195;
+ SYS_LSTAT64 = 196;
+ SYS_FSTAT64 = 197;
+ SYS_LCHOWN32 = 198;
+ SYS_GETUID32 = 199;
+ SYS_GETGID32 = 200;
+ SYS_GETEUID32 = 201;
+ SYS_GETEGID32 = 202;
+ SYS_SETREUID32 = 203;
+ SYS_SETREGID32 = 204;
+ SYS_GETGROUPS32 = 205;
+ SYS_SETGROUPS32 = 206;
+ SYS_FCHOWN32 = 207;
+ SYS_SETRESUID32 = 208;
+ SYS_GETRESUID32 = 209;
+ SYS_SETRESGID32 = 210;
+ SYS_GETRESGID32 = 211;
+ SYS_CHOWN32 = 212;
+ SYS_SETUID32 = 213;
+ SYS_SETGID32 = 214;
+ SYS_SETFSUID32 = 215;
+ SYS_SETFSGID32 = 216;
+ SYS_PIVOT_ROOT = 217;
+ SYS_MINCORE = 218;
+ SYS_MADVISE = 219;
+ SYS_MADVISE1 = 219;
+ SYS_GETDENTS64 = 220;
+ SYS_FCNTL64 = 221;
+ SYS_GETTID = 224;
+ SYS_READAHEAD = 225;
+ SYS_SETXATTR = 226;
+ SYS_LSETXATTR = 227;
+ SYS_FSETXATTR = 228;
+ SYS_GETXATTR = 229;
+ SYS_LGETXATTR = 230;
+ SYS_FGETXATTR = 231;
+ SYS_LISTXATTR = 232;
+ SYS_LLISTXATTR = 233;
+ SYS_FLISTXATTR = 234;
+ SYS_REMOVEXATTR = 235;
+ SYS_LREMOVEXATTR = 236;
+ SYS_FREMOVEXATTR = 237;
+ SYS_TKILL = 238;
+ SYS_SENDFILE64 = 239;
+ SYS_FUTEX = 240;
+ SYS_SCHED_SETAFFINITY = 241;
+ SYS_SCHED_GETAFFINITY = 242;
+ SYS_SET_THREAD_AREA = 243;
+ SYS_GET_THREAD_AREA = 244;
+ SYS_IO_SETUP = 245;
+ SYS_IO_DESTROY = 246;
+ SYS_IO_GETEVENTS = 247;
+ SYS_IO_SUBMIT = 248;
+ SYS_IO_CANCEL = 249;
+ SYS_FADVISE64 = 250;
+ SYS_EXIT_GROUP = 252;
+ SYS_LOOKUP_DCOOKIE = 253;
+ SYS_EPOLL_CREATE = 254;
+ SYS_EPOLL_CTL = 255;
+ SYS_EPOLL_WAIT = 256;
+ SYS_REMAP_FILE_PAGES = 257;
+ SYS_SET_TID_ADDRESS = 258;
+ SYS_TIMER_CREATE = 259;
+ SYS_STATFS64 = 268;
+ SYS_FSTATFS64 = 269;
+ SYS_TGKILL = 270;
+ SYS_UTIMES = 271;
+ SYS_FADVISE64_64 = 272;
+ SYS_VSERVER = 273;
+ SYS_MBIND = 274;
+ SYS_GET_MEMPOLICY = 275;
+ SYS_SET_MEMPOLICY = 276;
+ SYS_MQ_OPEN = 277;
+ SYS_KEXEC_LOAD = 283;
+ SYS_WAITID = 284;
+ SYS_ADD_KEY = 286;
+ SYS_REQUEST_KEY = 287;
+ SYS_KEYCTL = 288;
+ SYS_IOPRIO_SET = 289;
+ SYS_IOPRIO_GET = 290;
+ SYS_INOTIFY_INIT = 291;
+ SYS_INOTIFY_ADD_WATCH = 292;
+ SYS_INOTIFY_RM_WATCH = 293;
+ SYS_MIGRATE_PAGES = 294;
+ SYS_OPENAT = 295;
+ SYS_MKDIRAT = 296;
+ SYS_MKNODAT = 297;
+ SYS_FCHOWNAT = 298;
+ SYS_FUTIMESAT = 299;
+ SYS_FSTATAT64 = 300;
+ SYS_UNLINKAT = 301;
+ SYS_RENAMEAT = 302;
+ SYS_LINKAT = 303;
+ SYS_SYMLINKAT = 304;
+ SYS_READLINKAT = 305;
+ SYS_FCHMODAT = 306;
+ SYS_FACCESSAT = 307;
+ SYS_PSELECT6 = 308;
+ SYS_PPOLL = 309;
+ SYS_UNSHARE = 310;
+ SYS_SET_ROBUST_LIST = 311;
+ SYS_GET_ROBUST_LIST = 312;
+ SYS_SPLICE = 313;
+ SYS_SYNC_FILE_RANGE = 314;
+ SYS_TEE = 315;
+ SYS_VMSPLICE = 316;
+ SYS_MOVE_PAGES = 317;
+ SYS_GETCPU = 318;
+ SYS_EPOLL_PWAIT = 319;
+ SYS_UTIMENSAT = 320;
+ SYS_SIGNALFD = 321;
+ SYS_TIMERFD = 322;
+ SYS_EVENTFD = 323;
+ SYS_FALLOCATE = 324;
+)
+
+func _darwin_system_call_conflict() {
+}
diff --git a/src/pkg/syscall/zsysnum_linux_amd64.go b/src/pkg/syscall/zsysnum_linux_amd64.go
new file mode 100644
index 000000000..94424f3f3
--- /dev/null
+++ b/src/pkg/syscall/zsysnum_linux_amd64.go
@@ -0,0 +1,296 @@
+// Generated by mklinux; DO NOT EDIT.
+// mklinux /usr/include/asm/unistd_64.h
+
+package syscall
+
+const(
+ SYS_READ = 0;
+ SYS_WRITE = 1;
+ SYS_OPEN = 2;
+ SYS_CLOSE = 3;
+ SYS_STAT = 4;
+ SYS_FSTAT = 5;
+ SYS_LSTAT = 6;
+ SYS_POLL = 7;
+ SYS_LSEEK = 8;
+ SYS_MMAP = 9;
+ SYS_MPROTECT = 10;
+ SYS_MUNMAP = 11;
+ SYS_BRK = 12;
+ SYS_RT_SIGACTION = 13;
+ SYS_RT_SIGPROCMASK = 14;
+ SYS_RT_SIGRETURN = 15;
+ SYS_IOCTL = 16;
+ SYS_PREAD64 = 17;
+ SYS_PWRITE64 = 18;
+ SYS_READV = 19;
+ SYS_WRITEV = 20;
+ SYS_ACCESS = 21;
+ SYS_PIPE = 22;
+ SYS_SELECT = 23;
+ SYS_SCHED_YIELD = 24;
+ SYS_MREMAP = 25;
+ SYS_MSYNC = 26;
+ SYS_MINCORE = 27;
+ SYS_MADVISE = 28;
+ SYS_SHMGET = 29;
+ SYS_SHMAT = 30;
+ SYS_SHMCTL = 31;
+ SYS_DUP = 32;
+ SYS_DUP2 = 33;
+ SYS_PAUSE = 34;
+ SYS_NANOSLEEP = 35;
+ SYS_GETITIMER = 36;
+ SYS_ALARM = 37;
+ SYS_SETITIMER = 38;
+ SYS_GETPID = 39;
+ SYS_SENDFILE = 40;
+ SYS_SOCKET = 41;
+ SYS_CONNECT = 42;
+ SYS_ACCEPT = 43;
+ SYS_SENDTO = 44;
+ SYS_RECVFROM = 45;
+ SYS_SENDMSG = 46;
+ SYS_RECVMSG = 47;
+ SYS_SHUTDOWN = 48;
+ SYS_BIND = 49;
+ SYS_LISTEN = 50;
+ SYS_GETSOCKNAME = 51;
+ SYS_GETPEERNAME = 52;
+ SYS_SOCKETPAIR = 53;
+ SYS_SETSOCKOPT = 54;
+ SYS_GETSOCKOPT = 55;
+ SYS_CLONE = 56;
+ SYS_FORK = 57;
+ SYS_VFORK = 58;
+ SYS_EXECVE = 59;
+ SYS_EXIT = 60;
+ SYS_WAIT4 = 61;
+ SYS_KILL = 62;
+ SYS_UNAME = 63;
+ SYS_SEMGET = 64;
+ SYS_SEMOP = 65;
+ SYS_SEMCTL = 66;
+ SYS_SHMDT = 67;
+ SYS_MSGGET = 68;
+ SYS_MSGSND = 69;
+ SYS_MSGRCV = 70;
+ SYS_MSGCTL = 71;
+ SYS_FCNTL = 72;
+ SYS_FLOCK = 73;
+ SYS_FSYNC = 74;
+ SYS_FDATASYNC = 75;
+ SYS_TRUNCATE = 76;
+ SYS_FTRUNCATE = 77;
+ SYS_GETDENTS = 78;
+ SYS_GETCWD = 79;
+ SYS_CHDIR = 80;
+ SYS_FCHDIR = 81;
+ SYS_RENAME = 82;
+ SYS_MKDIR = 83;
+ SYS_RMDIR = 84;
+ SYS_CREAT = 85;
+ SYS_LINK = 86;
+ SYS_UNLINK = 87;
+ SYS_SYMLINK = 88;
+ SYS_READLINK = 89;
+ SYS_CHMOD = 90;
+ SYS_FCHMOD = 91;
+ SYS_CHOWN = 92;
+ SYS_FCHOWN = 93;
+ SYS_LCHOWN = 94;
+ SYS_UMASK = 95;
+ SYS_GETTIMEOFDAY = 96;
+ SYS_GETRLIMIT = 97;
+ SYS_GETRUSAGE = 98;
+ SYS_SYSINFO = 99;
+ SYS_TIMES = 100;
+ SYS_PTRACE = 101;
+ SYS_GETUID = 102;
+ SYS_SYSLOG = 103;
+ SYS_GETGID = 104;
+ SYS_SETUID = 105;
+ SYS_SETGID = 106;
+ SYS_GETEUID = 107;
+ SYS_GETEGID = 108;
+ SYS_SETPGID = 109;
+ SYS_GETPPID = 110;
+ SYS_GETPGRP = 111;
+ SYS_SETSID = 112;
+ SYS_SETREUID = 113;
+ SYS_SETREGID = 114;
+ SYS_GETGROUPS = 115;
+ SYS_SETGROUPS = 116;
+ SYS_SETRESUID = 117;
+ SYS_GETRESUID = 118;
+ SYS_SETRESGID = 119;
+ SYS_GETRESGID = 120;
+ SYS_GETPGID = 121;
+ SYS_SETFSUID = 122;
+ SYS_SETFSGID = 123;
+ SYS_GETSID = 124;
+ SYS_CAPGET = 125;
+ SYS_CAPSET = 126;
+ SYS_RT_SIGPENDING = 127;
+ SYS_RT_SIGTIMEDWAIT = 128;
+ SYS_RT_SIGQUEUEINFO = 129;
+ SYS_RT_SIGSUSPEND = 130;
+ SYS_SIGALTSTACK = 131;
+ SYS_UTIME = 132;
+ SYS_MKNOD = 133;
+ SYS_USELIB = 134;
+ SYS_PERSONALITY = 135;
+ SYS_USTAT = 136;
+ SYS_STATFS = 137;
+ SYS_FSTATFS = 138;
+ SYS_SYSFS = 139;
+ SYS_GETPRIORITY = 140;
+ SYS_SETPRIORITY = 141;
+ SYS_SCHED_SETPARAM = 142;
+ SYS_SCHED_GETPARAM = 143;
+ SYS_SCHED_SETSCHEDULER = 144;
+ SYS_SCHED_GETSCHEDULER = 145;
+ SYS_SCHED_GET_PRIORITY_MAX = 146;
+ SYS_SCHED_GET_PRIORITY_MIN = 147;
+ SYS_SCHED_RR_GET_INTERVAL = 148;
+ SYS_MLOCK = 149;
+ SYS_MUNLOCK = 150;
+ SYS_MLOCKALL = 151;
+ SYS_MUNLOCKALL = 152;
+ SYS_VHANGUP = 153;
+ SYS_MODIFY_LDT = 154;
+ SYS_PIVOT_ROOT = 155;
+ SYS__SYSCTL = 156;
+ SYS_PRCTL = 157;
+ SYS_ARCH_PRCTL = 158;
+ SYS_ADJTIMEX = 159;
+ SYS_SETRLIMIT = 160;
+ SYS_CHROOT = 161;
+ SYS_SYNC = 162;
+ SYS_ACCT = 163;
+ SYS_SETTIMEOFDAY = 164;
+ SYS_MOUNT = 165;
+ SYS_UMOUNT2 = 166;
+ SYS_SWAPON = 167;
+ SYS_SWAPOFF = 168;
+ SYS_REBOOT = 169;
+ SYS_SETHOSTNAME = 170;
+ SYS_SETDOMAINNAME = 171;
+ SYS_IOPL = 172;
+ SYS_IOPERM = 173;
+ SYS_CREATE_MODULE = 174;
+ SYS_INIT_MODULE = 175;
+ SYS_DELETE_MODULE = 176;
+ SYS_GET_KERNEL_SYMS = 177;
+ SYS_QUERY_MODULE = 178;
+ SYS_QUOTACTL = 179;
+ SYS_NFSSERVCTL = 180;
+ SYS_GETPMSG = 181;
+ SYS_PUTPMSG = 182;
+ SYS_AFS_SYSCALL = 183;
+ SYS_TUXCALL = 184;
+ SYS_SECURITY = 185;
+ SYS_GETTID = 186;
+ SYS_READAHEAD = 187;
+ SYS_SETXATTR = 188;
+ SYS_LSETXATTR = 189;
+ SYS_FSETXATTR = 190;
+ SYS_GETXATTR = 191;
+ SYS_LGETXATTR = 192;
+ SYS_FGETXATTR = 193;
+ SYS_LISTXATTR = 194;
+ SYS_LLISTXATTR = 195;
+ SYS_FLISTXATTR = 196;
+ SYS_REMOVEXATTR = 197;
+ SYS_LREMOVEXATTR = 198;
+ SYS_FREMOVEXATTR = 199;
+ SYS_TKILL = 200;
+ SYS_TIME = 201;
+ SYS_FUTEX = 202;
+ SYS_SCHED_SETAFFINITY = 203;
+ SYS_SCHED_GETAFFINITY = 204;
+ SYS_SET_THREAD_AREA = 205;
+ SYS_IO_SETUP = 206;
+ SYS_IO_DESTROY = 207;
+ SYS_IO_GETEVENTS = 208;
+ SYS_IO_SUBMIT = 209;
+ SYS_IO_CANCEL = 210;
+ SYS_GET_THREAD_AREA = 211;
+ SYS_LOOKUP_DCOOKIE = 212;
+ SYS_EPOLL_CREATE = 213;
+ SYS_EPOLL_CTL_OLD = 214;
+ SYS_EPOLL_WAIT_OLD = 215;
+ SYS_REMAP_FILE_PAGES = 216;
+ SYS_GETDENTS64 = 217;
+ SYS_SET_TID_ADDRESS = 218;
+ SYS_RESTART_SYSCALL = 219;
+ SYS_SEMTIMEDOP = 220;
+ SYS_FADVISE64 = 221;
+ SYS_TIMER_CREATE = 222;
+ SYS_TIMER_SETTIME = 223;
+ SYS_TIMER_GETTIME = 224;
+ SYS_TIMER_GETOVERRUN = 225;
+ SYS_TIMER_DELETE = 226;
+ SYS_CLOCK_SETTIME = 227;
+ SYS_CLOCK_GETTIME = 228;
+ SYS_CLOCK_GETRES = 229;
+ SYS_CLOCK_NANOSLEEP = 230;
+ SYS_EXIT_GROUP = 231;
+ SYS_EPOLL_WAIT = 232;
+ SYS_EPOLL_CTL = 233;
+ SYS_TGKILL = 234;
+ SYS_UTIMES = 235;
+ SYS_VSERVER = 236;
+ SYS_MBIND = 237;
+ SYS_SET_MEMPOLICY = 238;
+ SYS_GET_MEMPOLICY = 239;
+ SYS_MQ_OPEN = 240;
+ SYS_MQ_UNLINK = 241;
+ SYS_MQ_TIMEDSEND = 242;
+ SYS_MQ_TIMEDRECEIVE = 243;
+ SYS_MQ_NOTIFY = 244;
+ SYS_MQ_GETSETATTR = 245;
+ SYS_KEXEC_LOAD = 246;
+ SYS_WAITID = 247;
+ SYS_ADD_KEY = 248;
+ SYS_REQUEST_KEY = 249;
+ SYS_KEYCTL = 250;
+ SYS_IOPRIO_SET = 251;
+ SYS_IOPRIO_GET = 252;
+ SYS_INOTIFY_INIT = 253;
+ SYS_INOTIFY_ADD_WATCH = 254;
+ SYS_INOTIFY_RM_WATCH = 255;
+ SYS_MIGRATE_PAGES = 256;
+ SYS_OPENAT = 257;
+ SYS_MKDIRAT = 258;
+ SYS_MKNODAT = 259;
+ SYS_FCHOWNAT = 260;
+ SYS_FUTIMESAT = 261;
+ SYS_NEWFSTATAT = 262;
+ SYS_UNLINKAT = 263;
+ SYS_RENAMEAT = 264;
+ SYS_LINKAT = 265;
+ SYS_SYMLINKAT = 266;
+ SYS_READLINKAT = 267;
+ SYS_FCHMODAT = 268;
+ SYS_FACCESSAT = 269;
+ SYS_PSELECT6 = 270;
+ SYS_PPOLL = 271;
+ SYS_UNSHARE = 272;
+ SYS_SET_ROBUST_LIST = 273;
+ SYS_GET_ROBUST_LIST = 274;
+ SYS_SPLICE = 275;
+ SYS_TEE = 276;
+ SYS_SYNC_FILE_RANGE = 277;
+ SYS_VMSPLICE = 278;
+ SYS_MOVE_PAGES = 279;
+ SYS_UTIMENSAT = 280;
+ SYS_EPOLL_PWAIT = 281;
+ SYS_SIGNALFD = 282;
+ SYS_TIMERFD = 283;
+ SYS_EVENTFD = 284;
+ SYS_FALLOCATE = 285;
+)
+
+func _darwin_system_call_conflict() {
+}
diff --git a/src/pkg/syscall/ztypes_darwin_386.go b/src/pkg/syscall/ztypes_darwin_386.go
new file mode 100644
index 000000000..29d0d9676
--- /dev/null
+++ b/src/pkg/syscall/ztypes_darwin_386.go
@@ -0,0 +1,246 @@
+// godefs -gsyscall -f-m32 types_darwin.c types_darwin_386.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+ sizeofPtr = 0x4;
+ sizeofShort = 0x2;
+ sizeofInt = 0x4;
+ sizeofLong = 0x4;
+ sizeofLongLong = 0x8;
+ O_RDONLY = 0;
+ O_WRONLY = 0x1;
+ O_RDWR = 0x2;
+ O_APPEND = 0x8;
+ O_ASYNC = 0x40;
+ O_CREAT = 0x200;
+ O_NOCTTY = 0x20000;
+ O_NONBLOCK = 0x4;
+ O_SYNC = 0x80;
+ O_TRUNC = 0x400;
+ O_CLOEXEC = 0;
+ F_GETFD = 0x1;
+ F_SETFD = 0x2;
+ F_GETFL = 0x3;
+ F_SETFL = 0x4;
+ FD_CLOEXEC = 0x1;
+ NAME_MAX = 0xff;
+ S_IFMT = 0xf000;
+ S_IFIFO = 0x1000;
+ S_IFCHR = 0x2000;
+ S_IFDIR = 0x4000;
+ S_IFBLK = 0x6000;
+ S_IFREG = 0x8000;
+ S_IFLNK = 0xa000;
+ S_IFSOCK = 0xc000;
+ S_IFWHT = 0xe000;
+ S_ISUID = 0x800;
+ S_ISGID = 0x400;
+ S_ISVTX = 0x200;
+ S_IRUSR = 0x100;
+ S_IWUSR = 0x80;
+ S_IXUSR = 0x40;
+ WNOHANG = 0x1;
+ WUNTRACED = 0x2;
+ WEXITED = 0x4;
+ WSTOPPED = 0x7f;
+ WCONTINUED = 0x10;
+ WNOWAIT = 0x20;
+ AF_UNIX = 0x1;
+ AF_INET = 0x2;
+ AF_DATAKIT = 0x9;
+ AF_INET6 = 0x1e;
+ SOCK_STREAM = 0x1;
+ SOCK_DGRAM = 0x2;
+ SOCK_RAW = 0x3;
+ SOCK_SEQPACKET = 0x5;
+ SOL_SOCKET = 0xffff;
+ SO_REUSEADDR = 0x4;
+ SO_KEEPALIVE = 0x8;
+ SO_DONTROUTE = 0x10;
+ SO_BROADCAST = 0x20;
+ SO_USELOOPBACK = 0x40;
+ SO_LINGER = 0x80;
+ SO_REUSEPORT = 0x200;
+ SO_SNDBUF = 0x1001;
+ SO_RCVBUF = 0x1002;
+ SO_SNDTIMEO = 0x1005;
+ SO_RCVTIMEO = 0x1006;
+ SO_NOSIGPIPE = 0x1022;
+ IPPROTO_TCP = 0x6;
+ IPPROTO_UDP = 0x11;
+ TCP_NODELAY = 0x1;
+ SOMAXCONN = 0x80;
+ SizeofSockaddrInet4 = 0x10;
+ SizeofSockaddrInet6 = 0x1c;
+ SizeofSockaddrAny = 0x1c;
+ SizeofSockaddrUnix = 0x6a;
+ EVFILT_READ = -0x1;
+ EVFILT_WRITE = -0x2;
+ EVFILT_AIO = -0x3;
+ EVFILT_VNODE = -0x4;
+ EVFILT_PROC = -0x5;
+ EVFILT_SIGNAL = -0x6;
+ EVFILT_TIMER = -0x7;
+ EVFILT_MACHPORT = -0x8;
+ EVFILT_FS = -0x9;
+ EVFILT_SYSCOUNT = 0x9;
+ EV_ADD = 0x1;
+ EV_DELETE = 0x2;
+ EV_DISABLE = 0x8;
+ EV_RECEIPT = 0x40;
+ EV_ONESHOT = 0x10;
+ EV_CLEAR = 0x20;
+ EV_SYSFLAGS = 0xf000;
+ EV_FLAG0 = 0x1000;
+ EV_FLAG1 = 0x2000;
+ EV_EOF = 0x8000;
+ EV_ERROR = 0x4000;
+)
+
+// Types
+
+type Timespec struct {
+ Sec int32;
+ Nsec int32;
+}
+
+type Timeval struct {
+ Sec int32;
+ Usec int32;
+}
+
+type Rusage struct {
+ Utime Timeval;
+ Stime Timeval;
+ Maxrss int32;
+ Ixrss int32;
+ Idrss int32;
+ Isrss int32;
+ Minflt int32;
+ Majflt int32;
+ Nswap int32;
+ Inblock int32;
+ Oublock int32;
+ Msgsnd int32;
+ Msgrcv int32;
+ Nsignals int32;
+ Nvcsw int32;
+ Nivcsw int32;
+}
+
+type Rlimit struct {
+ Cur uint64;
+ Max uint64;
+}
+
+type _C_int int32
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev int32;
+ Mode uint16;
+ Nlink uint16;
+ Ino uint64;
+ Uid uint32;
+ Gid uint32;
+ Rdev int32;
+ Atimespec Timespec;
+ Mtimespec Timespec;
+ Ctimespec Timespec;
+ Birthtimespec Timespec;
+ Size int64;
+ Blocks int64;
+ Blksize int32;
+ Flags uint32;
+ Gen uint32;
+ Lspare int32;
+ Qspare [2]int64;
+}
+
+type Statfs_t struct {
+ Bsize uint32;
+ Iosize int32;
+ Blocks uint64;
+ Bfree uint64;
+ Bavail uint64;
+ Files uint64;
+ Ffree uint64;
+ Fsid [8]byte /* fsid */;
+ Owner uint32;
+ Type uint32;
+ Flags uint32;
+ Fssubtype uint32;
+ Fstypename [16]int8;
+ Mntonname [1024]int8;
+ Mntfromname [1024]int8;
+ Reserved [8]uint32;
+}
+
+type Dirent struct {
+ Ino uint64;
+ Seekoff uint64;
+ Reclen uint16;
+ Namlen uint16;
+ Type uint8;
+ Name [1024]int8;
+ Pad0 [3]byte;
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8;
+ Family uint8;
+ Port uint16;
+ Addr [4]byte /* in_addr */;
+ Zero [8]int8;
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8;
+ Family uint8;
+ Port uint16;
+ Flowinfo uint32;
+ Addr [16]byte /* in6_addr */;
+ Scope_id uint32;
+}
+
+type RawSockaddrUnix struct {
+ Len uint8;
+ Family uint8;
+ Path [104]int8;
+}
+
+type RawSockaddr struct {
+ Len uint8;
+ Family uint8;
+ Data [14]int8;
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr;
+ Pad [12]int8;
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32;
+ Linger int32;
+}
+
+type Kevent_t struct {
+ Ident uint32;
+ Filter int16;
+ Flags uint16;
+ Fflags uint32;
+ Data int32;
+ Udata *byte;
+}
+
+type FdSet struct {
+ Bits [32]int32;
+}
diff --git a/src/pkg/syscall/ztypes_darwin_amd64.go b/src/pkg/syscall/ztypes_darwin_amd64.go
new file mode 100644
index 000000000..0523c50a4
--- /dev/null
+++ b/src/pkg/syscall/ztypes_darwin_amd64.go
@@ -0,0 +1,248 @@
+// godefs -gsyscall -f-m64 types_darwin.c types_darwin_amd64.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+ sizeofPtr = 0x8;
+ sizeofShort = 0x2;
+ sizeofInt = 0x4;
+ sizeofLong = 0x8;
+ sizeofLongLong = 0x8;
+ O_RDONLY = 0;
+ O_WRONLY = 0x1;
+ O_RDWR = 0x2;
+ O_APPEND = 0x8;
+ O_ASYNC = 0x40;
+ O_CREAT = 0x200;
+ O_NOCTTY = 0x20000;
+ O_NONBLOCK = 0x4;
+ O_SYNC = 0x80;
+ O_TRUNC = 0x400;
+ O_CLOEXEC = 0;
+ F_GETFD = 0x1;
+ F_SETFD = 0x2;
+ F_GETFL = 0x3;
+ F_SETFL = 0x4;
+ FD_CLOEXEC = 0x1;
+ NAME_MAX = 0xff;
+ S_IFMT = 0xf000;
+ S_IFIFO = 0x1000;
+ S_IFCHR = 0x2000;
+ S_IFDIR = 0x4000;
+ S_IFBLK = 0x6000;
+ S_IFREG = 0x8000;
+ S_IFLNK = 0xa000;
+ S_IFSOCK = 0xc000;
+ S_IFWHT = 0xe000;
+ S_ISUID = 0x800;
+ S_ISGID = 0x400;
+ S_ISVTX = 0x200;
+ S_IRUSR = 0x100;
+ S_IWUSR = 0x80;
+ S_IXUSR = 0x40;
+ WNOHANG = 0x1;
+ WUNTRACED = 0x2;
+ WEXITED = 0x4;
+ WSTOPPED = 0x7f;
+ WCONTINUED = 0x10;
+ WNOWAIT = 0x20;
+ AF_UNIX = 0x1;
+ AF_INET = 0x2;
+ AF_DATAKIT = 0x9;
+ AF_INET6 = 0x1e;
+ SOCK_STREAM = 0x1;
+ SOCK_DGRAM = 0x2;
+ SOCK_RAW = 0x3;
+ SOCK_SEQPACKET = 0x5;
+ SOL_SOCKET = 0xffff;
+ SO_REUSEADDR = 0x4;
+ SO_KEEPALIVE = 0x8;
+ SO_DONTROUTE = 0x10;
+ SO_BROADCAST = 0x20;
+ SO_USELOOPBACK = 0x40;
+ SO_LINGER = 0x80;
+ SO_REUSEPORT = 0x200;
+ SO_SNDBUF = 0x1001;
+ SO_RCVBUF = 0x1002;
+ SO_SNDTIMEO = 0x1005;
+ SO_RCVTIMEO = 0x1006;
+ SO_NOSIGPIPE = 0x1022;
+ IPPROTO_TCP = 0x6;
+ IPPROTO_UDP = 0x11;
+ TCP_NODELAY = 0x1;
+ SOMAXCONN = 0x80;
+ SizeofSockaddrInet4 = 0x10;
+ SizeofSockaddrInet6 = 0x1c;
+ SizeofSockaddrAny = 0x1c;
+ SizeofSockaddrUnix = 0x6a;
+ EVFILT_READ = -0x1;
+ EVFILT_WRITE = -0x2;
+ EVFILT_AIO = -0x3;
+ EVFILT_VNODE = -0x4;
+ EVFILT_PROC = -0x5;
+ EVFILT_SIGNAL = -0x6;
+ EVFILT_TIMER = -0x7;
+ EVFILT_MACHPORT = -0x8;
+ EVFILT_FS = -0x9;
+ EVFILT_SYSCOUNT = 0x9;
+ EV_ADD = 0x1;
+ EV_DELETE = 0x2;
+ EV_DISABLE = 0x8;
+ EV_RECEIPT = 0x40;
+ EV_ONESHOT = 0x10;
+ EV_CLEAR = 0x20;
+ EV_SYSFLAGS = 0xf000;
+ EV_FLAG0 = 0x1000;
+ EV_FLAG1 = 0x2000;
+ EV_EOF = 0x8000;
+ EV_ERROR = 0x4000;
+)
+
+// Types
+
+type Timespec struct {
+ Sec int64;
+ Nsec int64;
+}
+
+type Timeval struct {
+ Sec int64;
+ Usec int32;
+ Pad0 [4]byte;
+}
+
+type Rusage struct {
+ Utime Timeval;
+ Stime Timeval;
+ Maxrss int64;
+ Ixrss int64;
+ Idrss int64;
+ Isrss int64;
+ Minflt int64;
+ Majflt int64;
+ Nswap int64;
+ Inblock int64;
+ Oublock int64;
+ Msgsnd int64;
+ Msgrcv int64;
+ Nsignals int64;
+ Nvcsw int64;
+ Nivcsw int64;
+}
+
+type Rlimit struct {
+ Cur uint64;
+ Max uint64;
+}
+
+type _C_int int32
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev int32;
+ Mode uint16;
+ Nlink uint16;
+ Ino uint64;
+ Uid uint32;
+ Gid uint32;
+ Rdev int32;
+ Pad0 [4]byte;
+ Atimespec Timespec;
+ Mtimespec Timespec;
+ Ctimespec Timespec;
+ Birthtimespec Timespec;
+ Size int64;
+ Blocks int64;
+ Blksize int32;
+ Flags uint32;
+ Gen uint32;
+ Lspare int32;
+ Qspare [2]int64;
+}
+
+type Statfs_t struct {
+ Bsize uint32;
+ Iosize int32;
+ Blocks uint64;
+ Bfree uint64;
+ Bavail uint64;
+ Files uint64;
+ Ffree uint64;
+ Fsid [8]byte /* fsid */;
+ Owner uint32;
+ Type uint32;
+ Flags uint32;
+ Fssubtype uint32;
+ Fstypename [16]int8;
+ Mntonname [1024]int8;
+ Mntfromname [1024]int8;
+ Reserved [8]uint32;
+}
+
+type Dirent struct {
+ Ino uint64;
+ Seekoff uint64;
+ Reclen uint16;
+ Namlen uint16;
+ Type uint8;
+ Name [1024]int8;
+ Pad0 [3]byte;
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8;
+ Family uint8;
+ Port uint16;
+ Addr [4]byte /* in_addr */;
+ Zero [8]int8;
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8;
+ Family uint8;
+ Port uint16;
+ Flowinfo uint32;
+ Addr [16]byte /* in6_addr */;
+ Scope_id uint32;
+}
+
+type RawSockaddrUnix struct {
+ Len uint8;
+ Family uint8;
+ Path [104]int8;
+}
+
+type RawSockaddr struct {
+ Len uint8;
+ Family uint8;
+ Data [14]int8;
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr;
+ Pad [12]int8;
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32;
+ Linger int32;
+}
+
+type Kevent_t struct {
+ Ident uint64;
+ Filter int16;
+ Flags uint16;
+ Fflags uint32;
+ Data int64;
+ Udata *byte;
+}
+
+type FdSet struct {
+ Bits [32]int32;
+}
diff --git a/src/pkg/syscall/ztypes_linux_386.go b/src/pkg/syscall/ztypes_linux_386.go
new file mode 100644
index 000000000..c3a083762
--- /dev/null
+++ b/src/pkg/syscall/ztypes_linux_386.go
@@ -0,0 +1,297 @@
+// godefs -gsyscall -f-m32 types_linux.c types_linux_386.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+ sizeofPtr = 0x4;
+ sizeofShort = 0x2;
+ sizeofInt = 0x4;
+ sizeofLong = 0x4;
+ sizeofLongLong = 0x8;
+ PathMax = 0x1000;
+ O_RDONLY = 0;
+ O_WRONLY = 0x1;
+ O_RDWR = 0x2;
+ O_APPEND = 0x400;
+ O_ASYNC = 0x2000;
+ O_CREAT = 0x40;
+ O_NOCTTY = 0x100;
+ O_NONBLOCK = 0x800;
+ O_SYNC = 0x1000;
+ O_TRUNC = 0x200;
+ O_CLOEXEC = 0;
+ F_GETFD = 0x1;
+ F_SETFD = 0x2;
+ F_GETFL = 0x3;
+ F_SETFL = 0x4;
+ FD_CLOEXEC = 0x1;
+ NAME_MAX = 0xff;
+ S_IFMT = 0xf000;
+ S_IFIFO = 0x1000;
+ S_IFCHR = 0x2000;
+ S_IFDIR = 0x4000;
+ S_IFBLK = 0x6000;
+ S_IFREG = 0x8000;
+ S_IFLNK = 0xa000;
+ S_IFSOCK = 0xc000;
+ S_ISUID = 0x800;
+ S_ISGID = 0x400;
+ S_ISVTX = 0x200;
+ S_IRUSR = 0x100;
+ S_IWUSR = 0x80;
+ S_IXUSR = 0x40;
+ WNOHANG = 0x1;
+ WUNTRACED = 0x2;
+ WEXITED = 0x4;
+ WSTOPPED = 0x2;
+ WCONTINUED = 0x8;
+ WNOWAIT = 0x1000000;
+ AF_UNIX = 0x1;
+ AF_INET = 0x2;
+ AF_INET6 = 0xa;
+ SOCK_STREAM = 0x1;
+ SOCK_DGRAM = 0x2;
+ SOCK_RAW = 0x3;
+ SOCK_SEQPACKET = 0x5;
+ SOL_SOCKET = 0x1;
+ SO_REUSEADDR = 0x2;
+ SO_KEEPALIVE = 0x9;
+ SO_DONTROUTE = 0x5;
+ SO_BROADCAST = 0x6;
+ SO_LINGER = 0xd;
+ SO_SNDBUF = 0x7;
+ SO_RCVBUF = 0x8;
+ SO_SNDTIMEO = 0x15;
+ SO_RCVTIMEO = 0x14;
+ IPPROTO_TCP = 0x6;
+ IPPROTO_UDP = 0x11;
+ TCP_NODELAY = 0x1;
+ SOMAXCONN = 0x80;
+ SizeofSockaddrInet4 = 0x10;
+ SizeofSockaddrInet6 = 0x1c;
+ SizeofSockaddrAny = 0x1c;
+ SizeofSockaddrUnix = 0x6e;
+ EPOLLIN = 0x1;
+ EPOLLRDHUP = 0x2000;
+ EPOLLOUT = 0x4;
+ EPOLLONESHOT = 0x40000000;
+ EPOLL_CTL_MOD = 0x3;
+ EPOLL_CTL_ADD = 0x1;
+ EPOLL_CTL_DEL = 0x2;
+)
+
+// Types
+
+type Timespec struct {
+ Sec int32;
+ Nsec int32;
+}
+
+type Timeval struct {
+ Sec int32;
+ Usec int32;
+}
+
+type Timex struct {
+ Modes uint32;
+ Offset int32;
+ Freq int32;
+ Maxerror int32;
+ Esterror int32;
+ Status int32;
+ Constant int32;
+ Precision int32;
+ Tolerance int32;
+ Time Timeval;
+ Tick int32;
+ Ppsfreq int32;
+ Jitter int32;
+ Shift int32;
+ Stabil int32;
+ Jitcnt int32;
+ Calcnt int32;
+ Errcnt int32;
+ Stbcnt int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+}
+
+type Time_t int32
+
+type Tms struct {
+ Utime int32;
+ Stime int32;
+ Cutime int32;
+ Cstime int32;
+}
+
+type Utimbuf struct {
+ Actime int32;
+ Modtime int32;
+}
+
+type Rusage struct {
+ Utime Timeval;
+ Stime Timeval;
+ Maxrss int32;
+ Ixrss int32;
+ Idrss int32;
+ Isrss int32;
+ Minflt int32;
+ Majflt int32;
+ Nswap int32;
+ Inblock int32;
+ Oublock int32;
+ Msgsnd int32;
+ Msgrcv int32;
+ Nsignals int32;
+ Nvcsw int32;
+ Nivcsw int32;
+}
+
+type Rlimit struct {
+ Cur uint32;
+ Max uint32;
+}
+
+type _C_int int32
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint64;
+ __pad1 uint16;
+ Pad0 [2]byte;
+ Ino uint32;
+ Mode uint32;
+ Nlink uint32;
+ Uid uint32;
+ Gid uint32;
+ Rdev uint64;
+ __pad2 uint16;
+ Pad1 [2]byte;
+ Size int32;
+ Blksize int32;
+ Blocks int32;
+ Atim Timespec;
+ Mtim Timespec;
+ Ctim Timespec;
+ __unused4 uint32;
+ __unused5 uint32;
+}
+
+type Statfs_t struct {
+ Type int32;
+ Bsize int32;
+ Blocks uint32;
+ Bfree uint32;
+ Bavail uint32;
+ Files uint32;
+ Ffree uint32;
+ Fsid [8]byte /* __fsid_t */;
+ Namelen int32;
+ Frsize int32;
+ Spare [5]int32;
+}
+
+type Dirent struct {
+ Ino uint32;
+ Off int32;
+ Reclen uint16;
+ Type uint8;
+ Name [256]int8;
+ Pad0 [1]byte;
+}
+
+type RawSockaddrInet4 struct {
+ Family uint16;
+ Port uint16;
+ Addr [4]byte /* in_addr */;
+ Zero [8]uint8;
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16;
+ Port uint16;
+ Flowinfo uint32;
+ Addr [16]byte /* in6_addr */;
+ Scope_id uint32;
+}
+
+type RawSockaddrUnix struct {
+ Family uint16;
+ Path [108]int8;
+}
+
+type RawSockaddr struct {
+ Family uint16;
+ Data [14]int8;
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr;
+ Pad [12]int8;
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32;
+ Linger int32;
+}
+
+type FdSet struct {
+ __fds_bits [32]int32;
+}
+
+type Sysinfo_t struct {
+ Uptime int32;
+ Loads [3]uint32;
+ Totalram uint32;
+ Freeram uint32;
+ Sharedram uint32;
+ Bufferram uint32;
+ Totalswap uint32;
+ Freeswap uint32;
+ Procs uint16;
+ Pad uint16;
+ Totalhigh uint32;
+ Freehigh uint32;
+ Unit uint32;
+ _f [8]int8;
+}
+
+type Utsname struct {
+ Sysname [65]int8;
+ Nodename [65]int8;
+ Release [65]int8;
+ Version [65]int8;
+ Machine [65]int8;
+ __domainname [65]int8;
+}
+
+type Ustat_t struct {
+ Tfree int32;
+ Tinode uint32;
+ Fname [6]int8;
+ Fpack [6]int8;
+}
+
+type EpollEvent struct {
+ Events uint32;
+ Fd int32;
+ Pad int32;
+}
diff --git a/src/pkg/syscall/ztypes_linux_amd64.go b/src/pkg/syscall/ztypes_linux_amd64.go
new file mode 100644
index 000000000..f17ebe139
--- /dev/null
+++ b/src/pkg/syscall/ztypes_linux_amd64.go
@@ -0,0 +1,300 @@
+// godefs -gsyscall -f-m64 types_linux.c types_linux_amd64.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+ sizeofPtr = 0x8;
+ sizeofShort = 0x2;
+ sizeofInt = 0x4;
+ sizeofLong = 0x8;
+ sizeofLongLong = 0x8;
+ PathMax = 0x1000;
+ O_RDONLY = 0;
+ O_WRONLY = 0x1;
+ O_RDWR = 0x2;
+ O_APPEND = 0x400;
+ O_ASYNC = 0x2000;
+ O_CREAT = 0x40;
+ O_NOCTTY = 0x100;
+ O_NONBLOCK = 0x800;
+ O_SYNC = 0x1000;
+ O_TRUNC = 0x200;
+ O_CLOEXEC = 0;
+ F_GETFD = 0x1;
+ F_SETFD = 0x2;
+ F_GETFL = 0x3;
+ F_SETFL = 0x4;
+ FD_CLOEXEC = 0x1;
+ NAME_MAX = 0xff;
+ S_IFMT = 0xf000;
+ S_IFIFO = 0x1000;
+ S_IFCHR = 0x2000;
+ S_IFDIR = 0x4000;
+ S_IFBLK = 0x6000;
+ S_IFREG = 0x8000;
+ S_IFLNK = 0xa000;
+ S_IFSOCK = 0xc000;
+ S_ISUID = 0x800;
+ S_ISGID = 0x400;
+ S_ISVTX = 0x200;
+ S_IRUSR = 0x100;
+ S_IWUSR = 0x80;
+ S_IXUSR = 0x40;
+ WNOHANG = 0x1;
+ WUNTRACED = 0x2;
+ WEXITED = 0x4;
+ WSTOPPED = 0x2;
+ WCONTINUED = 0x8;
+ WNOWAIT = 0x1000000;
+ AF_UNIX = 0x1;
+ AF_INET = 0x2;
+ AF_INET6 = 0xa;
+ SOCK_STREAM = 0x1;
+ SOCK_DGRAM = 0x2;
+ SOCK_RAW = 0x3;
+ SOCK_SEQPACKET = 0x5;
+ SOL_SOCKET = 0x1;
+ SO_REUSEADDR = 0x2;
+ SO_KEEPALIVE = 0x9;
+ SO_DONTROUTE = 0x5;
+ SO_BROADCAST = 0x6;
+ SO_LINGER = 0xd;
+ SO_SNDBUF = 0x7;
+ SO_RCVBUF = 0x8;
+ SO_SNDTIMEO = 0x15;
+ SO_RCVTIMEO = 0x14;
+ IPPROTO_TCP = 0x6;
+ IPPROTO_UDP = 0x11;
+ TCP_NODELAY = 0x1;
+ SOMAXCONN = 0x80;
+ SizeofSockaddrInet4 = 0x10;
+ SizeofSockaddrInet6 = 0x1c;
+ SizeofSockaddrAny = 0x1c;
+ SizeofSockaddrUnix = 0x6e;
+ EPOLLIN = 0x1;
+ EPOLLRDHUP = 0x2000;
+ EPOLLOUT = 0x4;
+ EPOLLONESHOT = 0x40000000;
+ EPOLL_CTL_MOD = 0x3;
+ EPOLL_CTL_ADD = 0x1;
+ EPOLL_CTL_DEL = 0x2;
+)
+
+// Types
+
+type Timespec struct {
+ Sec int64;
+ Nsec int64;
+}
+
+type Timeval struct {
+ Sec int64;
+ Usec int64;
+}
+
+type Timex struct {
+ Modes uint32;
+ Pad0 [4]byte;
+ Offset int64;
+ Freq int64;
+ Maxerror int64;
+ Esterror int64;
+ Status int32;
+ Pad1 [4]byte;
+ Constant int64;
+ Precision int64;
+ Tolerance int64;
+ Time Timeval;
+ Tick int64;
+ Ppsfreq int64;
+ Jitter int64;
+ Shift int32;
+ Pad2 [4]byte;
+ Stabil int64;
+ Jitcnt int64;
+ Calcnt int64;
+ Errcnt int64;
+ Stbcnt int64;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+ int32;
+}
+
+type Time_t int64
+
+type Tms struct {
+ Utime int64;
+ Stime int64;
+ Cutime int64;
+ Cstime int64;
+}
+
+type Utimbuf struct {
+ Actime int64;
+ Modtime int64;
+}
+
+type Rusage struct {
+ Utime Timeval;
+ Stime Timeval;
+ Maxrss int64;
+ Ixrss int64;
+ Idrss int64;
+ Isrss int64;
+ Minflt int64;
+ Majflt int64;
+ Nswap int64;
+ Inblock int64;
+ Oublock int64;
+ Msgsnd int64;
+ Msgrcv int64;
+ Nsignals int64;
+ Nvcsw int64;
+ Nivcsw int64;
+}
+
+type Rlimit struct {
+ Cur uint64;
+ Max uint64;
+}
+
+type _C_int int32
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint64;
+ Ino uint64;
+ Nlink uint64;
+ Mode uint32;
+ Uid uint32;
+ Gid uint32;
+ Pad0 int32;
+ Rdev uint64;
+ Size int64;
+ Blksize int64;
+ Blocks int64;
+ Atim Timespec;
+ Mtim Timespec;
+ Ctim Timespec;
+ __unused [3]int64;
+}
+
+type Statfs_t struct {
+ Type int64;
+ Bsize int64;
+ Blocks uint64;
+ Bfree uint64;
+ Bavail uint64;
+ Files uint64;
+ Ffree uint64;
+ Fsid [8]byte /* __fsid_t */;
+ Namelen int64;
+ Frsize int64;
+ Spare [5]int64;
+}
+
+type Dirent struct {
+ Ino uint64;
+ Off int64;
+ Reclen uint16;
+ Type uint8;
+ Name [256]int8;
+ Pad0 [5]byte;
+}
+
+type RawSockaddrInet4 struct {
+ Family uint16;
+ Port uint16;
+ Addr [4]byte /* in_addr */;
+ Zero [8]uint8;
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16;
+ Port uint16;
+ Flowinfo uint32;
+ Addr [16]byte /* in6_addr */;
+ Scope_id uint32;
+}
+
+type RawSockaddrUnix struct {
+ Family uint16;
+ Path [108]int8;
+}
+
+type RawSockaddr struct {
+ Family uint16;
+ Data [14]int8;
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr;
+ Pad [12]int8;
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32;
+ Linger int32;
+}
+
+type FdSet struct {
+ __fds_bits [16]int64;
+}
+
+type Sysinfo_t struct {
+ Uptime int64;
+ Loads [3]uint64;
+ Totalram uint64;
+ Freeram uint64;
+ Sharedram uint64;
+ Bufferram uint64;
+ Totalswap uint64;
+ Freeswap uint64;
+ Procs uint16;
+ Pad uint16;
+ Pad0 [4]byte;
+ Totalhigh uint64;
+ Freehigh uint64;
+ Unit uint32;
+ _f [2]int8;
+ Pad1 [4]byte;
+}
+
+type Utsname struct {
+ Sysname [65]int8;
+ Nodename [65]int8;
+ Release [65]int8;
+ Version [65]int8;
+ Machine [65]int8;
+ __domainname [65]int8;
+}
+
+type Ustat_t struct {
+ Tfree int32;
+ Pad0 [4]byte;
+ Tinode uint64;
+ Fname [6]int8;
+ Fpack [6]int8;
+ Pad1 [4]byte;
+}
+
+type EpollEvent struct {
+ Events uint32;
+ Fd int32;
+ Pad int32;
+}