]> Cypherpunks repositories - gostls13.git/commitdiff
all: update dependency on golang.org/x/sys and regenerate Windows syscalls
authorBryan C. Mills <bcmills@google.com>
Mon, 2 Nov 2020 14:12:28 +0000 (09:12 -0500)
committerBryan C. Mills <bcmills@google.com>
Mon, 2 Nov 2020 15:41:00 +0000 (15:41 +0000)
Steps run:

$ cd $(go env GOROOT)/src
$ go get -d golang.org/x/sys
$ go mod tidy
$ go mod vendor
$ go generate syscall/... internal/syscall/...
$ cd cmd
$ go get -d golang.org/x/sys
$ go mod tidy
$ go mod vendor
$ cd ..
$ git add .

This change subsumes CL 260860.

For #36905

Change-Id: I7c677c6aa1ad61b9cbd8cf9ed208ed5a30f29c87
Reviewed-on: https://go-review.googlesource.com/c/go/+/267103
Trust: Bryan C. Mills <bcmills@google.com>
Run-TryBot: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>

96 files changed:
src/cmd/go.mod
src/cmd/go.sum
src/cmd/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go
src/cmd/vendor/golang.org/x/sys/unix/gccgo.go
src/cmd/vendor/golang.org/x/sys/unix/gccgo_c.c
src/cmd/vendor/golang.org/x/sys/unix/mkerrors.sh
src/cmd/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go
src/cmd/vendor/golang.org/x/sys/unix/syscall.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_aix.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_bsd.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin_386.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_dragonfly.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_freebsd.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_linux.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_386.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_netbsd.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_openbsd.go
src/cmd/vendor/golang.org/x/sys/unix/syscall_solaris.go
src/cmd/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go
src/cmd/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go
src/cmd/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
src/cmd/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/zerrors_linux.go
src/cmd/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s
src/cmd/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go [new file with mode: 0644]
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go [new file with mode: 0644]
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go [new file with mode: 0644]
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go [new file with mode: 0644]
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_386.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
src/cmd/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go
src/cmd/vendor/golang.org/x/sys/windows/syscall.go
src/cmd/vendor/golang.org/x/sys/windows/syscall_windows.go
src/cmd/vendor/golang.org/x/sys/windows/zsyscall_windows.go
src/cmd/vendor/modules.txt
src/go.mod
src/go.sum
src/internal/syscall/windows/registry/zsyscall_windows.go
src/internal/syscall/windows/zsyscall_windows.go
src/syscall/zsyscall_windows.go
src/vendor/golang.org/x/sys/cpu/cpu.go
src/vendor/golang.org/x/sys/cpu/cpu_arm64.go
src/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go
src/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go [new file with mode: 0644]
src/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go
src/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go [new file with mode: 0644]
src/vendor/golang.org/x/sys/cpu/cpu_s390x.go
src/vendor/golang.org/x/sys/cpu/cpu_x86.go
src/vendor/golang.org/x/sys/cpu/cpu_zos.go [new file with mode: 0644]
src/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go [new file with mode: 0644]
src/vendor/modules.txt

index f79b238a1dea6426622fb244ea7b34ea89a38cf7..9d47f8bcff3064f8e3167f9038d6836d4d20e661 100644 (file)
@@ -8,6 +8,6 @@ require (
        golang.org/x/arch v0.0.0-20201008161808-52c3e6f60cff
        golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a
        golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449
-       golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d // indirect
+       golang.org/x/sys v0.0.0-20201101102859-da207088b7d1 // indirect
        golang.org/x/tools v0.0.0-20201014170642-d1624618ad65
 )
index 6eff8a2c57bc04b795067f403ed5f0475f1792dc..f7621ad4368549db30a5ed0f1446a248e864ce3f 100644 (file)
@@ -26,8 +26,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d h1:L/IKR6COd7ubZrs2oTnTi73IhgqJ71c9s80WsQnh0Es=
-golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201101102859-da207088b7d1 h1:a/mKvvZr9Jcc8oKfcmgzyp7OwF73JPWsQLvH1z2Kxck=
+golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20201014170642-d1624618ad65 h1:q80OtYaeeySe8Kqg0vjXehHwj5fUTqe3xOvnbi5w3Gg=
index fc0e50e037214c3c264076f85ea8548e8add9dd0..8db48e5e0626677412465377cd3474f5588d5fdc 100644 (file)
@@ -1,9 +1,9 @@
-// +build linux,386 linux,arm linux,mips linux,mipsle
-
 // Copyright 2014 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.
 
+// +build linux,386 linux,arm linux,mips linux,mipsle
+
 package unix
 
 func init() {
index cd6f5a6133fe86c796b7458953ebe868edf3070c..86032c11ef39de4e6a2c072b33f91c6de31e2c45 100644 (file)
@@ -12,10 +12,8 @@ import "syscall"
 // We can't use the gc-syntax .s files for gccgo. On the plus side
 // much of the functionality can be written directly in Go.
 
-//extern gccgoRealSyscallNoError
 func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)
 
-//extern gccgoRealSyscall
 func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)
 
 func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
index c44730c5e99ff103d47bc8fa186fca401c560fda..2cb1fefac64038132ccdecb84d5cb6be8acdbed0 100644 (file)
@@ -21,6 +21,9 @@ struct ret {
        uintptr_t err;
 };
 
+struct ret gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
+  __asm__(GOSYM_PREFIX GOPKGPATH ".realSyscall");
+
 struct ret
 gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
 {
@@ -32,6 +35,9 @@ gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintp
        return r;
 }
 
+uintptr_t gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
+  __asm__(GOSYM_PREFIX GOPKGPATH ".realSyscallNoError");
+
 uintptr_t
 gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
 {
index 1bef7148d2a20eb3af8ad7977fc669cf22012ab1..0c9a5c44bbedf71f4646f076bb9c94a9f0eda495 100644 (file)
@@ -59,12 +59,14 @@ includes_Darwin='
 #include <stdint.h>
 #include <sys/attr.h>
 #include <sys/clonefile.h>
+#include <sys/kern_control.h>
 #include <sys/types.h>
 #include <sys/event.h>
 #include <sys/ptrace.h>
 #include <sys/select.h>
 #include <sys/socket.h>
 #include <sys/sockio.h>
+#include <sys/sys_domain.h>
 #include <sys/sysctl.h>
 #include <sys/mman.h>
 #include <sys/mount.h>
@@ -94,6 +96,7 @@ includes_DragonFly='
 #include <sys/ioctl.h>
 #include <net/bpf.h>
 #include <net/if.h>
+#include <net/if_clone.h>
 #include <net/if_types.h>
 #include <net/route.h>
 #include <netinet/in.h>
@@ -230,6 +233,7 @@ struct ltchars {
 #include <linux/net_namespace.h>
 #include <linux/nsfs.h>
 #include <linux/perf_event.h>
+#include <linux/pps.h>
 #include <linux/ptrace.h>
 #include <linux/random.h>
 #include <linux/reboot.h>
@@ -372,6 +376,7 @@ includes_SunOS='
 #include <sys/socket.h>
 #include <sys/sockio.h>
 #include <sys/stat.h>
+#include <sys/stream.h>
 #include <sys/mman.h>
 #include <sys/wait.h>
 #include <sys/ioctl.h>
@@ -496,6 +501,7 @@ ccflags="$@"
                $2 !~ "NLA_TYPE_MASK" &&
                $2 !~ /^RTC_VL_(ACCURACY|BACKUP|DATA)/ &&
                $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ ||
+               $2 ~ /^FIORDCHK$/ ||
                $2 ~ /^SIOC/ ||
                $2 ~ /^TIOC/ ||
                $2 ~ /^TCGET/ ||
@@ -516,6 +522,7 @@ ccflags="$@"
                $2 ~ /^CAP_/ ||
                $2 ~ /^CP_/ ||
                $2 ~ /^CPUSTATES$/ ||
+               $2 ~ /^CTLIOCGINFO$/ ||
                $2 ~ /^ALG_/ ||
                $2 ~ /^FI(CLONE|DEDUPERANGE)/ ||
                $2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE)/ ||
@@ -527,7 +534,7 @@ ccflags="$@"
                $2 ~ /^RND/ ||
                $2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ ||
                $2 ~ /^KEYCTL_/ ||
-               $2 ~ /^PERF_EVENT_IOC_/ ||
+               $2 ~ /^PERF_/ ||
                $2 ~ /^SECCOMP_MODE_/ ||
                $2 ~ /^SPLICE_/ ||
                $2 ~ /^SYNC_FILE_RANGE_/ ||
@@ -546,7 +553,7 @@ ccflags="$@"
                $2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ ||
                $2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ ||
                $2 ~ /^FSOPT_/ ||
-               $2 ~ /^WDIOC_/ ||
+               $2 ~ /^WDIO[CFS]_/ ||
                $2 ~ /^NFN/ ||
                $2 ~ /^XDP_/ ||
                $2 ~ /^RWF_/ ||
index abdedcf1d56de9d1e96c1cf86a4fbae69715aec3..57a0021da55fc76dac365414f4314e200ed25ec8 100644 (file)
@@ -32,6 +32,10 @@ func cmsgAlignOf(salen int) int {
                if runtime.GOARCH == "arm" {
                        salign = 8
                }
+               // NetBSD aarch64 requires 128-bit alignment.
+               if runtime.GOOS == "netbsd" && runtime.GOARCH == "arm64" {
+                       salign = 16
+               }
        }
 
        return (salen + salign - 1) & ^(salign - 1)
index fd4ee8ebeb7072d32b042e2d6f1ba7b8bc055122..ab75ef9cc621e3daea9d817a96279c2097fbc09d 100644 (file)
 // holds a value of type syscall.Errno.
 package unix // import "golang.org/x/sys/unix"
 
-import "strings"
+import (
+       "bytes"
+       "strings"
+       "unsafe"
+
+       "golang.org/x/sys/internal/unsafeheader"
+)
 
 // ByteSliceFromString returns a NUL-terminated slice of bytes
 // containing the text of s. If s contains a NUL byte at any
@@ -49,5 +55,40 @@ func BytePtrFromString(s string) (*byte, error) {
        return &a[0], nil
 }
 
+// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any
+// bytes after the NUL removed.
+func ByteSliceToString(s []byte) string {
+       if i := bytes.IndexByte(s, 0); i != -1 {
+               s = s[:i]
+       }
+       return string(s)
+}
+
+// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.
+// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated
+// at a zero byte; if the zero byte is not present, the program may crash.
+func BytePtrToString(p *byte) string {
+       if p == nil {
+               return ""
+       }
+       if *p == 0 {
+               return ""
+       }
+
+       // Find NUL terminator.
+       n := 0
+       for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {
+               ptr = unsafe.Pointer(uintptr(ptr) + 1)
+       }
+
+       var s []byte
+       h := (*unsafeheader.Slice)(unsafe.Pointer(&s))
+       h.Data = unsafe.Pointer(p)
+       h.Len = n
+       h.Cap = n
+
+       return string(s)
+}
+
 // Single-word zero for use when we need a valid pointer to 0 bytes.
 var _zero uintptr
index 9ad8a0d4a56683be786955b182860de49d830bbb..4408153822dbbfe5041d0d7eead51ab829f355c1 100644 (file)
@@ -19,6 +19,22 @@ import "unsafe"
  * Wrapped
  */
 
+func Access(path string, mode uint32) (err error) {
+       return Faccessat(AT_FDCWD, path, mode, 0)
+}
+
+func Chmod(path string, mode uint32) (err error) {
+       return Fchmodat(AT_FDCWD, path, mode, 0)
+}
+
+func Chown(path string, uid int, gid int) (err error) {
+       return Fchownat(AT_FDCWD, path, uid, gid, 0)
+}
+
+func Creat(path string, mode uint32) (fd int, err error) {
+       return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)
+}
+
 //sys  utimes(path string, times *[2]Timeval) (err error)
 func Utimes(path string, tv []Timeval) error {
        if len(tv) != 2 {
index 9ebe92e4da60e80d5bf6b4f911cf16fa051eca13..bc634a280a08c05e5879cfd8796b69299178b45a 100644 (file)
@@ -18,6 +18,21 @@ import (
        "unsafe"
 )
 
+const ImplementsGetwd = true
+
+func Getwd() (string, error) {
+       var buf [PathMax]byte
+       _, err := Getcwd(buf[0:])
+       if err != nil {
+               return "", err
+       }
+       n := clen(buf[:])
+       if n < 1 {
+               return "", EINVAL
+       }
+       return string(buf[:n]), nil
+}
+
 /*
  * Wrapped
  */
@@ -262,7 +277,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
                }
                return sa, nil
        }
-       return nil, EAFNOSUPPORT
+       return anyToSockaddrGOOS(fd, rsa)
 }
 
 func Accept(fd int) (nfd int, sa Sockaddr, err error) {
index eddcf3a911a839eacb62032b3f1ce864061bea28..b6257389008784051d3169ed9ab94b82b1801a2c 100644 (file)
 package unix
 
 import (
-       "errors"
+       "runtime"
        "syscall"
        "unsafe"
 )
 
-const ImplementsGetwd = true
-
-func Getwd() (string, error) {
-       buf := make([]byte, 2048)
-       attrs, err := getAttrList(".", attrList{CommonAttr: attrCmnFullpath}, buf, 0)
-       if err == nil && len(attrs) == 1 && len(attrs[0]) >= 2 {
-               wd := string(attrs[0])
-               // Sanity check that it's an absolute path and ends
-               // in a null byte, which we then strip.
-               if wd[0] == '/' && wd[len(wd)-1] == 0 {
-                       return wd[:len(wd)-1], nil
-               }
-       }
-       // If pkg/os/getwd.go gets ENOTSUP, it will fall back to the
-       // slow algorithm.
-       return "", ENOTSUP
-}
-
 // SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
 type SockaddrDatalink struct {
        Len    uint8
@@ -49,10 +31,40 @@ type SockaddrDatalink struct {
        raw    RawSockaddrDatalink
 }
 
+// SockaddrCtl implements the Sockaddr interface for AF_SYSTEM type sockets.
+type SockaddrCtl struct {
+       ID   uint32
+       Unit uint32
+       raw  RawSockaddrCtl
+}
+
+func (sa *SockaddrCtl) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       sa.raw.Sc_len = SizeofSockaddrCtl
+       sa.raw.Sc_family = AF_SYSTEM
+       sa.raw.Ss_sysaddr = AF_SYS_CONTROL
+       sa.raw.Sc_id = sa.ID
+       sa.raw.Sc_unit = sa.Unit
+       return unsafe.Pointer(&sa.raw), SizeofSockaddrCtl, nil
+}
+
+func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
+       switch rsa.Addr.Family {
+       case AF_SYSTEM:
+               pp := (*RawSockaddrCtl)(unsafe.Pointer(rsa))
+               if pp.Ss_sysaddr == AF_SYS_CONTROL {
+                       sa := new(SockaddrCtl)
+                       sa.ID = pp.Sc_id
+                       sa.Unit = pp.Sc_unit
+                       return sa, nil
+               }
+       }
+       return nil, EAFNOSUPPORT
+}
+
 // Some external packages rely on SYS___SYSCTL being defined to implement their
 // own sysctl wrappers. Provide it here, even though direct syscalls are no
 // longer supported on darwin.
-const SYS___SYSCTL = 202
+const SYS___SYSCTL = SYS_SYSCTL
 
 // Translate "kern.hostname" to []_C_int{0,1,2,3}.
 func nametomib(name string) (mib []_C_int, err error) {
@@ -97,11 +109,6 @@ func direntNamlen(buf []byte) (uint64, bool) {
 func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }
 func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }
 
-const (
-       attrBitMapCount = 5
-       attrCmnFullpath = 0x08000000
-)
-
 type attrList struct {
        bitmapCount uint16
        _           uint16
@@ -112,54 +119,6 @@ type attrList struct {
        Forkattr    uint32
 }
 
-func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (attrs [][]byte, err error) {
-       if len(attrBuf) < 4 {
-               return nil, errors.New("attrBuf too small")
-       }
-       attrList.bitmapCount = attrBitMapCount
-
-       var _p0 *byte
-       _p0, err = BytePtrFromString(path)
-       if err != nil {
-               return nil, err
-       }
-
-       if err := getattrlist(_p0, unsafe.Pointer(&attrList), unsafe.Pointer(&attrBuf[0]), uintptr(len(attrBuf)), int(options)); err != nil {
-               return nil, err
-       }
-       size := *(*uint32)(unsafe.Pointer(&attrBuf[0]))
-
-       // dat is the section of attrBuf that contains valid data,
-       // without the 4 byte length header. All attribute offsets
-       // are relative to dat.
-       dat := attrBuf
-       if int(size) < len(attrBuf) {
-               dat = dat[:size]
-       }
-       dat = dat[4:] // remove length prefix
-
-       for i := uint32(0); int(i) < len(dat); {
-               header := dat[i:]
-               if len(header) < 8 {
-                       return attrs, errors.New("truncated attribute header")
-               }
-               datOff := *(*int32)(unsafe.Pointer(&header[0]))
-               attrLen := *(*uint32)(unsafe.Pointer(&header[4]))
-               if datOff < 0 || uint32(datOff)+attrLen > uint32(len(dat)) {
-                       return attrs, errors.New("truncated results; attrBuf too small")
-               }
-               end := uint32(datOff) + attrLen
-               attrs = append(attrs, dat[datOff:end])
-               i = end
-               if r := i % 4; r != 0 {
-                       i += (4 - r)
-               }
-       }
-       return
-}
-
-//sys getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error)
-
 //sysnb pipe() (r int, w int, err error)
 
 func Pipe(p []int) (err error) {
@@ -329,6 +288,35 @@ func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(sig
 
 //sys  ioctl(fd int, req uint, arg uintptr) (err error)
 
+func IoctlCtlInfo(fd int, ctlInfo *CtlInfo) error {
+       err := ioctl(fd, CTLIOCGINFO, uintptr(unsafe.Pointer(ctlInfo)))
+       runtime.KeepAlive(ctlInfo)
+       return err
+}
+
+// IfreqMTU is struct ifreq used to get or set a network device's MTU.
+type IfreqMTU struct {
+       Name [IFNAMSIZ]byte
+       MTU  int32
+}
+
+// IoctlGetIfreqMTU performs the SIOCGIFMTU ioctl operation on fd to get the MTU
+// of the network device specified by ifname.
+func IoctlGetIfreqMTU(fd int, ifname string) (*IfreqMTU, error) {
+       var ifreq IfreqMTU
+       copy(ifreq.Name[:], ifname)
+       err := ioctl(fd, SIOCGIFMTU, uintptr(unsafe.Pointer(&ifreq)))
+       return &ifreq, err
+}
+
+// IoctlSetIfreqMTU performs the SIOCSIFMTU ioctl operation on fd to set the MTU
+// of the network device specified by ifreq.Name.
+func IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error {
+       err := ioctl(fd, SIOCSIFMTU, uintptr(unsafe.Pointer(ifreq)))
+       runtime.KeepAlive(ifreq)
+       return err
+}
+
 //sys   sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL
 
 func Uname(uname *Utsname) error {
@@ -419,6 +407,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
 //sys  Fpathconf(fd int, name int) (val int, err error)
 //sys  Fsync(fd int) (err error)
 //sys  Ftruncate(fd int, length int64) (err error)
+//sys  Getcwd(buf []byte) (n int, err error)
 //sys  Getdtablesize() (size int)
 //sysnb        Getegid() (egid int)
 //sysnb        Geteuid() (uid int)
index ea0be1e92917a0973d9ee39bf5c16b508c583b60..6c1f4ab95b477cf0526114071d526aca311dc004 100644 (file)
@@ -6,11 +6,7 @@
 
 package unix
 
-import (
-       "syscall"
-)
-
-//sys   ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
+import "syscall"
 
 func setTimespec(sec, nsec int64) Timespec {
        return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
@@ -49,5 +45,6 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
 //sys  Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
 //sys  getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
 //sys  Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
+//sys  ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
 //sys  Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
 //sys  Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
index 58624044843ce2a05484204135fed471fa5e8e85..0582ae256ef43f93d3c298d496531dfd4b203ff6 100644 (file)
@@ -6,11 +6,7 @@
 
 package unix
 
-import (
-       "syscall"
-)
-
-//sys   ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
+import "syscall"
 
 func setTimespec(sec, nsec int64) Timespec {
        return Timespec{Sec: sec, Nsec: nsec}
@@ -49,5 +45,6 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
 //sys  Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
 //sys  getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
 //sys  Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
+//sys  ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
 //sys  Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
 //sys  Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
index b8b31418191239f1b12aa90cf1ff8dd49a8f6594..c6a9733b4cb6eab5870518703ccc5e6d6281524c 100644 (file)
@@ -4,9 +4,7 @@
 
 package unix
 
-import (
-       "syscall"
-)
+import "syscall"
 
 func ptrace(request int, pid int, addr uintptr, data uintptr) error {
        return ENOTSUP
index 67413983735fa9d128984ac28fd4779f81531283..253afa4de55cd4d25559d31c5ae74f41d55db4d2 100644 (file)
@@ -6,13 +6,7 @@
 
 package unix
 
-import (
-       "syscall"
-)
-
-func ptrace(request int, pid int, addr uintptr, data uintptr) error {
-       return ENOTSUP
-}
+import "syscall"
 
 func setTimespec(sec, nsec int64) Timespec {
        return Timespec{Sec: sec, Nsec: nsec}
@@ -51,5 +45,6 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
 //sys  Fstatfs(fd int, stat *Statfs_t) (err error)
 //sys  getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT
 //sys  Lstat(path string, stat *Stat_t) (err error)
+//sys  ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
 //sys  Stat(path string, stat *Stat_t) (err error)
 //sys  Statfs(path string, stat *Statfs_t) (err error)
index 8a195ae586cf582fd29281196adbe84be831491c..842ab5acde8218f30ca1effef8c0a1a46f77cfd2 100644 (file)
@@ -47,6 +47,10 @@ type SockaddrDatalink struct {
        raw    RawSockaddrDatalink
 }
 
+func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
+       return nil, EAFNOSUPPORT
+}
+
 // Translate "kern.hostname" to []_C_int{0,1,2,3}.
 func nametomib(name string) (mib []_C_int, err error) {
        const siz = unsafe.Sizeof(mib[0])
@@ -129,23 +133,8 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
        return
 }
 
-const ImplementsGetwd = true
-
 //sys  Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
 
-func Getwd() (string, error) {
-       var buf [PathMax]byte
-       _, err := Getcwd(buf[0:])
-       if err != nil {
-               return "", err
-       }
-       n := clen(buf[:])
-       if n < 1 {
-               return "", EINVAL
-       }
-       return string(buf[:n]), nil
-}
-
 func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
        var _p0 unsafe.Pointer
        var bufsize uintptr
index 6932e7c2c1a520cd773a5829aae2d96b025709b0..acc00c2e6a10a4e10e8728805ad674bf6ff52e53 100644 (file)
@@ -54,6 +54,10 @@ type SockaddrDatalink struct {
        raw    RawSockaddrDatalink
 }
 
+func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
+       return nil, EAFNOSUPPORT
+}
+
 // Translate "kern.hostname" to []_C_int{0,1,2,3}.
 func nametomib(name string) (mib []_C_int, err error) {
        const siz = unsafe.Sizeof(mib[0])
@@ -140,23 +144,8 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
        return
 }
 
-const ImplementsGetwd = true
-
 //sys  Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
 
-func Getwd() (string, error) {
-       var buf [PathMax]byte
-       _, err := Getcwd(buf[0:])
-       if err != nil {
-               return "", err
-       }
-       n := clen(buf[:])
-       if n < 1 {
-               return "", EINVAL
-       }
-       return string(buf[:n]), nil
-}
-
 func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
        var (
                _p0          unsafe.Pointer
index 94dafa4e528b3e6d2c5fe3650c12ec068ce27251..84a9e5277ac50bd2bcb9e43e17afdd08806b0a52 100644 (file)
@@ -106,15 +106,24 @@ func IoctlGetRTCTime(fd int) (*RTCTime, error) {
        return &value, err
 }
 
+// IoctlGetWatchdogInfo fetches information about a watchdog device from the
+// Linux watchdog API. For more information, see:
+// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
+func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) {
+       var value WatchdogInfo
+       err := ioctl(fd, WDIOC_GETSUPPORT, uintptr(unsafe.Pointer(&value)))
+       return &value, err
+}
+
 func IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) {
        var value RTCWkAlrm
        err := ioctl(fd, RTC_WKALM_RD, uintptr(unsafe.Pointer(&value)))
        return &value, err
 }
 
-// IoctlFileClone performs an FICLONERANGE ioctl operation to clone the range of
-// data conveyed in value to the file associated with the file descriptor
-// destFd. See the ioctl_ficlonerange(2) man page for details.
+// IoctlFileCloneRange performs an FICLONERANGE ioctl operation to clone the
+// range of data conveyed in value to the file associated with the file
+// descriptor destFd. See the ioctl_ficlonerange(2) man page for details.
 func IoctlFileCloneRange(destFd int, value *FileCloneRange) error {
        err := ioctl(destFd, FICLONERANGE, uintptr(unsafe.Pointer(value)))
        runtime.KeepAlive(value)
@@ -128,15 +137,22 @@ func IoctlFileClone(destFd, srcFd int) error {
        return ioctl(destFd, FICLONE, uintptr(srcFd))
 }
 
-// IoctlFileClone performs an FIDEDUPERANGE ioctl operation to share the range of
-// data conveyed in value with the file associated with the file descriptor
-// destFd. See the ioctl_fideduperange(2) man page for details.
+// IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the
+// range of data conveyed in value with the file associated with the file
+// descriptor destFd. See the ioctl_fideduperange(2) man page for details.
 func IoctlFileDedupeRange(destFd int, value *FileDedupeRange) error {
        err := ioctl(destFd, FIDEDUPERANGE, uintptr(unsafe.Pointer(value)))
        runtime.KeepAlive(value)
        return err
 }
 
+// IoctlWatchdogKeepalive issues a keepalive ioctl to a watchdog device. For
+// more information, see:
+// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
+func IoctlWatchdogKeepalive(fd int) error {
+       return ioctl(fd, WDIOC_KEEPALIVE, 0)
+}
+
 //sys  Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)
 
 func Link(oldpath string, newpath string) (err error) {
index 048d18e3c810edc502c0d71ccfd2461bf1b4016d..c97c2ee53e5f58dc54e8a0fe20f7f8393a70189f 100644 (file)
@@ -2,9 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// TODO(rsc): Rewrite all nn(SP) references into name+(nn-8)(FP)
-// so that go vet can check that they are correct.
-
 // +build 386,linux
 
 package unix
index 45b50a6105e129c860fa16abe737b5d928093456..1e6843b4c3dacb31c5d25940da4fbe302e2be7c3 100644 (file)
@@ -31,6 +31,10 @@ type SockaddrDatalink struct {
        raw    RawSockaddrDatalink
 }
 
+func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
+       return nil, EAFNOSUPPORT
+}
+
 func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
 
 func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {
@@ -141,23 +145,8 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
        return
 }
 
-const ImplementsGetwd = true
-
 //sys  Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
 
-func Getwd() (string, error) {
-       var buf [PathMax]byte
-       _, err := Getcwd(buf[0:])
-       if err != nil {
-               return "", err
-       }
-       n := clen(buf[:])
-       if n < 1 {
-               return "", EINVAL
-       }
-       return string(buf[:n]), nil
-}
-
 // TODO
 func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
        return -1, ENOSYS
index a266e92a9b187a930eb9985b284265b56077eacb..6a50b50bd69247d8cb8d9d8b200bebbb17efc9c0 100644 (file)
@@ -31,6 +31,10 @@ type SockaddrDatalink struct {
        raw    RawSockaddrDatalink
 }
 
+func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
+       return nil, EAFNOSUPPORT
+}
+
 func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
 
 func nametomib(name string) (mib []_C_int, err error) {
@@ -114,23 +118,8 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
        return
 }
 
-const ImplementsGetwd = true
-
 //sys  Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
 
-func Getwd() (string, error) {
-       var buf [PathMax]byte
-       _, err := Getcwd(buf[0:])
-       if err != nil {
-               return "", err
-       }
-       n := clen(buf[:])
-       if n < 1 {
-               return "", EINVAL
-       }
-       return string(buf[:n]), nil
-}
-
 func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
        if raceenabled {
                raceReleaseMerge(unsafe.Pointer(&ioSync))
index 0e2a696ad361bc1e9a66f3310e85ba8299fce2f5..fee6e995289112f5c3a688eee0d9a7ad4dd3e577 100644 (file)
@@ -13,6 +13,7 @@
 package unix
 
 import (
+       "runtime"
        "syscall"
        "unsafe"
 )
@@ -553,8 +554,10 @@ func Minor(dev uint64) uint32 {
 
 //sys  ioctl(fd int, req uint, arg uintptr) (err error)
 
-func IoctlSetTermio(fd int, req uint, value *Termio) (err error) {
-       return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
+func IoctlSetTermio(fd int, req uint, value *Termio) error {
+       err := ioctl(fd, req, uintptr(unsafe.Pointer(value)))
+       runtime.KeepAlive(value)
+       return err
 }
 
 func IoctlGetTermio(fd int, req uint) (*Termio, error) {
index 6f333594bbd191fa4b6ee1c467014dff31f595b8..ec376f51bc423de5168ed6add21d6c2e8e8d8f11 100644 (file)
@@ -45,6 +45,7 @@ const (
        AF_SIP                            = 0x18
        AF_SNA                            = 0xb
        AF_SYSTEM                         = 0x20
+       AF_SYS_CONTROL                    = 0x2
        AF_UNIX                           = 0x1
        AF_UNSPEC                         = 0x0
        AF_UTUN                           = 0x26
@@ -251,6 +252,7 @@ const (
        CSTOP                             = 0x13
        CSTOPB                            = 0x400
        CSUSP                             = 0x1a
+       CTLIOCGINFO                       = 0xc0644e03
        CTL_HW                            = 0x6
        CTL_KERN                          = 0x1
        CTL_MAXNAME                       = 0xc
index db767eb257f64ef8739acdc2f01281bc27e859e7..fea5dfaadb9b8936ac02c422798cd2feb46ccb43 100644 (file)
@@ -45,6 +45,7 @@ const (
        AF_SIP                            = 0x18
        AF_SNA                            = 0xb
        AF_SYSTEM                         = 0x20
+       AF_SYS_CONTROL                    = 0x2
        AF_UNIX                           = 0x1
        AF_UNSPEC                         = 0x0
        AF_UTUN                           = 0x26
@@ -251,6 +252,7 @@ const (
        CSTOP                             = 0x13
        CSTOPB                            = 0x400
        CSUSP                             = 0x1a
+       CTLIOCGINFO                       = 0xc0644e03
        CTL_HW                            = 0x6
        CTL_KERN                          = 0x1
        CTL_MAXNAME                       = 0xc
index ddc5d001b6951f38ffea9f776b73ffd6603a8f33..03feefbf8c92eb88727a26f395b35c287f7690ab 100644 (file)
@@ -45,6 +45,7 @@ const (
        AF_SIP                            = 0x18
        AF_SNA                            = 0xb
        AF_SYSTEM                         = 0x20
+       AF_SYS_CONTROL                    = 0x2
        AF_UNIX                           = 0x1
        AF_UNSPEC                         = 0x0
        AF_UTUN                           = 0x26
@@ -251,6 +252,7 @@ const (
        CSTOP                             = 0x13
        CSTOPB                            = 0x400
        CSUSP                             = 0x1a
+       CTLIOCGINFO                       = 0xc0644e03
        CTL_HW                            = 0x6
        CTL_KERN                          = 0x1
        CTL_MAXNAME                       = 0xc
index 0614d26d01e745e8e99cb6a99fcd319af0c610cd..b40fb1f69675f22ba4ca795c6de7dd0f929efbe5 100644 (file)
@@ -45,6 +45,7 @@ const (
        AF_SIP                            = 0x18
        AF_SNA                            = 0xb
        AF_SYSTEM                         = 0x20
+       AF_SYS_CONTROL                    = 0x2
        AF_UNIX                           = 0x1
        AF_UNSPEC                         = 0x0
        AF_UTUN                           = 0x26
@@ -251,6 +252,7 @@ const (
        CSTOP                             = 0x13
        CSTOPB                            = 0x400
        CSUSP                             = 0x1a
+       CTLIOCGINFO                       = 0xc0644e03
        CTL_HW                            = 0x6
        CTL_KERN                          = 0x1
        CTL_MAXNAME                       = 0xc
index 6130471748acf3dae804a697fbdbefd7db2ab586..f5e91b7abaaa7271aed57da0b3ca48a70d7d6fb1 100644 (file)
@@ -62,6 +62,7 @@ const (
        B28800                            = 0x7080
        B300                              = 0x12c
        B38400                            = 0x9600
+       B460800                           = 0x70800
        B4800                             = 0x12c0
        B50                               = 0x32
        B57600                            = 0xe100
@@ -69,12 +70,15 @@ const (
        B7200                             = 0x1c20
        B75                               = 0x4b
        B76800                            = 0x12c00
+       B921600                           = 0xe1000
        B9600                             = 0x2580
+       BIOCFEEDBACK                      = 0x8004427d
        BIOCFLUSH                         = 0x20004268
        BIOCGBLEN                         = 0x40044266
        BIOCGDLT                          = 0x4004426a
        BIOCGDLTLIST                      = 0xc0104279
        BIOCGETIF                         = 0x4020426b
+       BIOCGFEEDBACK                     = 0x4004427c
        BIOCGHDRCMPLT                     = 0x40044274
        BIOCGRSIG                         = 0x40044272
        BIOCGRTIMEOUT                     = 0x4010426e
@@ -88,6 +92,7 @@ const (
        BIOCSETF                          = 0x80104267
        BIOCSETIF                         = 0x8020426c
        BIOCSETWF                         = 0x8010427b
+       BIOCSFEEDBACK                     = 0x8004427d
        BIOCSHDRCMPLT                     = 0x80044275
        BIOCSRSIG                         = 0x80044273
        BIOCSRTIMEOUT                     = 0x8010426d
@@ -125,6 +130,7 @@ const (
        BPF_MINBUFSIZE                    = 0x20
        BPF_MINOR_VERSION                 = 0x1
        BPF_MISC                          = 0x7
+       BPF_MOD                           = 0x90
        BPF_MSH                           = 0xa0
        BPF_MUL                           = 0x20
        BPF_NEG                           = 0x80
@@ -139,6 +145,7 @@ const (
        BPF_TXA                           = 0x80
        BPF_W                             = 0x0
        BPF_X                             = 0x8
+       BPF_XOR                           = 0xa0
        BRKINT                            = 0x2
        CFLUSH                            = 0xf
        CLOCAL                            = 0x8000
@@ -156,6 +163,12 @@ const (
        CLOCK_UPTIME_FAST                 = 0x8
        CLOCK_UPTIME_PRECISE              = 0x7
        CLOCK_VIRTUAL                     = 0x1
+       CPUSTATES                         = 0x5
+       CP_IDLE                           = 0x4
+       CP_INTR                           = 0x3
+       CP_NICE                           = 0x1
+       CP_SYS                            = 0x2
+       CP_USER                           = 0x0
        CREAD                             = 0x800
        CRTSCTS                           = 0x30000
        CS5                               = 0x0
@@ -175,6 +188,7 @@ const (
        DLT_A429                          = 0xb8
        DLT_A653_ICM                      = 0xb9
        DLT_AIRONET_HEADER                = 0x78
+       DLT_AOS                           = 0xde
        DLT_APPLE_IP_OVER_IEEE1394        = 0x8a
        DLT_ARCNET                        = 0x7
        DLT_ARCNET_LINUX                  = 0x81
@@ -184,22 +198,33 @@ const (
        DLT_AX25                          = 0x3
        DLT_AX25_KISS                     = 0xca
        DLT_BACNET_MS_TP                  = 0xa5
+       DLT_BLUETOOTH_BREDR_BB            = 0xff
        DLT_BLUETOOTH_HCI_H4              = 0xbb
        DLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9
+       DLT_BLUETOOTH_LE_LL               = 0xfb
+       DLT_BLUETOOTH_LE_LL_WITH_PHDR     = 0x100
+       DLT_BLUETOOTH_LINUX_MONITOR       = 0xfe
        DLT_CAN20B                        = 0xbe
+       DLT_CAN_SOCKETCAN                 = 0xe3
        DLT_CHAOS                         = 0x5
        DLT_CHDLC                         = 0x68
        DLT_CISCO_IOS                     = 0x76
        DLT_C_HDLC                        = 0x68
        DLT_C_HDLC_WITH_DIR               = 0xcd
+       DLT_DBUS                          = 0xe7
+       DLT_DECT                          = 0xdd
        DLT_DOCSIS                        = 0x8f
+       DLT_DVB_CI                        = 0xeb
        DLT_ECONET                        = 0x73
        DLT_EN10MB                        = 0x1
        DLT_EN3MB                         = 0x2
        DLT_ENC                           = 0x6d
+       DLT_EPON                          = 0x103
        DLT_ERF                           = 0xc5
        DLT_ERF_ETH                       = 0xaf
        DLT_ERF_POS                       = 0xb0
+       DLT_FC_2                          = 0xe0
+       DLT_FC_2_WITH_FRAME_DELIMS        = 0xe1
        DLT_FDDI                          = 0xa
        DLT_FLEXRAY                       = 0xd2
        DLT_FRELAY                        = 0x6b
@@ -209,6 +234,8 @@ const (
        DLT_GPF_F                         = 0xab
        DLT_GPF_T                         = 0xaa
        DLT_GPRS_LLC                      = 0xa9
+       DLT_GSMTAP_ABIS                   = 0xda
+       DLT_GSMTAP_UM                     = 0xd9
        DLT_HHDLC                         = 0x79
        DLT_IBM_SN                        = 0x92
        DLT_IBM_SP                        = 0x91
@@ -218,18 +245,28 @@ const (
        DLT_IEEE802_11_RADIO_AVS          = 0xa3
        DLT_IEEE802_15_4                  = 0xc3
        DLT_IEEE802_15_4_LINUX            = 0xbf
+       DLT_IEEE802_15_4_NOFCS            = 0xe6
        DLT_IEEE802_15_4_NONASK_PHY       = 0xd7
        DLT_IEEE802_16_MAC_CPS            = 0xbc
        DLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1
+       DLT_INFINIBAND                    = 0xf7
        DLT_IPFILTER                      = 0x74
        DLT_IPMB                          = 0xc7
        DLT_IPMB_LINUX                    = 0xd1
+       DLT_IPMI_HPM_2                    = 0x104
+       DLT_IPNET                         = 0xe2
+       DLT_IPOIB                         = 0xf2
+       DLT_IPV4                          = 0xe4
+       DLT_IPV6                          = 0xe5
        DLT_IP_OVER_FC                    = 0x7a
+       DLT_ISO_14443                     = 0x108
        DLT_JUNIPER_ATM1                  = 0x89
        DLT_JUNIPER_ATM2                  = 0x87
+       DLT_JUNIPER_ATM_CEMIC             = 0xee
        DLT_JUNIPER_CHDLC                 = 0xb5
        DLT_JUNIPER_ES                    = 0x84
        DLT_JUNIPER_ETHER                 = 0xb2
+       DLT_JUNIPER_FIBRECHANNEL          = 0xea
        DLT_JUNIPER_FRELAY                = 0xb4
        DLT_JUNIPER_GGSN                  = 0x85
        DLT_JUNIPER_ISM                   = 0xc2
@@ -242,25 +279,40 @@ const (
        DLT_JUNIPER_PPPOE                 = 0xa7
        DLT_JUNIPER_PPPOE_ATM             = 0xa8
        DLT_JUNIPER_SERVICES              = 0x88
+       DLT_JUNIPER_SRX_E2E               = 0xe9
        DLT_JUNIPER_ST                    = 0xc8
        DLT_JUNIPER_VP                    = 0xb7
+       DLT_JUNIPER_VS                    = 0xe8
        DLT_LAPB_WITH_DIR                 = 0xcf
        DLT_LAPD                          = 0xcb
        DLT_LIN                           = 0xd4
+       DLT_LINUX_EVDEV                   = 0xd8
        DLT_LINUX_IRDA                    = 0x90
        DLT_LINUX_LAPD                    = 0xb1
        DLT_LINUX_SLL                     = 0x71
        DLT_LOOP                          = 0x6c
        DLT_LTALK                         = 0x72
+       DLT_MATCHING_MAX                  = 0x109
+       DLT_MATCHING_MIN                  = 0x68
        DLT_MFR                           = 0xb6
        DLT_MOST                          = 0xd3
+       DLT_MPEG_2_TS                     = 0xf3
+       DLT_MPLS                          = 0xdb
        DLT_MTP2                          = 0x8c
        DLT_MTP2_WITH_PHDR                = 0x8b
        DLT_MTP3                          = 0x8d
+       DLT_MUX27010                      = 0xec
+       DLT_NETANALYZER                   = 0xf0
+       DLT_NETANALYZER_TRANSPARENT       = 0xf1
+       DLT_NETLINK                       = 0xfd
+       DLT_NFC_LLCP                      = 0xf5
+       DLT_NFLOG                         = 0xef
+       DLT_NG40                          = 0xf4
        DLT_NULL                          = 0x0
        DLT_PCI_EXP                       = 0x7d
        DLT_PFLOG                         = 0x75
        DLT_PFSYNC                        = 0x12
+       DLT_PKTAP                         = 0x102
        DLT_PPI                           = 0xc0
        DLT_PPP                           = 0x9
        DLT_PPP_BSDOS                     = 0x10
@@ -269,22 +321,51 @@ const (
        DLT_PPP_SERIAL                    = 0x32
        DLT_PPP_WITH_DIR                  = 0xcc
        DLT_PRISM_HEADER                  = 0x77
+       DLT_PROFIBUS_DL                   = 0x101
        DLT_PRONET                        = 0x4
        DLT_RAIF1                         = 0xc6
        DLT_RAW                           = 0xc
+       DLT_RDS                           = 0x109
        DLT_REDBACK_SMARTEDGE             = 0x20
        DLT_RIO                           = 0x7c
+       DLT_RTAC_SERIAL                   = 0xfa
        DLT_SCCP                          = 0x8e
+       DLT_SCTP                          = 0xf8
        DLT_SITA                          = 0xc4
        DLT_SLIP                          = 0x8
        DLT_SLIP_BSDOS                    = 0xf
+       DLT_STANAG_5066_D_PDU             = 0xed
        DLT_SUNATM                        = 0x7b
        DLT_SYMANTEC_FIREWALL             = 0x63
        DLT_TZSP                          = 0x80
        DLT_USB                           = 0xba
+       DLT_USBPCAP                       = 0xf9
+       DLT_USB_FREEBSD                   = 0xba
        DLT_USB_LINUX                     = 0xbd
+       DLT_USB_LINUX_MMAPPED             = 0xdc
+       DLT_USER0                         = 0x93
+       DLT_USER1                         = 0x94
+       DLT_USER10                        = 0x9d
+       DLT_USER11                        = 0x9e
+       DLT_USER12                        = 0x9f
+       DLT_USER13                        = 0xa0
+       DLT_USER14                        = 0xa1
+       DLT_USER15                        = 0xa2
+       DLT_USER2                         = 0x95
+       DLT_USER3                         = 0x96
+       DLT_USER4                         = 0x97
+       DLT_USER5                         = 0x98
+       DLT_USER6                         = 0x99
+       DLT_USER7                         = 0x9a
+       DLT_USER8                         = 0x9b
+       DLT_USER9                         = 0x9c
+       DLT_WATTSTOPPER_DLM               = 0x107
+       DLT_WIHART                        = 0xdf
+       DLT_WIRESHARK_UPPER_PDU           = 0xfc
        DLT_X2E_SERIAL                    = 0xd5
        DLT_X2E_XORAYA                    = 0xd6
+       DLT_ZWAVE_R1_R2                   = 0x105
+       DLT_ZWAVE_R3                      = 0x106
        DT_BLK                            = 0x6
        DT_CHR                            = 0x2
        DT_DBF                            = 0xf
@@ -323,10 +404,11 @@ const (
        EV_EOF                            = 0x8000
        EV_ERROR                          = 0x4000
        EV_FLAG1                          = 0x2000
+       EV_HUP                            = 0x800
        EV_NODATA                         = 0x1000
        EV_ONESHOT                        = 0x10
        EV_RECEIPT                        = 0x40
-       EV_SYSFLAGS                       = 0xf000
+       EV_SYSFLAGS                       = 0xf800
        EXTA                              = 0x4b00
        EXTB                              = 0x9600
        EXTEXIT_LWP                       = 0x10000
@@ -365,8 +447,9 @@ const (
        IFF_ALLMULTI                      = 0x200
        IFF_ALTPHYS                       = 0x4000
        IFF_BROADCAST                     = 0x2
-       IFF_CANTCHANGE                    = 0x118e72
+       IFF_CANTCHANGE                    = 0x318e72
        IFF_DEBUG                         = 0x4
+       IFF_IDIRECT                       = 0x200000
        IFF_LINK0                         = 0x1000
        IFF_LINK1                         = 0x2000
        IFF_LINK2                         = 0x4000
@@ -441,7 +524,6 @@ const (
        IFT_EPLRS                         = 0x57
        IFT_ESCON                         = 0x49
        IFT_ETHER                         = 0x6
-       IFT_FAITH                         = 0xf2
        IFT_FAST                          = 0x7d
        IFT_FASTETHER                     = 0x3e
        IFT_FASTETHERFX                   = 0x45
@@ -614,6 +696,7 @@ const (
        IN_CLASSD_NET                     = 0xf0000000
        IN_CLASSD_NSHIFT                  = 0x1c
        IN_LOOPBACKNET                    = 0x7f
+       IN_RFC3021_MASK                   = 0xfffffffe
        IPPROTO_3PC                       = 0x22
        IPPROTO_ADFS                      = 0x44
        IPPROTO_AH                        = 0x33
@@ -735,7 +818,6 @@ const (
        IPV6_DEFHLIM                      = 0x40
        IPV6_DONTFRAG                     = 0x3e
        IPV6_DSTOPTS                      = 0x32
-       IPV6_FAITH                        = 0x1d
        IPV6_FLOWINFO_MASK                = 0xffffff0f
        IPV6_FLOWLABEL_MASK               = 0xffff0f00
        IPV6_FRAGTTL                      = 0x78
@@ -747,7 +829,6 @@ const (
        IPV6_HLIMDEC                      = 0x1
        IPV6_HOPLIMIT                     = 0x2f
        IPV6_HOPOPTS                      = 0x31
-       IPV6_IPSEC_POLICY                 = 0x1c
        IPV6_JOIN_GROUP                   = 0xc
        IPV6_LEAVE_GROUP                  = 0xd
        IPV6_MAXHLIM                      = 0xff
@@ -795,16 +876,22 @@ const (
        IP_DUMMYNET_DEL                   = 0x3d
        IP_DUMMYNET_FLUSH                 = 0x3e
        IP_DUMMYNET_GET                   = 0x40
-       IP_FAITH                          = 0x16
        IP_FW_ADD                         = 0x32
        IP_FW_DEL                         = 0x33
        IP_FW_FLUSH                       = 0x34
        IP_FW_GET                         = 0x36
        IP_FW_RESETLOG                    = 0x37
+       IP_FW_TBL_ADD                     = 0x2a
+       IP_FW_TBL_CREATE                  = 0x28
+       IP_FW_TBL_DEL                     = 0x2b
+       IP_FW_TBL_DESTROY                 = 0x29
+       IP_FW_TBL_EXPIRE                  = 0x2f
+       IP_FW_TBL_FLUSH                   = 0x2c
+       IP_FW_TBL_GET                     = 0x2d
+       IP_FW_TBL_ZERO                    = 0x2e
        IP_FW_X                           = 0x31
        IP_FW_ZERO                        = 0x35
        IP_HDRINCL                        = 0x2
-       IP_IPSEC_POLICY                   = 0x15
        IP_MAXPACKET                      = 0xffff
        IP_MAX_MEMBERSHIPS                = 0x14
        IP_MF                             = 0x2000
@@ -1080,12 +1167,10 @@ const (
        RTM_MISS                          = 0x7
        RTM_NEWADDR                       = 0xc
        RTM_NEWMADDR                      = 0xf
-       RTM_OLDADD                        = 0x9
-       RTM_OLDDEL                        = 0xa
        RTM_REDIRECT                      = 0x6
        RTM_RESOLVE                       = 0xb
        RTM_RTTUNIT                       = 0xf4240
-       RTM_VERSION                       = 0x6
+       RTM_VERSION                       = 0x7
        RTV_EXPIRE                        = 0x4
        RTV_HOPCOUNT                      = 0x2
        RTV_IWCAPSEGS                     = 0x400
@@ -1106,13 +1191,13 @@ const (
        SHUT_RDWR                         = 0x2
        SHUT_WR                           = 0x1
        SIOCADDMULTI                      = 0x80206931
-       SIOCADDRT                         = 0x8040720a
        SIOCAIFADDR                       = 0x8040691a
+       SIOCAIFGROUP                      = 0x80286987
        SIOCALIFADDR                      = 0x8118691b
        SIOCATMARK                        = 0x40047307
        SIOCDELMULTI                      = 0x80206932
-       SIOCDELRT                         = 0x8040720b
        SIOCDIFADDR                       = 0x80206919
+       SIOCDIFGROUP                      = 0x80286989
        SIOCDIFPHYADDR                    = 0x80206949
        SIOCDLIFADDR                      = 0x8118691d
        SIOCGDRVSPEC                      = 0xc028697b
@@ -1120,6 +1205,7 @@ const (
        SIOCGETVIFCNT                     = 0xc028720f
        SIOCGHIWAT                        = 0x40047301
        SIOCGIFADDR                       = 0xc0206921
+       SIOCGIFALIAS                      = 0xc0406929
        SIOCGIFBRDADDR                    = 0xc0206923
        SIOCGIFCAP                        = 0xc020691f
        SIOCGIFCONF                       = 0xc0106924
@@ -1128,6 +1214,7 @@ const (
        SIOCGIFFLAGS                      = 0xc0206911
        SIOCGIFGENERIC                    = 0xc020693a
        SIOCGIFGMEMB                      = 0xc028698a
+       SIOCGIFGROUP                      = 0xc0286988
        SIOCGIFINDEX                      = 0xc0206920
        SIOCGIFMEDIA                      = 0xc0306938
        SIOCGIFMETRIC                     = 0xc0206917
@@ -1194,6 +1281,7 @@ const (
        SO_RCVBUF                         = 0x1002
        SO_RCVLOWAT                       = 0x1004
        SO_RCVTIMEO                       = 0x1006
+       SO_RERROR                         = 0x2000
        SO_REUSEADDR                      = 0x4
        SO_REUSEPORT                      = 0x200
        SO_SNDBUF                         = 0x1001
@@ -1233,6 +1321,9 @@ const (
        S_IXGRP                           = 0x8
        S_IXOTH                           = 0x1
        S_IXUSR                           = 0x40
+       TAB0                              = 0x0
+       TAB3                              = 0x4
+       TABDLY                            = 0x4
        TCIFLUSH                          = 0x1
        TCIOFF                            = 0x3
        TCIOFLUSH                         = 0x3
@@ -1259,6 +1350,8 @@ const (
        TCP_NOPUSH                        = 0x4
        TCP_SIGNATURE_ENABLE              = 0x10
        TCSAFLUSH                         = 0x2
+       TIMER_ABSTIME                     = 0x1
+       TIMER_RELTIME                     = 0x0
        TIOCCBRK                          = 0x2000747a
        TIOCCDTR                          = 0x20007478
        TIOCCONS                          = 0x80047462
@@ -1272,7 +1365,6 @@ const (
        TIOCGETD                          = 0x4004741a
        TIOCGPGRP                         = 0x40047477
        TIOCGSID                          = 0x40047463
-       TIOCGSIZE                         = 0x40087468
        TIOCGWINSZ                        = 0x40087468
        TIOCISPTMASTER                    = 0x20007455
        TIOCMBIC                          = 0x8004746b
@@ -1317,7 +1409,6 @@ const (
        TIOCSETD                          = 0x8004741b
        TIOCSIG                           = 0x2000745f
        TIOCSPGRP                         = 0x80047476
-       TIOCSSIZE                         = 0x80087467
        TIOCSTART                         = 0x2000746e
        TIOCSTAT                          = 0x20007465
        TIOCSTI                           = 0x80017472
@@ -1326,6 +1417,8 @@ const (
        TIOCTIMESTAMP                     = 0x40107459
        TIOCUCNTL                         = 0x80047466
        TOSTOP                            = 0x400000
+       UTIME_NOW                         = -0x1
+       UTIME_OMIT                        = -0x2
        VCHECKPT                          = 0x13
        VDISCARD                          = 0xf
        VDSUSP                            = 0xb
@@ -1350,9 +1443,12 @@ const (
        VWERASE                           = 0x4
        WCONTINUED                        = 0x4
        WCOREFLAG                         = 0x80
+       WEXITED                           = 0x10
        WLINUXCLONE                       = 0x80000000
        WNOHANG                           = 0x1
-       WSTOPPED                          = 0x7f
+       WNOWAIT                           = 0x8
+       WSTOPPED                          = 0x2
+       WTRAPPED                          = 0x20
        WUNTRACED                         = 0x2
 )
 
@@ -1452,11 +1548,6 @@ const (
        ETIMEDOUT       = syscall.Errno(0x3c)
        ETOOMANYREFS    = syscall.Errno(0x3b)
        ETXTBSY         = syscall.Errno(0x1a)
-       EUNUSED94       = syscall.Errno(0x5e)
-       EUNUSED95       = syscall.Errno(0x5f)
-       EUNUSED96       = syscall.Errno(0x60)
-       EUNUSED97       = syscall.Errno(0x61)
-       EUNUSED98       = syscall.Errno(0x62)
        EUSERS          = syscall.Errno(0x44)
        EWOULDBLOCK     = syscall.Errno(0x23)
        EXDEV           = syscall.Errno(0x12)
@@ -1600,12 +1691,7 @@ var errorList = [...]struct {
        {91, "ENOLINK", "link has been severed"},
        {92, "EPROTO", "protocol error"},
        {93, "ENOMEDIUM", "no medium found"},
-       {94, "EUNUSED94", "unknown error: 94"},
-       {95, "EUNUSED95", "unknown error: 95"},
-       {96, "EUNUSED96", "unknown error: 96"},
-       {97, "EUNUSED97", "unknown error: 97"},
-       {98, "EUNUSED98", "unknown error: 98"},
-       {99, "ELAST", "unknown error: 99"},
+       {99, "EASYNC", "unknown error: 99"},
 }
 
 // Signal table
index 79e032f4fb7e72dd6f9504974ba3fc831c7668c7..2069fb861d11aa902db450a13ce284bd807d4701 100644 (file)
@@ -324,6 +324,7 @@ const (
        CAP_AUDIT_WRITE                             = 0x1d
        CAP_BLOCK_SUSPEND                           = 0x24
        CAP_BPF                                     = 0x27
+       CAP_CHECKPOINT_RESTORE                      = 0x28
        CAP_CHOWN                                   = 0x0
        CAP_DAC_OVERRIDE                            = 0x1
        CAP_DAC_READ_SEARCH                         = 0x2
@@ -332,7 +333,7 @@ const (
        CAP_IPC_LOCK                                = 0xe
        CAP_IPC_OWNER                               = 0xf
        CAP_KILL                                    = 0x5
-       CAP_LAST_CAP                                = 0x27
+       CAP_LAST_CAP                                = 0x28
        CAP_LEASE                                   = 0x1c
        CAP_LINUX_IMMUTABLE                         = 0x9
        CAP_MAC_ADMIN                               = 0x21
@@ -650,8 +651,8 @@ const (
        FAN_DELETE                                  = 0x200
        FAN_DELETE_SELF                             = 0x400
        FAN_DENY                                    = 0x2
-       FAN_DIR_MODIFY                              = 0x80000
        FAN_ENABLE_AUDIT                            = 0x40
+       FAN_EVENT_INFO_TYPE_DFID                    = 0x3
        FAN_EVENT_INFO_TYPE_DFID_NAME               = 0x2
        FAN_EVENT_INFO_TYPE_FID                     = 0x1
        FAN_EVENT_METADATA_LEN                      = 0x18
@@ -679,7 +680,10 @@ const (
        FAN_OPEN_EXEC_PERM                          = 0x40000
        FAN_OPEN_PERM                               = 0x10000
        FAN_Q_OVERFLOW                              = 0x4000
+       FAN_REPORT_DFID_NAME                        = 0xc00
+       FAN_REPORT_DIR_FID                          = 0x400
        FAN_REPORT_FID                              = 0x200
+       FAN_REPORT_NAME                             = 0x800
        FAN_REPORT_TID                              = 0x100
        FAN_UNLIMITED_MARKS                         = 0x20
        FAN_UNLIMITED_QUEUE                         = 0x10
@@ -1508,6 +1512,92 @@ const (
        PARITY_DEFAULT                              = 0x0
        PARITY_NONE                                 = 0x1
        PARMRK                                      = 0x8
+       PERF_ATTR_SIZE_VER0                         = 0x40
+       PERF_ATTR_SIZE_VER1                         = 0x48
+       PERF_ATTR_SIZE_VER2                         = 0x50
+       PERF_ATTR_SIZE_VER3                         = 0x60
+       PERF_ATTR_SIZE_VER4                         = 0x68
+       PERF_ATTR_SIZE_VER5                         = 0x70
+       PERF_ATTR_SIZE_VER6                         = 0x78
+       PERF_AUX_FLAG_COLLISION                     = 0x8
+       PERF_AUX_FLAG_OVERWRITE                     = 0x2
+       PERF_AUX_FLAG_PARTIAL                       = 0x4
+       PERF_AUX_FLAG_TRUNCATED                     = 0x1
+       PERF_FLAG_FD_CLOEXEC                        = 0x8
+       PERF_FLAG_FD_NO_GROUP                       = 0x1
+       PERF_FLAG_FD_OUTPUT                         = 0x2
+       PERF_FLAG_PID_CGROUP                        = 0x4
+       PERF_MAX_CONTEXTS_PER_STACK                 = 0x8
+       PERF_MAX_STACK_DEPTH                        = 0x7f
+       PERF_MEM_LOCK_LOCKED                        = 0x2
+       PERF_MEM_LOCK_NA                            = 0x1
+       PERF_MEM_LOCK_SHIFT                         = 0x18
+       PERF_MEM_LVLNUM_ANY_CACHE                   = 0xb
+       PERF_MEM_LVLNUM_L1                          = 0x1
+       PERF_MEM_LVLNUM_L2                          = 0x2
+       PERF_MEM_LVLNUM_L3                          = 0x3
+       PERF_MEM_LVLNUM_L4                          = 0x4
+       PERF_MEM_LVLNUM_LFB                         = 0xc
+       PERF_MEM_LVLNUM_NA                          = 0xf
+       PERF_MEM_LVLNUM_PMEM                        = 0xe
+       PERF_MEM_LVLNUM_RAM                         = 0xd
+       PERF_MEM_LVLNUM_SHIFT                       = 0x21
+       PERF_MEM_LVL_HIT                            = 0x2
+       PERF_MEM_LVL_IO                             = 0x1000
+       PERF_MEM_LVL_L1                             = 0x8
+       PERF_MEM_LVL_L2                             = 0x20
+       PERF_MEM_LVL_L3                             = 0x40
+       PERF_MEM_LVL_LFB                            = 0x10
+       PERF_MEM_LVL_LOC_RAM                        = 0x80
+       PERF_MEM_LVL_MISS                           = 0x4
+       PERF_MEM_LVL_NA                             = 0x1
+       PERF_MEM_LVL_REM_CCE1                       = 0x400
+       PERF_MEM_LVL_REM_CCE2                       = 0x800
+       PERF_MEM_LVL_REM_RAM1                       = 0x100
+       PERF_MEM_LVL_REM_RAM2                       = 0x200
+       PERF_MEM_LVL_SHIFT                          = 0x5
+       PERF_MEM_LVL_UNC                            = 0x2000
+       PERF_MEM_OP_EXEC                            = 0x10
+       PERF_MEM_OP_LOAD                            = 0x2
+       PERF_MEM_OP_NA                              = 0x1
+       PERF_MEM_OP_PFETCH                          = 0x8
+       PERF_MEM_OP_SHIFT                           = 0x0
+       PERF_MEM_OP_STORE                           = 0x4
+       PERF_MEM_REMOTE_REMOTE                      = 0x1
+       PERF_MEM_REMOTE_SHIFT                       = 0x25
+       PERF_MEM_SNOOPX_FWD                         = 0x1
+       PERF_MEM_SNOOPX_SHIFT                       = 0x25
+       PERF_MEM_SNOOP_HIT                          = 0x4
+       PERF_MEM_SNOOP_HITM                         = 0x10
+       PERF_MEM_SNOOP_MISS                         = 0x8
+       PERF_MEM_SNOOP_NA                           = 0x1
+       PERF_MEM_SNOOP_NONE                         = 0x2
+       PERF_MEM_SNOOP_SHIFT                        = 0x13
+       PERF_MEM_TLB_HIT                            = 0x2
+       PERF_MEM_TLB_L1                             = 0x8
+       PERF_MEM_TLB_L2                             = 0x10
+       PERF_MEM_TLB_MISS                           = 0x4
+       PERF_MEM_TLB_NA                             = 0x1
+       PERF_MEM_TLB_OS                             = 0x40
+       PERF_MEM_TLB_SHIFT                          = 0x1a
+       PERF_MEM_TLB_WK                             = 0x20
+       PERF_RECORD_KSYMBOL_FLAGS_UNREGISTER        = 0x1
+       PERF_RECORD_MISC_COMM_EXEC                  = 0x2000
+       PERF_RECORD_MISC_CPUMODE_MASK               = 0x7
+       PERF_RECORD_MISC_CPUMODE_UNKNOWN            = 0x0
+       PERF_RECORD_MISC_EXACT_IP                   = 0x4000
+       PERF_RECORD_MISC_EXT_RESERVED               = 0x8000
+       PERF_RECORD_MISC_FORK_EXEC                  = 0x2000
+       PERF_RECORD_MISC_GUEST_KERNEL               = 0x4
+       PERF_RECORD_MISC_GUEST_USER                 = 0x5
+       PERF_RECORD_MISC_HYPERVISOR                 = 0x3
+       PERF_RECORD_MISC_KERNEL                     = 0x1
+       PERF_RECORD_MISC_MMAP_DATA                  = 0x2000
+       PERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT     = 0x1000
+       PERF_RECORD_MISC_SWITCH_OUT                 = 0x2000
+       PERF_RECORD_MISC_SWITCH_OUT_PREEMPT         = 0x4000
+       PERF_RECORD_MISC_USER                       = 0x2
+       PERF_SAMPLE_BRANCH_PLM_ALL                  = 0x7
        PIPEFS_MAGIC                                = 0x50495045
        PPC_CMM_MAGIC                               = 0xc7571590
        PPPIOCGNPMODE                               = 0xc008744c
@@ -1894,6 +1984,7 @@ const (
        RTPROT_EIGRP                                = 0xc0
        RTPROT_GATED                                = 0x8
        RTPROT_ISIS                                 = 0xbb
+       RTPROT_KEEPALIVED                           = 0x12
        RTPROT_KERNEL                               = 0x2
        RTPROT_MROUTED                              = 0x11
        RTPROT_MRT                                  = 0xa
@@ -2084,6 +2175,7 @@ const (
        SO_EE_ORIGIN_TXSTATUS                       = 0x4
        SO_EE_ORIGIN_TXTIME                         = 0x6
        SO_EE_ORIGIN_ZEROCOPY                       = 0x5
+       SO_EE_RFC4884_FLAG_INVALID                  = 0x1
        SO_GET_FILTER                               = 0x1a
        SO_NO_CHECK                                 = 0xb
        SO_PEERNAME                                 = 0x1c
@@ -2357,6 +2449,23 @@ const (
        WCONTINUED                                  = 0x8
        WDIOC_SETPRETIMEOUT                         = 0xc0045708
        WDIOC_SETTIMEOUT                            = 0xc0045706
+       WDIOF_ALARMONLY                             = 0x400
+       WDIOF_CARDRESET                             = 0x20
+       WDIOF_EXTERN1                               = 0x4
+       WDIOF_EXTERN2                               = 0x8
+       WDIOF_FANFAULT                              = 0x2
+       WDIOF_KEEPALIVEPING                         = 0x8000
+       WDIOF_MAGICCLOSE                            = 0x100
+       WDIOF_OVERHEAT                              = 0x1
+       WDIOF_POWEROVER                             = 0x40
+       WDIOF_POWERUNDER                            = 0x10
+       WDIOF_PRETIMEOUT                            = 0x200
+       WDIOF_SETTIMEOUT                            = 0x80
+       WDIOF_UNKNOWN                               = -0x1
+       WDIOS_DISABLECARD                           = 0x1
+       WDIOS_ENABLECARD                            = 0x2
+       WDIOS_TEMPPANIC                             = 0x4
+       WDIOS_UNKNOWN                               = -0x1
        WEXITED                                     = 0x4
        WIN_ACKMEDIACHANGE                          = 0xdb
        WIN_CHECKPOWERMODE1                         = 0xe5
index 46e054ccb0e0dffe178c06b5c9d0d2abcbd06d2d..5312c36cc8286827f69cd1c7a31a6b10e363f3d3 100644 (file)
@@ -192,6 +192,12 @@ const (
        CSTOPB                        = 0x40
        CSUSP                         = 0x1a
        CSWTCH                        = 0x1a
+       DIOC                          = 0x6400
+       DIOCGETB                      = 0x6402
+       DIOCGETC                      = 0x6401
+       DIOCGETP                      = 0x6408
+       DIOCSETE                      = 0x6403
+       DIOCSETP                      = 0x6409
        DLT_AIRONET_HEADER            = 0x78
        DLT_APPLE_IP_OVER_IEEE1394    = 0x8a
        DLT_ARCNET                    = 0x7
@@ -290,6 +296,7 @@ const (
        FF0                           = 0x0
        FF1                           = 0x8000
        FFDLY                         = 0x8000
+       FIORDCHK                      = 0x6603
        FLUSHALL                      = 0x1
        FLUSHDATA                     = 0x0
        FLUSHO                        = 0x2000
@@ -645,6 +652,14 @@ const (
        MAP_SHARED                    = 0x1
        MAP_TEXT                      = 0x400
        MAP_TYPE                      = 0xf
+       MCAST_BLOCK_SOURCE            = 0x2b
+       MCAST_EXCLUDE                 = 0x2
+       MCAST_INCLUDE                 = 0x1
+       MCAST_JOIN_GROUP              = 0x29
+       MCAST_JOIN_SOURCE_GROUP       = 0x2d
+       MCAST_LEAVE_GROUP             = 0x2a
+       MCAST_LEAVE_SOURCE_GROUP      = 0x2e
+       MCAST_UNBLOCK_SOURCE          = 0x2c
        MCL_CURRENT                   = 0x1
        MCL_FUTURE                    = 0x2
        MSG_CTRUNC                    = 0x10
@@ -653,6 +668,7 @@ const (
        MSG_DUPCTRL                   = 0x800
        MSG_EOR                       = 0x8
        MSG_MAXIOVLEN                 = 0x10
+       MSG_NOSIGNAL                  = 0x200
        MSG_NOTIFICATION              = 0x100
        MSG_OOB                       = 0x1
        MSG_PEEK                      = 0x2
@@ -687,6 +703,7 @@ const (
        O_APPEND                      = 0x8
        O_CLOEXEC                     = 0x800000
        O_CREAT                       = 0x100
+       O_DIRECTORY                   = 0x1000000
        O_DSYNC                       = 0x40
        O_EXCL                        = 0x400
        O_EXEC                        = 0x400000
@@ -725,7 +742,7 @@ const (
        RLIMIT_FSIZE                  = 0x1
        RLIMIT_NOFILE                 = 0x5
        RLIMIT_STACK                  = 0x3
-       RLIM_INFINITY                 = -0x3
+       RLIM_INFINITY                 = 0xfffffffffffffffd
        RTAX_AUTHOR                   = 0x6
        RTAX_BRD                      = 0x7
        RTAX_DST                      = 0x0
@@ -1047,6 +1064,7 @@ const (
        TCOON                         = 0x1
        TCP_ABORT_THRESHOLD           = 0x11
        TCP_ANONPRIVBIND              = 0x20
+       TCP_CONGESTION                = 0x25
        TCP_CONN_ABORT_THRESHOLD      = 0x13
        TCP_CONN_NOTIFY_THRESHOLD     = 0x12
        TCP_CORK                      = 0x18
@@ -1076,6 +1094,8 @@ const (
        TCSETSF                       = 0x5410
        TCSETSW                       = 0x540f
        TCXONC                        = 0x5406
+       TIMER_ABSTIME                 = 0x1
+       TIMER_RELTIME                 = 0x0
        TIOC                          = 0x5400
        TIOCCBRK                      = 0x747a
        TIOCCDTR                      = 0x7478
index 3976147201c7a3e12c3b7da1e743af13d00ad547..6eb457983232da5fde164f3a551398ec4a924083 100644 (file)
@@ -490,21 +490,6 @@ func libc_munlockall_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
-func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-       _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-       if e1 != 0 {
-               err = errnoErr(e1)
-       }
-       return
-}
-
-func libc_getattrlist_trampoline()
-
-//go:linkname libc_getattrlist libc_getattrlist
-//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
 func pipe() (r int, w int, err error) {
        r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
        r = int(r0)
@@ -1277,6 +1262,28 @@ func libc_ftruncate_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Getcwd(buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := syscall_syscall(funcPC(libc_getcwd_trampoline), uintptr(_p0), uintptr(len(buf)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_getcwd_trampoline()
+
+//go:linkname libc_getcwd libc_getcwd
+//go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Getdtablesize() (size int) {
        r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
        size = int(r0)
@@ -2427,21 +2434,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
-func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-       _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-       if e1 != 0 {
-               err = errnoErr(e1)
-       }
-       return
-}
-
-func libc_ptrace_trampoline()
-
-//go:linkname libc_ptrace libc_ptrace
-//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
 func Fstat(fd int, stat *Stat_t) (err error) {
        _, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
        if e1 != 0 {
@@ -2528,6 +2520,21 @@ func libc_lstat64_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_ptrace_trampoline()
+
+//go:linkname libc_ptrace libc_ptrace
+//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Stat(path string, stat *Stat_t) (err error) {
        var _p0 *byte
        _p0, err = BytePtrFromString(path)
index 961058db86eb32b98a2095186d17579cd9865d4f..1c53979a101e840431c504c65e85978e579f3184 100644 (file)
@@ -60,8 +60,6 @@ TEXT Â·libc_munlock_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munlock(SB)
 TEXT Â·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munlockall(SB)
-TEXT Â·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
-       JMP     libc_getattrlist(SB)
 TEXT Â·libc_pipe_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_pipe(SB)
 TEXT Â·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
@@ -146,6 +144,8 @@ TEXT Â·libc_fsync_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_fsync(SB)
 TEXT Â·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_ftruncate(SB)
+TEXT Â·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
+       JMP     libc_getcwd(SB)
 TEXT Â·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_getdtablesize(SB)
 TEXT Â·libc_getegid_trampoline(SB),NOSPLIT,$0-0
@@ -272,8 +272,6 @@ TEXT Â·libc_mmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_mmap(SB)
 TEXT Â·libc_munmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munmap(SB)
-TEXT Â·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
-       JMP     libc_ptrace(SB)
 TEXT Â·libc_fstat64_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_fstat64(SB)
 TEXT Â·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0
@@ -284,6 +282,8 @@ TEXT Â·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_getfsstat64(SB)
 TEXT Â·libc_lstat64_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_lstat64(SB)
+TEXT Â·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
+       JMP     libc_ptrace(SB)
 TEXT Â·libc_stat64_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_stat64(SB)
 TEXT Â·libc_statfs64_trampoline(SB),NOSPLIT,$0-0
index e253f438721d9ff21837c7a8671b8ee2fc80dc14..889c14059e9a262a4e73680ddc54a3469dda3480 100644 (file)
@@ -490,21 +490,6 @@ func libc_munlockall_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
-func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-       _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-       if e1 != 0 {
-               err = errnoErr(e1)
-       }
-       return
-}
-
-func libc_getattrlist_trampoline()
-
-//go:linkname libc_getattrlist libc_getattrlist
-//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
 func pipe() (r int, w int, err error) {
        r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
        r = int(r0)
@@ -1277,6 +1262,28 @@ func libc_ftruncate_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Getcwd(buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := syscall_syscall(funcPC(libc_getcwd_trampoline), uintptr(_p0), uintptr(len(buf)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_getcwd_trampoline()
+
+//go:linkname libc_getcwd libc_getcwd
+//go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Getdtablesize() (size int) {
        r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
        size = int(r0)
@@ -2427,21 +2434,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
-func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-       _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-       if e1 != 0 {
-               err = errnoErr(e1)
-       }
-       return
-}
-
-func libc_ptrace_trampoline()
-
-//go:linkname libc_ptrace libc_ptrace
-//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
 func Fstat(fd int, stat *Stat_t) (err error) {
        _, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
        if e1 != 0 {
@@ -2528,6 +2520,21 @@ func libc_lstat64_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_ptrace_trampoline()
+
+//go:linkname libc_ptrace libc_ptrace
+//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Stat(path string, stat *Stat_t) (err error) {
        var _p0 *byte
        _p0, err = BytePtrFromString(path)
index b8be24c6bb67d3cb59c93e0aea55481aaa285b3e..c77bd6e20bdcf7c1d5f14e85f53ac9efd8ffbabf 100644 (file)
@@ -60,8 +60,6 @@ TEXT Â·libc_munlock_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munlock(SB)
 TEXT Â·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munlockall(SB)
-TEXT Â·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
-       JMP     libc_getattrlist(SB)
 TEXT Â·libc_pipe_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_pipe(SB)
 TEXT Â·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
@@ -146,6 +144,8 @@ TEXT Â·libc_fsync_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_fsync(SB)
 TEXT Â·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_ftruncate(SB)
+TEXT Â·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
+       JMP     libc_getcwd(SB)
 TEXT Â·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_getdtablesize(SB)
 TEXT Â·libc_getegid_trampoline(SB),NOSPLIT,$0-0
@@ -272,8 +272,6 @@ TEXT Â·libc_mmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_mmap(SB)
 TEXT Â·libc_munmap_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munmap(SB)
-TEXT Â·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
-       JMP     libc_ptrace(SB)
 TEXT Â·libc_fstat64_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_fstat64(SB)
 TEXT Â·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0
@@ -284,6 +282,8 @@ TEXT Â·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_getfsstat64(SB)
 TEXT Â·libc_lstat64_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_lstat64(SB)
+TEXT Â·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
+       JMP     libc_ptrace(SB)
 TEXT Â·libc_stat64_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_stat64(SB)
 TEXT Â·libc_statfs64_trampoline(SB),NOSPLIT,$0-0
index be2e28311d261bd25edb46f2057a91a5f2a22563..d6b5249c2f2089c10888f2f670c6fec0bbf27714 100644 (file)
@@ -490,21 +490,6 @@ func libc_munlockall_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
-func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-       _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-       if e1 != 0 {
-               err = errnoErr(e1)
-       }
-       return
-}
-
-func libc_getattrlist_trampoline()
-
-//go:linkname libc_getattrlist libc_getattrlist
-//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
 func pipe() (r int, w int, err error) {
        r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
        r = int(r0)
@@ -1277,6 +1262,28 @@ func libc_ftruncate_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Getcwd(buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := syscall_syscall(funcPC(libc_getcwd_trampoline), uintptr(_p0), uintptr(len(buf)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_getcwd_trampoline()
+
+//go:linkname libc_getcwd libc_getcwd
+//go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Getdtablesize() (size int) {
        r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
        size = int(r0)
index 403c21f06b447bb14b186102d3df6a3c96d384a5..5eec5f1d95347cd3ed4e7b54ff98218fcc8e318c 100644 (file)
@@ -60,8 +60,6 @@ TEXT Â·libc_munlock_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munlock(SB)
 TEXT Â·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munlockall(SB)
-TEXT Â·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
-       JMP     libc_getattrlist(SB)
 TEXT Â·libc_pipe_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_pipe(SB)
 TEXT Â·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
@@ -146,6 +144,8 @@ TEXT Â·libc_fsync_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_fsync(SB)
 TEXT Â·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_ftruncate(SB)
+TEXT Â·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
+       JMP     libc_getcwd(SB)
 TEXT Â·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_getdtablesize(SB)
 TEXT Â·libc_getegid_trampoline(SB),NOSPLIT,$0-0
index 34976a4c222f19ef8a5c540c17c3b102b4dcd69b..23b65a5301ad50e465b93bfc8b29ea0b8e336f92 100644 (file)
@@ -490,21 +490,6 @@ func libc_munlockall_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
-func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-       _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-       if e1 != 0 {
-               err = errnoErr(e1)
-       }
-       return
-}
-
-func libc_getattrlist_trampoline()
-
-//go:linkname libc_getattrlist libc_getattrlist
-//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
 func pipe() (r int, w int, err error) {
        r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
        r = int(r0)
@@ -1277,6 +1262,28 @@ func libc_ftruncate_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func Getcwd(buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := syscall_syscall(funcPC(libc_getcwd_trampoline), uintptr(_p0), uintptr(len(buf)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_getcwd_trampoline()
+
+//go:linkname libc_getcwd libc_getcwd
+//go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Getdtablesize() (size int) {
        r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
        size = int(r0)
@@ -2513,6 +2520,21 @@ func libc_lstat_trampoline()
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func libc_ptrace_trampoline()
+
+//go:linkname libc_ptrace libc_ptrace
+//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Stat(path string, stat *Stat_t) (err error) {
        var _p0 *byte
        _p0, err = BytePtrFromString(path)
index abe7b6edf9a0de966ee1f9071744f705e9705564..53c402bf68b5886a6e022f2142e83ce6a06419b6 100644 (file)
@@ -60,8 +60,6 @@ TEXT Â·libc_munlock_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munlock(SB)
 TEXT Â·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_munlockall(SB)
-TEXT Â·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
-       JMP     libc_getattrlist(SB)
 TEXT Â·libc_pipe_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_pipe(SB)
 TEXT Â·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
@@ -146,6 +144,8 @@ TEXT Â·libc_fsync_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_fsync(SB)
 TEXT Â·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_ftruncate(SB)
+TEXT Â·libc_getcwd_trampoline(SB),NOSPLIT,$0-0
+       JMP     libc_getcwd(SB)
 TEXT Â·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_getdtablesize(SB)
 TEXT Â·libc_getegid_trampoline(SB),NOSPLIT,$0-0
@@ -282,6 +282,8 @@ TEXT Â·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_getfsstat(SB)
 TEXT Â·libc_lstat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_lstat(SB)
+TEXT Â·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
+       JMP     libc_ptrace(SB)
 TEXT Â·libc_stat_trampoline(SB),NOSPLIT,$0-0
        JMP     libc_stat(SB)
 TEXT Â·libc_statfs_trampoline(SB),NOSPLIT,$0-0
index fe1fdd78d70db58b9437b879aa2be8500e3ec253..aebfe511ad52ff6c51ab48540b84ae22809a2383 100644 (file)
@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
-func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-       var _p0 unsafe.Pointer
-       if len(mib) > 0 {
-               _p0 = unsafe.Pointer(&mib[0])
-       } else {
-               _p0 = unsafe.Pointer(&_zero)
-       }
-       _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-       if e1 != 0 {
-               err = errnoErr(e1)
-       }
-       return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
 func utimes(path string, timeval *[2]Timeval) (err error) {
        var _p0 *byte
        _p0, err = BytePtrFromString(path)
@@ -439,6 +423,22 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+       var _p0 unsafe.Pointer
+       if len(mib) > 0 {
+               _p0 = unsafe.Pointer(&mib[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Access(path string, mode uint32) (err error) {
        var _p0 *byte
        _p0, err = BytePtrFromString(path)
diff --git a/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go b/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go
new file mode 100644 (file)
index 0000000..ad62324
--- /dev/null
@@ -0,0 +1,437 @@
+// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/syscall.h
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build 386,darwin
+
+package unix
+
+// Deprecated: Use libSystem wrappers instead of direct syscalls.
+const (
+       SYS_SYSCALL                        = 0
+       SYS_EXIT                           = 1
+       SYS_FORK                           = 2
+       SYS_READ                           = 3
+       SYS_WRITE                          = 4
+       SYS_OPEN                           = 5
+       SYS_CLOSE                          = 6
+       SYS_WAIT4                          = 7
+       SYS_LINK                           = 9
+       SYS_UNLINK                         = 10
+       SYS_CHDIR                          = 12
+       SYS_FCHDIR                         = 13
+       SYS_MKNOD                          = 14
+       SYS_CHMOD                          = 15
+       SYS_CHOWN                          = 16
+       SYS_GETFSSTAT                      = 18
+       SYS_GETPID                         = 20
+       SYS_SETUID                         = 23
+       SYS_GETUID                         = 24
+       SYS_GETEUID                        = 25
+       SYS_PTRACE                         = 26
+       SYS_RECVMSG                        = 27
+       SYS_SENDMSG                        = 28
+       SYS_RECVFROM                       = 29
+       SYS_ACCEPT                         = 30
+       SYS_GETPEERNAME                    = 31
+       SYS_GETSOCKNAME                    = 32
+       SYS_ACCESS                         = 33
+       SYS_CHFLAGS                        = 34
+       SYS_FCHFLAGS                       = 35
+       SYS_SYNC                           = 36
+       SYS_KILL                           = 37
+       SYS_GETPPID                        = 39
+       SYS_DUP                            = 41
+       SYS_PIPE                           = 42
+       SYS_GETEGID                        = 43
+       SYS_SIGACTION                      = 46
+       SYS_GETGID                         = 47
+       SYS_SIGPROCMASK                    = 48
+       SYS_GETLOGIN                       = 49
+       SYS_SETLOGIN                       = 50
+       SYS_ACCT                           = 51
+       SYS_SIGPENDING                     = 52
+       SYS_SIGALTSTACK                    = 53
+       SYS_IOCTL                          = 54
+       SYS_REBOOT                         = 55
+       SYS_REVOKE                         = 56
+       SYS_SYMLINK                        = 57
+       SYS_READLINK                       = 58
+       SYS_EXECVE                         = 59
+       SYS_UMASK                          = 60
+       SYS_CHROOT                         = 61
+       SYS_MSYNC                          = 65
+       SYS_VFORK                          = 66
+       SYS_MUNMAP                         = 73
+       SYS_MPROTECT                       = 74
+       SYS_MADVISE                        = 75
+       SYS_MINCORE                        = 78
+       SYS_GETGROUPS                      = 79
+       SYS_SETGROUPS                      = 80
+       SYS_GETPGRP                        = 81
+       SYS_SETPGID                        = 82
+       SYS_SETITIMER                      = 83
+       SYS_SWAPON                         = 85
+       SYS_GETITIMER                      = 86
+       SYS_GETDTABLESIZE                  = 89
+       SYS_DUP2                           = 90
+       SYS_FCNTL                          = 92
+       SYS_SELECT                         = 93
+       SYS_FSYNC                          = 95
+       SYS_SETPRIORITY                    = 96
+       SYS_SOCKET                         = 97
+       SYS_CONNECT                        = 98
+       SYS_GETPRIORITY                    = 100
+       SYS_BIND                           = 104
+       SYS_SETSOCKOPT                     = 105
+       SYS_LISTEN                         = 106
+       SYS_SIGSUSPEND                     = 111
+       SYS_GETTIMEOFDAY                   = 116
+       SYS_GETRUSAGE                      = 117
+       SYS_GETSOCKOPT                     = 118
+       SYS_READV                          = 120
+       SYS_WRITEV                         = 121
+       SYS_SETTIMEOFDAY                   = 122
+       SYS_FCHOWN                         = 123
+       SYS_FCHMOD                         = 124
+       SYS_SETREUID                       = 126
+       SYS_SETREGID                       = 127
+       SYS_RENAME                         = 128
+       SYS_FLOCK                          = 131
+       SYS_MKFIFO                         = 132
+       SYS_SENDTO                         = 133
+       SYS_SHUTDOWN                       = 134
+       SYS_SOCKETPAIR                     = 135
+       SYS_MKDIR                          = 136
+       SYS_RMDIR                          = 137
+       SYS_UTIMES                         = 138
+       SYS_FUTIMES                        = 139
+       SYS_ADJTIME                        = 140
+       SYS_GETHOSTUUID                    = 142
+       SYS_SETSID                         = 147
+       SYS_GETPGID                        = 151
+       SYS_SETPRIVEXEC                    = 152
+       SYS_PREAD                          = 153
+       SYS_PWRITE                         = 154
+       SYS_NFSSVC                         = 155
+       SYS_STATFS                         = 157
+       SYS_FSTATFS                        = 158
+       SYS_UNMOUNT                        = 159
+       SYS_GETFH                          = 161
+       SYS_QUOTACTL                       = 165
+       SYS_MOUNT                          = 167
+       SYS_CSOPS                          = 169
+       SYS_CSOPS_AUDITTOKEN               = 170
+       SYS_WAITID                         = 173
+       SYS_KDEBUG_TYPEFILTER              = 177
+       SYS_KDEBUG_TRACE_STRING            = 178
+       SYS_KDEBUG_TRACE64                 = 179
+       SYS_KDEBUG_TRACE                   = 180
+       SYS_SETGID                         = 181
+       SYS_SETEGID                        = 182
+       SYS_SETEUID                        = 183
+       SYS_SIGRETURN                      = 184
+       SYS_THREAD_SELFCOUNTS              = 186
+       SYS_FDATASYNC                      = 187
+       SYS_STAT                           = 188
+       SYS_FSTAT                          = 189
+       SYS_LSTAT                          = 190
+       SYS_PATHCONF                       = 191
+       SYS_FPATHCONF                      = 192
+       SYS_GETRLIMIT                      = 194
+       SYS_SETRLIMIT                      = 195
+       SYS_GETDIRENTRIES                  = 196
+       SYS_MMAP                           = 197
+       SYS_LSEEK                          = 199
+       SYS_TRUNCATE                       = 200
+       SYS_FTRUNCATE                      = 201
+       SYS_SYSCTL                         = 202
+       SYS_MLOCK                          = 203
+       SYS_MUNLOCK                        = 204
+       SYS_UNDELETE                       = 205
+       SYS_OPEN_DPROTECTED_NP             = 216
+       SYS_GETATTRLIST                    = 220
+       SYS_SETATTRLIST                    = 221
+       SYS_GETDIRENTRIESATTR              = 222
+       SYS_EXCHANGEDATA                   = 223
+       SYS_SEARCHFS                       = 225
+       SYS_DELETE                         = 226
+       SYS_COPYFILE                       = 227
+       SYS_FGETATTRLIST                   = 228
+       SYS_FSETATTRLIST                   = 229
+       SYS_POLL                           = 230
+       SYS_WATCHEVENT                     = 231
+       SYS_WAITEVENT                      = 232
+       SYS_MODWATCH                       = 233
+       SYS_GETXATTR                       = 234
+       SYS_FGETXATTR                      = 235
+       SYS_SETXATTR                       = 236
+       SYS_FSETXATTR                      = 237
+       SYS_REMOVEXATTR                    = 238
+       SYS_FREMOVEXATTR                   = 239
+       SYS_LISTXATTR                      = 240
+       SYS_FLISTXATTR                     = 241
+       SYS_FSCTL                          = 242
+       SYS_INITGROUPS                     = 243
+       SYS_POSIX_SPAWN                    = 244
+       SYS_FFSCTL                         = 245
+       SYS_NFSCLNT                        = 247
+       SYS_FHOPEN                         = 248
+       SYS_MINHERIT                       = 250
+       SYS_SEMSYS                         = 251
+       SYS_MSGSYS                         = 252
+       SYS_SHMSYS                         = 253
+       SYS_SEMCTL                         = 254
+       SYS_SEMGET                         = 255
+       SYS_SEMOP                          = 256
+       SYS_MSGCTL                         = 258
+       SYS_MSGGET                         = 259
+       SYS_MSGSND                         = 260
+       SYS_MSGRCV                         = 261
+       SYS_SHMAT                          = 262
+       SYS_SHMCTL                         = 263
+       SYS_SHMDT                          = 264
+       SYS_SHMGET                         = 265
+       SYS_SHM_OPEN                       = 266
+       SYS_SHM_UNLINK                     = 267
+       SYS_SEM_OPEN                       = 268
+       SYS_SEM_CLOSE                      = 269
+       SYS_SEM_UNLINK                     = 270
+       SYS_SEM_WAIT                       = 271
+       SYS_SEM_TRYWAIT                    = 272
+       SYS_SEM_POST                       = 273
+       SYS_SYSCTLBYNAME                   = 274
+       SYS_OPEN_EXTENDED                  = 277
+       SYS_UMASK_EXTENDED                 = 278
+       SYS_STAT_EXTENDED                  = 279
+       SYS_LSTAT_EXTENDED                 = 280
+       SYS_FSTAT_EXTENDED                 = 281
+       SYS_CHMOD_EXTENDED                 = 282
+       SYS_FCHMOD_EXTENDED                = 283
+       SYS_ACCESS_EXTENDED                = 284
+       SYS_SETTID                         = 285
+       SYS_GETTID                         = 286
+       SYS_SETSGROUPS                     = 287
+       SYS_GETSGROUPS                     = 288
+       SYS_SETWGROUPS                     = 289
+       SYS_GETWGROUPS                     = 290
+       SYS_MKFIFO_EXTENDED                = 291
+       SYS_MKDIR_EXTENDED                 = 292
+       SYS_IDENTITYSVC                    = 293
+       SYS_SHARED_REGION_CHECK_NP         = 294
+       SYS_VM_PRESSURE_MONITOR            = 296
+       SYS_PSYNCH_RW_LONGRDLOCK           = 297
+       SYS_PSYNCH_RW_YIELDWRLOCK          = 298
+       SYS_PSYNCH_RW_DOWNGRADE            = 299
+       SYS_PSYNCH_RW_UPGRADE              = 300
+       SYS_PSYNCH_MUTEXWAIT               = 301
+       SYS_PSYNCH_MUTEXDROP               = 302
+       SYS_PSYNCH_CVBROAD                 = 303
+       SYS_PSYNCH_CVSIGNAL                = 304
+       SYS_PSYNCH_CVWAIT                  = 305
+       SYS_PSYNCH_RW_RDLOCK               = 306
+       SYS_PSYNCH_RW_WRLOCK               = 307
+       SYS_PSYNCH_RW_UNLOCK               = 308
+       SYS_PSYNCH_RW_UNLOCK2              = 309
+       SYS_GETSID                         = 310
+       SYS_SETTID_WITH_PID                = 311
+       SYS_PSYNCH_CVCLRPREPOST            = 312
+       SYS_AIO_FSYNC                      = 313
+       SYS_AIO_RETURN                     = 314
+       SYS_AIO_SUSPEND                    = 315
+       SYS_AIO_CANCEL                     = 316
+       SYS_AIO_ERROR                      = 317
+       SYS_AIO_READ                       = 318
+       SYS_AIO_WRITE                      = 319
+       SYS_LIO_LISTIO                     = 320
+       SYS_IOPOLICYSYS                    = 322
+       SYS_PROCESS_POLICY                 = 323
+       SYS_MLOCKALL                       = 324
+       SYS_MUNLOCKALL                     = 325
+       SYS_ISSETUGID                      = 327
+       SYS___PTHREAD_KILL                 = 328
+       SYS___PTHREAD_SIGMASK              = 329
+       SYS___SIGWAIT                      = 330
+       SYS___DISABLE_THREADSIGNAL         = 331
+       SYS___PTHREAD_MARKCANCEL           = 332
+       SYS___PTHREAD_CANCELED             = 333
+       SYS___SEMWAIT_SIGNAL               = 334
+       SYS_PROC_INFO                      = 336
+       SYS_SENDFILE                       = 337
+       SYS_STAT64                         = 338
+       SYS_FSTAT64                        = 339
+       SYS_LSTAT64                        = 340
+       SYS_STAT64_EXTENDED                = 341
+       SYS_LSTAT64_EXTENDED               = 342
+       SYS_FSTAT64_EXTENDED               = 343
+       SYS_GETDIRENTRIES64                = 344
+       SYS_STATFS64                       = 345
+       SYS_FSTATFS64                      = 346
+       SYS_GETFSSTAT64                    = 347
+       SYS___PTHREAD_CHDIR                = 348
+       SYS___PTHREAD_FCHDIR               = 349
+       SYS_AUDIT                          = 350
+       SYS_AUDITON                        = 351
+       SYS_GETAUID                        = 353
+       SYS_SETAUID                        = 354
+       SYS_GETAUDIT_ADDR                  = 357
+       SYS_SETAUDIT_ADDR                  = 358
+       SYS_AUDITCTL                       = 359
+       SYS_BSDTHREAD_CREATE               = 360
+       SYS_BSDTHREAD_TERMINATE            = 361
+       SYS_KQUEUE                         = 362
+       SYS_KEVENT                         = 363
+       SYS_LCHOWN                         = 364
+       SYS_BSDTHREAD_REGISTER             = 366
+       SYS_WORKQ_OPEN                     = 367
+       SYS_WORKQ_KERNRETURN               = 368
+       SYS_KEVENT64                       = 369
+       SYS___OLD_SEMWAIT_SIGNAL           = 370
+       SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371
+       SYS_THREAD_SELFID                  = 372
+       SYS_LEDGER                         = 373
+       SYS_KEVENT_QOS                     = 374
+       SYS_KEVENT_ID                      = 375
+       SYS___MAC_EXECVE                   = 380
+       SYS___MAC_SYSCALL                  = 381
+       SYS___MAC_GET_FILE                 = 382
+       SYS___MAC_SET_FILE                 = 383
+       SYS___MAC_GET_LINK                 = 384
+       SYS___MAC_SET_LINK                 = 385
+       SYS___MAC_GET_PROC                 = 386
+       SYS___MAC_SET_PROC                 = 387
+       SYS___MAC_GET_FD                   = 388
+       SYS___MAC_SET_FD                   = 389
+       SYS___MAC_GET_PID                  = 390
+       SYS_PSELECT                        = 394
+       SYS_PSELECT_NOCANCEL               = 395
+       SYS_READ_NOCANCEL                  = 396
+       SYS_WRITE_NOCANCEL                 = 397
+       SYS_OPEN_NOCANCEL                  = 398
+       SYS_CLOSE_NOCANCEL                 = 399
+       SYS_WAIT4_NOCANCEL                 = 400
+       SYS_RECVMSG_NOCANCEL               = 401
+       SYS_SENDMSG_NOCANCEL               = 402
+       SYS_RECVFROM_NOCANCEL              = 403
+       SYS_ACCEPT_NOCANCEL                = 404
+       SYS_MSYNC_NOCANCEL                 = 405
+       SYS_FCNTL_NOCANCEL                 = 406
+       SYS_SELECT_NOCANCEL                = 407
+       SYS_FSYNC_NOCANCEL                 = 408
+       SYS_CONNECT_NOCANCEL               = 409
+       SYS_SIGSUSPEND_NOCANCEL            = 410
+       SYS_READV_NOCANCEL                 = 411
+       SYS_WRITEV_NOCANCEL                = 412
+       SYS_SENDTO_NOCANCEL                = 413
+       SYS_PREAD_NOCANCEL                 = 414
+       SYS_PWRITE_NOCANCEL                = 415
+       SYS_WAITID_NOCANCEL                = 416
+       SYS_POLL_NOCANCEL                  = 417
+       SYS_MSGSND_NOCANCEL                = 418
+       SYS_MSGRCV_NOCANCEL                = 419
+       SYS_SEM_WAIT_NOCANCEL              = 420
+       SYS_AIO_SUSPEND_NOCANCEL           = 421
+       SYS___SIGWAIT_NOCANCEL             = 422
+       SYS___SEMWAIT_SIGNAL_NOCANCEL      = 423
+       SYS___MAC_MOUNT                    = 424
+       SYS___MAC_GET_MOUNT                = 425
+       SYS___MAC_GETFSSTAT                = 426
+       SYS_FSGETPATH                      = 427
+       SYS_AUDIT_SESSION_SELF             = 428
+       SYS_AUDIT_SESSION_JOIN             = 429
+       SYS_FILEPORT_MAKEPORT              = 430
+       SYS_FILEPORT_MAKEFD                = 431
+       SYS_AUDIT_SESSION_PORT             = 432
+       SYS_PID_SUSPEND                    = 433
+       SYS_PID_RESUME                     = 434
+       SYS_PID_HIBERNATE                  = 435
+       SYS_PID_SHUTDOWN_SOCKETS           = 436
+       SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
+       SYS_KAS_INFO                       = 439
+       SYS_MEMORYSTATUS_CONTROL           = 440
+       SYS_GUARDED_OPEN_NP                = 441
+       SYS_GUARDED_CLOSE_NP               = 442
+       SYS_GUARDED_KQUEUE_NP              = 443
+       SYS_CHANGE_FDGUARD_NP              = 444
+       SYS_USRCTL                         = 445
+       SYS_PROC_RLIMIT_CONTROL            = 446
+       SYS_CONNECTX                       = 447
+       SYS_DISCONNECTX                    = 448
+       SYS_PEELOFF                        = 449
+       SYS_SOCKET_DELEGATE                = 450
+       SYS_TELEMETRY                      = 451
+       SYS_PROC_UUID_POLICY               = 452
+       SYS_MEMORYSTATUS_GET_LEVEL         = 453
+       SYS_SYSTEM_OVERRIDE                = 454
+       SYS_VFS_PURGE                      = 455
+       SYS_SFI_CTL                        = 456
+       SYS_SFI_PIDCTL                     = 457
+       SYS_COALITION                      = 458
+       SYS_COALITION_INFO                 = 459
+       SYS_NECP_MATCH_POLICY              = 460
+       SYS_GETATTRLISTBULK                = 461
+       SYS_CLONEFILEAT                    = 462
+       SYS_OPENAT                         = 463
+       SYS_OPENAT_NOCANCEL                = 464
+       SYS_RENAMEAT                       = 465
+       SYS_FACCESSAT                      = 466
+       SYS_FCHMODAT                       = 467
+       SYS_FCHOWNAT                       = 468
+       SYS_FSTATAT                        = 469
+       SYS_FSTATAT64                      = 470
+       SYS_LINKAT                         = 471
+       SYS_UNLINKAT                       = 472
+       SYS_READLINKAT                     = 473
+       SYS_SYMLINKAT                      = 474
+       SYS_MKDIRAT                        = 475
+       SYS_GETATTRLISTAT                  = 476
+       SYS_PROC_TRACE_LOG                 = 477
+       SYS_BSDTHREAD_CTL                  = 478
+       SYS_OPENBYID_NP                    = 479
+       SYS_RECVMSG_X                      = 480
+       SYS_SENDMSG_X                      = 481
+       SYS_THREAD_SELFUSAGE               = 482
+       SYS_CSRCTL                         = 483
+       SYS_GUARDED_OPEN_DPROTECTED_NP     = 484
+       SYS_GUARDED_WRITE_NP               = 485
+       SYS_GUARDED_PWRITE_NP              = 486
+       SYS_GUARDED_WRITEV_NP              = 487
+       SYS_RENAMEATX_NP                   = 488
+       SYS_MREMAP_ENCRYPTED               = 489
+       SYS_NETAGENT_TRIGGER               = 490
+       SYS_STACK_SNAPSHOT_WITH_CONFIG     = 491
+       SYS_MICROSTACKSHOT                 = 492
+       SYS_GRAB_PGO_DATA                  = 493
+       SYS_PERSONA                        = 494
+       SYS_WORK_INTERVAL_CTL              = 499
+       SYS_GETENTROPY                     = 500
+       SYS_NECP_OPEN                      = 501
+       SYS_NECP_CLIENT_ACTION             = 502
+       SYS___NEXUS_OPEN                   = 503
+       SYS___NEXUS_REGISTER               = 504
+       SYS___NEXUS_DEREGISTER             = 505
+       SYS___NEXUS_CREATE                 = 506
+       SYS___NEXUS_DESTROY                = 507
+       SYS___NEXUS_GET_OPT                = 508
+       SYS___NEXUS_SET_OPT                = 509
+       SYS___CHANNEL_OPEN                 = 510
+       SYS___CHANNEL_GET_INFO             = 511
+       SYS___CHANNEL_SYNC                 = 512
+       SYS___CHANNEL_GET_OPT              = 513
+       SYS___CHANNEL_SET_OPT              = 514
+       SYS_ULOCK_WAIT                     = 515
+       SYS_ULOCK_WAKE                     = 516
+       SYS_FCLONEFILEAT                   = 517
+       SYS_FS_SNAPSHOT                    = 518
+       SYS_TERMINATE_WITH_PAYLOAD         = 520
+       SYS_ABORT_WITH_PAYLOAD             = 521
+       SYS_NECP_SESSION_OPEN              = 522
+       SYS_NECP_SESSION_ACTION            = 523
+       SYS_SETATTRLISTAT                  = 524
+       SYS_NET_QOS_GUIDELINE              = 525
+       SYS_FMOUNT                         = 526
+       SYS_NTP_ADJTIME                    = 527
+       SYS_NTP_GETTIME                    = 528
+       SYS_OS_FAULT_WITH_PAYLOAD          = 529
+       SYS_MAXSYSCALL                     = 530
+       SYS_INVALID                        = 63
+)
diff --git a/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go
new file mode 100644 (file)
index 0000000..a2fc91d
--- /dev/null
@@ -0,0 +1,439 @@
+// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build amd64,darwin
+
+package unix
+
+// Deprecated: Use libSystem wrappers instead of direct syscalls.
+const (
+       SYS_SYSCALL                        = 0
+       SYS_EXIT                           = 1
+       SYS_FORK                           = 2
+       SYS_READ                           = 3
+       SYS_WRITE                          = 4
+       SYS_OPEN                           = 5
+       SYS_CLOSE                          = 6
+       SYS_WAIT4                          = 7
+       SYS_LINK                           = 9
+       SYS_UNLINK                         = 10
+       SYS_CHDIR                          = 12
+       SYS_FCHDIR                         = 13
+       SYS_MKNOD                          = 14
+       SYS_CHMOD                          = 15
+       SYS_CHOWN                          = 16
+       SYS_GETFSSTAT                      = 18
+       SYS_GETPID                         = 20
+       SYS_SETUID                         = 23
+       SYS_GETUID                         = 24
+       SYS_GETEUID                        = 25
+       SYS_PTRACE                         = 26
+       SYS_RECVMSG                        = 27
+       SYS_SENDMSG                        = 28
+       SYS_RECVFROM                       = 29
+       SYS_ACCEPT                         = 30
+       SYS_GETPEERNAME                    = 31
+       SYS_GETSOCKNAME                    = 32
+       SYS_ACCESS                         = 33
+       SYS_CHFLAGS                        = 34
+       SYS_FCHFLAGS                       = 35
+       SYS_SYNC                           = 36
+       SYS_KILL                           = 37
+       SYS_GETPPID                        = 39
+       SYS_DUP                            = 41
+       SYS_PIPE                           = 42
+       SYS_GETEGID                        = 43
+       SYS_SIGACTION                      = 46
+       SYS_GETGID                         = 47
+       SYS_SIGPROCMASK                    = 48
+       SYS_GETLOGIN                       = 49
+       SYS_SETLOGIN                       = 50
+       SYS_ACCT                           = 51
+       SYS_SIGPENDING                     = 52
+       SYS_SIGALTSTACK                    = 53
+       SYS_IOCTL                          = 54
+       SYS_REBOOT                         = 55
+       SYS_REVOKE                         = 56
+       SYS_SYMLINK                        = 57
+       SYS_READLINK                       = 58
+       SYS_EXECVE                         = 59
+       SYS_UMASK                          = 60
+       SYS_CHROOT                         = 61
+       SYS_MSYNC                          = 65
+       SYS_VFORK                          = 66
+       SYS_MUNMAP                         = 73
+       SYS_MPROTECT                       = 74
+       SYS_MADVISE                        = 75
+       SYS_MINCORE                        = 78
+       SYS_GETGROUPS                      = 79
+       SYS_SETGROUPS                      = 80
+       SYS_GETPGRP                        = 81
+       SYS_SETPGID                        = 82
+       SYS_SETITIMER                      = 83
+       SYS_SWAPON                         = 85
+       SYS_GETITIMER                      = 86
+       SYS_GETDTABLESIZE                  = 89
+       SYS_DUP2                           = 90
+       SYS_FCNTL                          = 92
+       SYS_SELECT                         = 93
+       SYS_FSYNC                          = 95
+       SYS_SETPRIORITY                    = 96
+       SYS_SOCKET                         = 97
+       SYS_CONNECT                        = 98
+       SYS_GETPRIORITY                    = 100
+       SYS_BIND                           = 104
+       SYS_SETSOCKOPT                     = 105
+       SYS_LISTEN                         = 106
+       SYS_SIGSUSPEND                     = 111
+       SYS_GETTIMEOFDAY                   = 116
+       SYS_GETRUSAGE                      = 117
+       SYS_GETSOCKOPT                     = 118
+       SYS_READV                          = 120
+       SYS_WRITEV                         = 121
+       SYS_SETTIMEOFDAY                   = 122
+       SYS_FCHOWN                         = 123
+       SYS_FCHMOD                         = 124
+       SYS_SETREUID                       = 126
+       SYS_SETREGID                       = 127
+       SYS_RENAME                         = 128
+       SYS_FLOCK                          = 131
+       SYS_MKFIFO                         = 132
+       SYS_SENDTO                         = 133
+       SYS_SHUTDOWN                       = 134
+       SYS_SOCKETPAIR                     = 135
+       SYS_MKDIR                          = 136
+       SYS_RMDIR                          = 137
+       SYS_UTIMES                         = 138
+       SYS_FUTIMES                        = 139
+       SYS_ADJTIME                        = 140
+       SYS_GETHOSTUUID                    = 142
+       SYS_SETSID                         = 147
+       SYS_GETPGID                        = 151
+       SYS_SETPRIVEXEC                    = 152
+       SYS_PREAD                          = 153
+       SYS_PWRITE                         = 154
+       SYS_NFSSVC                         = 155
+       SYS_STATFS                         = 157
+       SYS_FSTATFS                        = 158
+       SYS_UNMOUNT                        = 159
+       SYS_GETFH                          = 161
+       SYS_QUOTACTL                       = 165
+       SYS_MOUNT                          = 167
+       SYS_CSOPS                          = 169
+       SYS_CSOPS_AUDITTOKEN               = 170
+       SYS_WAITID                         = 173
+       SYS_KDEBUG_TYPEFILTER              = 177
+       SYS_KDEBUG_TRACE_STRING            = 178
+       SYS_KDEBUG_TRACE64                 = 179
+       SYS_KDEBUG_TRACE                   = 180
+       SYS_SETGID                         = 181
+       SYS_SETEGID                        = 182
+       SYS_SETEUID                        = 183
+       SYS_SIGRETURN                      = 184
+       SYS_THREAD_SELFCOUNTS              = 186
+       SYS_FDATASYNC                      = 187
+       SYS_STAT                           = 188
+       SYS_FSTAT                          = 189
+       SYS_LSTAT                          = 190
+       SYS_PATHCONF                       = 191
+       SYS_FPATHCONF                      = 192
+       SYS_GETRLIMIT                      = 194
+       SYS_SETRLIMIT                      = 195
+       SYS_GETDIRENTRIES                  = 196
+       SYS_MMAP                           = 197
+       SYS_LSEEK                          = 199
+       SYS_TRUNCATE                       = 200
+       SYS_FTRUNCATE                      = 201
+       SYS_SYSCTL                         = 202
+       SYS_MLOCK                          = 203
+       SYS_MUNLOCK                        = 204
+       SYS_UNDELETE                       = 205
+       SYS_OPEN_DPROTECTED_NP             = 216
+       SYS_GETATTRLIST                    = 220
+       SYS_SETATTRLIST                    = 221
+       SYS_GETDIRENTRIESATTR              = 222
+       SYS_EXCHANGEDATA                   = 223
+       SYS_SEARCHFS                       = 225
+       SYS_DELETE                         = 226
+       SYS_COPYFILE                       = 227
+       SYS_FGETATTRLIST                   = 228
+       SYS_FSETATTRLIST                   = 229
+       SYS_POLL                           = 230
+       SYS_WATCHEVENT                     = 231
+       SYS_WAITEVENT                      = 232
+       SYS_MODWATCH                       = 233
+       SYS_GETXATTR                       = 234
+       SYS_FGETXATTR                      = 235
+       SYS_SETXATTR                       = 236
+       SYS_FSETXATTR                      = 237
+       SYS_REMOVEXATTR                    = 238
+       SYS_FREMOVEXATTR                   = 239
+       SYS_LISTXATTR                      = 240
+       SYS_FLISTXATTR                     = 241
+       SYS_FSCTL                          = 242
+       SYS_INITGROUPS                     = 243
+       SYS_POSIX_SPAWN                    = 244
+       SYS_FFSCTL                         = 245
+       SYS_NFSCLNT                        = 247
+       SYS_FHOPEN                         = 248
+       SYS_MINHERIT                       = 250
+       SYS_SEMSYS                         = 251
+       SYS_MSGSYS                         = 252
+       SYS_SHMSYS                         = 253
+       SYS_SEMCTL                         = 254
+       SYS_SEMGET                         = 255
+       SYS_SEMOP                          = 256
+       SYS_MSGCTL                         = 258
+       SYS_MSGGET                         = 259
+       SYS_MSGSND                         = 260
+       SYS_MSGRCV                         = 261
+       SYS_SHMAT                          = 262
+       SYS_SHMCTL                         = 263
+       SYS_SHMDT                          = 264
+       SYS_SHMGET                         = 265
+       SYS_SHM_OPEN                       = 266
+       SYS_SHM_UNLINK                     = 267
+       SYS_SEM_OPEN                       = 268
+       SYS_SEM_CLOSE                      = 269
+       SYS_SEM_UNLINK                     = 270
+       SYS_SEM_WAIT                       = 271
+       SYS_SEM_TRYWAIT                    = 272
+       SYS_SEM_POST                       = 273
+       SYS_SYSCTLBYNAME                   = 274
+       SYS_OPEN_EXTENDED                  = 277
+       SYS_UMASK_EXTENDED                 = 278
+       SYS_STAT_EXTENDED                  = 279
+       SYS_LSTAT_EXTENDED                 = 280
+       SYS_FSTAT_EXTENDED                 = 281
+       SYS_CHMOD_EXTENDED                 = 282
+       SYS_FCHMOD_EXTENDED                = 283
+       SYS_ACCESS_EXTENDED                = 284
+       SYS_SETTID                         = 285
+       SYS_GETTID                         = 286
+       SYS_SETSGROUPS                     = 287
+       SYS_GETSGROUPS                     = 288
+       SYS_SETWGROUPS                     = 289
+       SYS_GETWGROUPS                     = 290
+       SYS_MKFIFO_EXTENDED                = 291
+       SYS_MKDIR_EXTENDED                 = 292
+       SYS_IDENTITYSVC                    = 293
+       SYS_SHARED_REGION_CHECK_NP         = 294
+       SYS_VM_PRESSURE_MONITOR            = 296
+       SYS_PSYNCH_RW_LONGRDLOCK           = 297
+       SYS_PSYNCH_RW_YIELDWRLOCK          = 298
+       SYS_PSYNCH_RW_DOWNGRADE            = 299
+       SYS_PSYNCH_RW_UPGRADE              = 300
+       SYS_PSYNCH_MUTEXWAIT               = 301
+       SYS_PSYNCH_MUTEXDROP               = 302
+       SYS_PSYNCH_CVBROAD                 = 303
+       SYS_PSYNCH_CVSIGNAL                = 304
+       SYS_PSYNCH_CVWAIT                  = 305
+       SYS_PSYNCH_RW_RDLOCK               = 306
+       SYS_PSYNCH_RW_WRLOCK               = 307
+       SYS_PSYNCH_RW_UNLOCK               = 308
+       SYS_PSYNCH_RW_UNLOCK2              = 309
+       SYS_GETSID                         = 310
+       SYS_SETTID_WITH_PID                = 311
+       SYS_PSYNCH_CVCLRPREPOST            = 312
+       SYS_AIO_FSYNC                      = 313
+       SYS_AIO_RETURN                     = 314
+       SYS_AIO_SUSPEND                    = 315
+       SYS_AIO_CANCEL                     = 316
+       SYS_AIO_ERROR                      = 317
+       SYS_AIO_READ                       = 318
+       SYS_AIO_WRITE                      = 319
+       SYS_LIO_LISTIO                     = 320
+       SYS_IOPOLICYSYS                    = 322
+       SYS_PROCESS_POLICY                 = 323
+       SYS_MLOCKALL                       = 324
+       SYS_MUNLOCKALL                     = 325
+       SYS_ISSETUGID                      = 327
+       SYS___PTHREAD_KILL                 = 328
+       SYS___PTHREAD_SIGMASK              = 329
+       SYS___SIGWAIT                      = 330
+       SYS___DISABLE_THREADSIGNAL         = 331
+       SYS___PTHREAD_MARKCANCEL           = 332
+       SYS___PTHREAD_CANCELED             = 333
+       SYS___SEMWAIT_SIGNAL               = 334
+       SYS_PROC_INFO                      = 336
+       SYS_SENDFILE                       = 337
+       SYS_STAT64                         = 338
+       SYS_FSTAT64                        = 339
+       SYS_LSTAT64                        = 340
+       SYS_STAT64_EXTENDED                = 341
+       SYS_LSTAT64_EXTENDED               = 342
+       SYS_FSTAT64_EXTENDED               = 343
+       SYS_GETDIRENTRIES64                = 344
+       SYS_STATFS64                       = 345
+       SYS_FSTATFS64                      = 346
+       SYS_GETFSSTAT64                    = 347
+       SYS___PTHREAD_CHDIR                = 348
+       SYS___PTHREAD_FCHDIR               = 349
+       SYS_AUDIT                          = 350
+       SYS_AUDITON                        = 351
+       SYS_GETAUID                        = 353
+       SYS_SETAUID                        = 354
+       SYS_GETAUDIT_ADDR                  = 357
+       SYS_SETAUDIT_ADDR                  = 358
+       SYS_AUDITCTL                       = 359
+       SYS_BSDTHREAD_CREATE               = 360
+       SYS_BSDTHREAD_TERMINATE            = 361
+       SYS_KQUEUE                         = 362
+       SYS_KEVENT                         = 363
+       SYS_LCHOWN                         = 364
+       SYS_BSDTHREAD_REGISTER             = 366
+       SYS_WORKQ_OPEN                     = 367
+       SYS_WORKQ_KERNRETURN               = 368
+       SYS_KEVENT64                       = 369
+       SYS___OLD_SEMWAIT_SIGNAL           = 370
+       SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371
+       SYS_THREAD_SELFID                  = 372
+       SYS_LEDGER                         = 373
+       SYS_KEVENT_QOS                     = 374
+       SYS_KEVENT_ID                      = 375
+       SYS___MAC_EXECVE                   = 380
+       SYS___MAC_SYSCALL                  = 381
+       SYS___MAC_GET_FILE                 = 382
+       SYS___MAC_SET_FILE                 = 383
+       SYS___MAC_GET_LINK                 = 384
+       SYS___MAC_SET_LINK                 = 385
+       SYS___MAC_GET_PROC                 = 386
+       SYS___MAC_SET_PROC                 = 387
+       SYS___MAC_GET_FD                   = 388
+       SYS___MAC_SET_FD                   = 389
+       SYS___MAC_GET_PID                  = 390
+       SYS_PSELECT                        = 394
+       SYS_PSELECT_NOCANCEL               = 395
+       SYS_READ_NOCANCEL                  = 396
+       SYS_WRITE_NOCANCEL                 = 397
+       SYS_OPEN_NOCANCEL                  = 398
+       SYS_CLOSE_NOCANCEL                 = 399
+       SYS_WAIT4_NOCANCEL                 = 400
+       SYS_RECVMSG_NOCANCEL               = 401
+       SYS_SENDMSG_NOCANCEL               = 402
+       SYS_RECVFROM_NOCANCEL              = 403
+       SYS_ACCEPT_NOCANCEL                = 404
+       SYS_MSYNC_NOCANCEL                 = 405
+       SYS_FCNTL_NOCANCEL                 = 406
+       SYS_SELECT_NOCANCEL                = 407
+       SYS_FSYNC_NOCANCEL                 = 408
+       SYS_CONNECT_NOCANCEL               = 409
+       SYS_SIGSUSPEND_NOCANCEL            = 410
+       SYS_READV_NOCANCEL                 = 411
+       SYS_WRITEV_NOCANCEL                = 412
+       SYS_SENDTO_NOCANCEL                = 413
+       SYS_PREAD_NOCANCEL                 = 414
+       SYS_PWRITE_NOCANCEL                = 415
+       SYS_WAITID_NOCANCEL                = 416
+       SYS_POLL_NOCANCEL                  = 417
+       SYS_MSGSND_NOCANCEL                = 418
+       SYS_MSGRCV_NOCANCEL                = 419
+       SYS_SEM_WAIT_NOCANCEL              = 420
+       SYS_AIO_SUSPEND_NOCANCEL           = 421
+       SYS___SIGWAIT_NOCANCEL             = 422
+       SYS___SEMWAIT_SIGNAL_NOCANCEL      = 423
+       SYS___MAC_MOUNT                    = 424
+       SYS___MAC_GET_MOUNT                = 425
+       SYS___MAC_GETFSSTAT                = 426
+       SYS_FSGETPATH                      = 427
+       SYS_AUDIT_SESSION_SELF             = 428
+       SYS_AUDIT_SESSION_JOIN             = 429
+       SYS_FILEPORT_MAKEPORT              = 430
+       SYS_FILEPORT_MAKEFD                = 431
+       SYS_AUDIT_SESSION_PORT             = 432
+       SYS_PID_SUSPEND                    = 433
+       SYS_PID_RESUME                     = 434
+       SYS_PID_HIBERNATE                  = 435
+       SYS_PID_SHUTDOWN_SOCKETS           = 436
+       SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
+       SYS_KAS_INFO                       = 439
+       SYS_MEMORYSTATUS_CONTROL           = 440
+       SYS_GUARDED_OPEN_NP                = 441
+       SYS_GUARDED_CLOSE_NP               = 442
+       SYS_GUARDED_KQUEUE_NP              = 443
+       SYS_CHANGE_FDGUARD_NP              = 444
+       SYS_USRCTL                         = 445
+       SYS_PROC_RLIMIT_CONTROL            = 446
+       SYS_CONNECTX                       = 447
+       SYS_DISCONNECTX                    = 448
+       SYS_PEELOFF                        = 449
+       SYS_SOCKET_DELEGATE                = 450
+       SYS_TELEMETRY                      = 451
+       SYS_PROC_UUID_POLICY               = 452
+       SYS_MEMORYSTATUS_GET_LEVEL         = 453
+       SYS_SYSTEM_OVERRIDE                = 454
+       SYS_VFS_PURGE                      = 455
+       SYS_SFI_CTL                        = 456
+       SYS_SFI_PIDCTL                     = 457
+       SYS_COALITION                      = 458
+       SYS_COALITION_INFO                 = 459
+       SYS_NECP_MATCH_POLICY              = 460
+       SYS_GETATTRLISTBULK                = 461
+       SYS_CLONEFILEAT                    = 462
+       SYS_OPENAT                         = 463
+       SYS_OPENAT_NOCANCEL                = 464
+       SYS_RENAMEAT                       = 465
+       SYS_FACCESSAT                      = 466
+       SYS_FCHMODAT                       = 467
+       SYS_FCHOWNAT                       = 468
+       SYS_FSTATAT                        = 469
+       SYS_FSTATAT64                      = 470
+       SYS_LINKAT                         = 471
+       SYS_UNLINKAT                       = 472
+       SYS_READLINKAT                     = 473
+       SYS_SYMLINKAT                      = 474
+       SYS_MKDIRAT                        = 475
+       SYS_GETATTRLISTAT                  = 476
+       SYS_PROC_TRACE_LOG                 = 477
+       SYS_BSDTHREAD_CTL                  = 478
+       SYS_OPENBYID_NP                    = 479
+       SYS_RECVMSG_X                      = 480
+       SYS_SENDMSG_X                      = 481
+       SYS_THREAD_SELFUSAGE               = 482
+       SYS_CSRCTL                         = 483
+       SYS_GUARDED_OPEN_DPROTECTED_NP     = 484
+       SYS_GUARDED_WRITE_NP               = 485
+       SYS_GUARDED_PWRITE_NP              = 486
+       SYS_GUARDED_WRITEV_NP              = 487
+       SYS_RENAMEATX_NP                   = 488
+       SYS_MREMAP_ENCRYPTED               = 489
+       SYS_NETAGENT_TRIGGER               = 490
+       SYS_STACK_SNAPSHOT_WITH_CONFIG     = 491
+       SYS_MICROSTACKSHOT                 = 492
+       SYS_GRAB_PGO_DATA                  = 493
+       SYS_PERSONA                        = 494
+       SYS_WORK_INTERVAL_CTL              = 499
+       SYS_GETENTROPY                     = 500
+       SYS_NECP_OPEN                      = 501
+       SYS_NECP_CLIENT_ACTION             = 502
+       SYS___NEXUS_OPEN                   = 503
+       SYS___NEXUS_REGISTER               = 504
+       SYS___NEXUS_DEREGISTER             = 505
+       SYS___NEXUS_CREATE                 = 506
+       SYS___NEXUS_DESTROY                = 507
+       SYS___NEXUS_GET_OPT                = 508
+       SYS___NEXUS_SET_OPT                = 509
+       SYS___CHANNEL_OPEN                 = 510
+       SYS___CHANNEL_GET_INFO             = 511
+       SYS___CHANNEL_SYNC                 = 512
+       SYS___CHANNEL_GET_OPT              = 513
+       SYS___CHANNEL_SET_OPT              = 514
+       SYS_ULOCK_WAIT                     = 515
+       SYS_ULOCK_WAKE                     = 516
+       SYS_FCLONEFILEAT                   = 517
+       SYS_FS_SNAPSHOT                    = 518
+       SYS_TERMINATE_WITH_PAYLOAD         = 520
+       SYS_ABORT_WITH_PAYLOAD             = 521
+       SYS_NECP_SESSION_OPEN              = 522
+       SYS_NECP_SESSION_ACTION            = 523
+       SYS_SETATTRLISTAT                  = 524
+       SYS_NET_QOS_GUIDELINE              = 525
+       SYS_FMOUNT                         = 526
+       SYS_NTP_ADJTIME                    = 527
+       SYS_NTP_GETTIME                    = 528
+       SYS_OS_FAULT_WITH_PAYLOAD          = 529
+       SYS_KQUEUE_WORKLOOP_CTL            = 530
+       SYS___MACH_BRIDGE_REMOTE_TIME      = 531
+       SYS_MAXSYSCALL                     = 532
+       SYS_INVALID                        = 63
+)
diff --git a/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go
new file mode 100644 (file)
index 0000000..20d7808
--- /dev/null
@@ -0,0 +1,437 @@
+// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build arm,darwin
+
+package unix
+
+// Deprecated: Use libSystem wrappers instead of direct syscalls.
+const (
+       SYS_SYSCALL                        = 0
+       SYS_EXIT                           = 1
+       SYS_FORK                           = 2
+       SYS_READ                           = 3
+       SYS_WRITE                          = 4
+       SYS_OPEN                           = 5
+       SYS_CLOSE                          = 6
+       SYS_WAIT4                          = 7
+       SYS_LINK                           = 9
+       SYS_UNLINK                         = 10
+       SYS_CHDIR                          = 12
+       SYS_FCHDIR                         = 13
+       SYS_MKNOD                          = 14
+       SYS_CHMOD                          = 15
+       SYS_CHOWN                          = 16
+       SYS_GETFSSTAT                      = 18
+       SYS_GETPID                         = 20
+       SYS_SETUID                         = 23
+       SYS_GETUID                         = 24
+       SYS_GETEUID                        = 25
+       SYS_PTRACE                         = 26
+       SYS_RECVMSG                        = 27
+       SYS_SENDMSG                        = 28
+       SYS_RECVFROM                       = 29
+       SYS_ACCEPT                         = 30
+       SYS_GETPEERNAME                    = 31
+       SYS_GETSOCKNAME                    = 32
+       SYS_ACCESS                         = 33
+       SYS_CHFLAGS                        = 34
+       SYS_FCHFLAGS                       = 35
+       SYS_SYNC                           = 36
+       SYS_KILL                           = 37
+       SYS_GETPPID                        = 39
+       SYS_DUP                            = 41
+       SYS_PIPE                           = 42
+       SYS_GETEGID                        = 43
+       SYS_SIGACTION                      = 46
+       SYS_GETGID                         = 47
+       SYS_SIGPROCMASK                    = 48
+       SYS_GETLOGIN                       = 49
+       SYS_SETLOGIN                       = 50
+       SYS_ACCT                           = 51
+       SYS_SIGPENDING                     = 52
+       SYS_SIGALTSTACK                    = 53
+       SYS_IOCTL                          = 54
+       SYS_REBOOT                         = 55
+       SYS_REVOKE                         = 56
+       SYS_SYMLINK                        = 57
+       SYS_READLINK                       = 58
+       SYS_EXECVE                         = 59
+       SYS_UMASK                          = 60
+       SYS_CHROOT                         = 61
+       SYS_MSYNC                          = 65
+       SYS_VFORK                          = 66
+       SYS_MUNMAP                         = 73
+       SYS_MPROTECT                       = 74
+       SYS_MADVISE                        = 75
+       SYS_MINCORE                        = 78
+       SYS_GETGROUPS                      = 79
+       SYS_SETGROUPS                      = 80
+       SYS_GETPGRP                        = 81
+       SYS_SETPGID                        = 82
+       SYS_SETITIMER                      = 83
+       SYS_SWAPON                         = 85
+       SYS_GETITIMER                      = 86
+       SYS_GETDTABLESIZE                  = 89
+       SYS_DUP2                           = 90
+       SYS_FCNTL                          = 92
+       SYS_SELECT                         = 93
+       SYS_FSYNC                          = 95
+       SYS_SETPRIORITY                    = 96
+       SYS_SOCKET                         = 97
+       SYS_CONNECT                        = 98
+       SYS_GETPRIORITY                    = 100
+       SYS_BIND                           = 104
+       SYS_SETSOCKOPT                     = 105
+       SYS_LISTEN                         = 106
+       SYS_SIGSUSPEND                     = 111
+       SYS_GETTIMEOFDAY                   = 116
+       SYS_GETRUSAGE                      = 117
+       SYS_GETSOCKOPT                     = 118
+       SYS_READV                          = 120
+       SYS_WRITEV                         = 121
+       SYS_SETTIMEOFDAY                   = 122
+       SYS_FCHOWN                         = 123
+       SYS_FCHMOD                         = 124
+       SYS_SETREUID                       = 126
+       SYS_SETREGID                       = 127
+       SYS_RENAME                         = 128
+       SYS_FLOCK                          = 131
+       SYS_MKFIFO                         = 132
+       SYS_SENDTO                         = 133
+       SYS_SHUTDOWN                       = 134
+       SYS_SOCKETPAIR                     = 135
+       SYS_MKDIR                          = 136
+       SYS_RMDIR                          = 137
+       SYS_UTIMES                         = 138
+       SYS_FUTIMES                        = 139
+       SYS_ADJTIME                        = 140
+       SYS_GETHOSTUUID                    = 142
+       SYS_SETSID                         = 147
+       SYS_GETPGID                        = 151
+       SYS_SETPRIVEXEC                    = 152
+       SYS_PREAD                          = 153
+       SYS_PWRITE                         = 154
+       SYS_NFSSVC                         = 155
+       SYS_STATFS                         = 157
+       SYS_FSTATFS                        = 158
+       SYS_UNMOUNT                        = 159
+       SYS_GETFH                          = 161
+       SYS_QUOTACTL                       = 165
+       SYS_MOUNT                          = 167
+       SYS_CSOPS                          = 169
+       SYS_CSOPS_AUDITTOKEN               = 170
+       SYS_WAITID                         = 173
+       SYS_KDEBUG_TYPEFILTER              = 177
+       SYS_KDEBUG_TRACE_STRING            = 178
+       SYS_KDEBUG_TRACE64                 = 179
+       SYS_KDEBUG_TRACE                   = 180
+       SYS_SETGID                         = 181
+       SYS_SETEGID                        = 182
+       SYS_SETEUID                        = 183
+       SYS_SIGRETURN                      = 184
+       SYS_THREAD_SELFCOUNTS              = 186
+       SYS_FDATASYNC                      = 187
+       SYS_STAT                           = 188
+       SYS_FSTAT                          = 189
+       SYS_LSTAT                          = 190
+       SYS_PATHCONF                       = 191
+       SYS_FPATHCONF                      = 192
+       SYS_GETRLIMIT                      = 194
+       SYS_SETRLIMIT                      = 195
+       SYS_GETDIRENTRIES                  = 196
+       SYS_MMAP                           = 197
+       SYS_LSEEK                          = 199
+       SYS_TRUNCATE                       = 200
+       SYS_FTRUNCATE                      = 201
+       SYS_SYSCTL                         = 202
+       SYS_MLOCK                          = 203
+       SYS_MUNLOCK                        = 204
+       SYS_UNDELETE                       = 205
+       SYS_OPEN_DPROTECTED_NP             = 216
+       SYS_GETATTRLIST                    = 220
+       SYS_SETATTRLIST                    = 221
+       SYS_GETDIRENTRIESATTR              = 222
+       SYS_EXCHANGEDATA                   = 223
+       SYS_SEARCHFS                       = 225
+       SYS_DELETE                         = 226
+       SYS_COPYFILE                       = 227
+       SYS_FGETATTRLIST                   = 228
+       SYS_FSETATTRLIST                   = 229
+       SYS_POLL                           = 230
+       SYS_WATCHEVENT                     = 231
+       SYS_WAITEVENT                      = 232
+       SYS_MODWATCH                       = 233
+       SYS_GETXATTR                       = 234
+       SYS_FGETXATTR                      = 235
+       SYS_SETXATTR                       = 236
+       SYS_FSETXATTR                      = 237
+       SYS_REMOVEXATTR                    = 238
+       SYS_FREMOVEXATTR                   = 239
+       SYS_LISTXATTR                      = 240
+       SYS_FLISTXATTR                     = 241
+       SYS_FSCTL                          = 242
+       SYS_INITGROUPS                     = 243
+       SYS_POSIX_SPAWN                    = 244
+       SYS_FFSCTL                         = 245
+       SYS_NFSCLNT                        = 247
+       SYS_FHOPEN                         = 248
+       SYS_MINHERIT                       = 250
+       SYS_SEMSYS                         = 251
+       SYS_MSGSYS                         = 252
+       SYS_SHMSYS                         = 253
+       SYS_SEMCTL                         = 254
+       SYS_SEMGET                         = 255
+       SYS_SEMOP                          = 256
+       SYS_MSGCTL                         = 258
+       SYS_MSGGET                         = 259
+       SYS_MSGSND                         = 260
+       SYS_MSGRCV                         = 261
+       SYS_SHMAT                          = 262
+       SYS_SHMCTL                         = 263
+       SYS_SHMDT                          = 264
+       SYS_SHMGET                         = 265
+       SYS_SHM_OPEN                       = 266
+       SYS_SHM_UNLINK                     = 267
+       SYS_SEM_OPEN                       = 268
+       SYS_SEM_CLOSE                      = 269
+       SYS_SEM_UNLINK                     = 270
+       SYS_SEM_WAIT                       = 271
+       SYS_SEM_TRYWAIT                    = 272
+       SYS_SEM_POST                       = 273
+       SYS_SYSCTLBYNAME                   = 274
+       SYS_OPEN_EXTENDED                  = 277
+       SYS_UMASK_EXTENDED                 = 278
+       SYS_STAT_EXTENDED                  = 279
+       SYS_LSTAT_EXTENDED                 = 280
+       SYS_FSTAT_EXTENDED                 = 281
+       SYS_CHMOD_EXTENDED                 = 282
+       SYS_FCHMOD_EXTENDED                = 283
+       SYS_ACCESS_EXTENDED                = 284
+       SYS_SETTID                         = 285
+       SYS_GETTID                         = 286
+       SYS_SETSGROUPS                     = 287
+       SYS_GETSGROUPS                     = 288
+       SYS_SETWGROUPS                     = 289
+       SYS_GETWGROUPS                     = 290
+       SYS_MKFIFO_EXTENDED                = 291
+       SYS_MKDIR_EXTENDED                 = 292
+       SYS_IDENTITYSVC                    = 293
+       SYS_SHARED_REGION_CHECK_NP         = 294
+       SYS_VM_PRESSURE_MONITOR            = 296
+       SYS_PSYNCH_RW_LONGRDLOCK           = 297
+       SYS_PSYNCH_RW_YIELDWRLOCK          = 298
+       SYS_PSYNCH_RW_DOWNGRADE            = 299
+       SYS_PSYNCH_RW_UPGRADE              = 300
+       SYS_PSYNCH_MUTEXWAIT               = 301
+       SYS_PSYNCH_MUTEXDROP               = 302
+       SYS_PSYNCH_CVBROAD                 = 303
+       SYS_PSYNCH_CVSIGNAL                = 304
+       SYS_PSYNCH_CVWAIT                  = 305
+       SYS_PSYNCH_RW_RDLOCK               = 306
+       SYS_PSYNCH_RW_WRLOCK               = 307
+       SYS_PSYNCH_RW_UNLOCK               = 308
+       SYS_PSYNCH_RW_UNLOCK2              = 309
+       SYS_GETSID                         = 310
+       SYS_SETTID_WITH_PID                = 311
+       SYS_PSYNCH_CVCLRPREPOST            = 312
+       SYS_AIO_FSYNC                      = 313
+       SYS_AIO_RETURN                     = 314
+       SYS_AIO_SUSPEND                    = 315
+       SYS_AIO_CANCEL                     = 316
+       SYS_AIO_ERROR                      = 317
+       SYS_AIO_READ                       = 318
+       SYS_AIO_WRITE                      = 319
+       SYS_LIO_LISTIO                     = 320
+       SYS_IOPOLICYSYS                    = 322
+       SYS_PROCESS_POLICY                 = 323
+       SYS_MLOCKALL                       = 324
+       SYS_MUNLOCKALL                     = 325
+       SYS_ISSETUGID                      = 327
+       SYS___PTHREAD_KILL                 = 328
+       SYS___PTHREAD_SIGMASK              = 329
+       SYS___SIGWAIT                      = 330
+       SYS___DISABLE_THREADSIGNAL         = 331
+       SYS___PTHREAD_MARKCANCEL           = 332
+       SYS___PTHREAD_CANCELED             = 333
+       SYS___SEMWAIT_SIGNAL               = 334
+       SYS_PROC_INFO                      = 336
+       SYS_SENDFILE                       = 337
+       SYS_STAT64                         = 338
+       SYS_FSTAT64                        = 339
+       SYS_LSTAT64                        = 340
+       SYS_STAT64_EXTENDED                = 341
+       SYS_LSTAT64_EXTENDED               = 342
+       SYS_FSTAT64_EXTENDED               = 343
+       SYS_GETDIRENTRIES64                = 344
+       SYS_STATFS64                       = 345
+       SYS_FSTATFS64                      = 346
+       SYS_GETFSSTAT64                    = 347
+       SYS___PTHREAD_CHDIR                = 348
+       SYS___PTHREAD_FCHDIR               = 349
+       SYS_AUDIT                          = 350
+       SYS_AUDITON                        = 351
+       SYS_GETAUID                        = 353
+       SYS_SETAUID                        = 354
+       SYS_GETAUDIT_ADDR                  = 357
+       SYS_SETAUDIT_ADDR                  = 358
+       SYS_AUDITCTL                       = 359
+       SYS_BSDTHREAD_CREATE               = 360
+       SYS_BSDTHREAD_TERMINATE            = 361
+       SYS_KQUEUE                         = 362
+       SYS_KEVENT                         = 363
+       SYS_LCHOWN                         = 364
+       SYS_BSDTHREAD_REGISTER             = 366
+       SYS_WORKQ_OPEN                     = 367
+       SYS_WORKQ_KERNRETURN               = 368
+       SYS_KEVENT64                       = 369
+       SYS___OLD_SEMWAIT_SIGNAL           = 370
+       SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371
+       SYS_THREAD_SELFID                  = 372
+       SYS_LEDGER                         = 373
+       SYS_KEVENT_QOS                     = 374
+       SYS_KEVENT_ID                      = 375
+       SYS___MAC_EXECVE                   = 380
+       SYS___MAC_SYSCALL                  = 381
+       SYS___MAC_GET_FILE                 = 382
+       SYS___MAC_SET_FILE                 = 383
+       SYS___MAC_GET_LINK                 = 384
+       SYS___MAC_SET_LINK                 = 385
+       SYS___MAC_GET_PROC                 = 386
+       SYS___MAC_SET_PROC                 = 387
+       SYS___MAC_GET_FD                   = 388
+       SYS___MAC_SET_FD                   = 389
+       SYS___MAC_GET_PID                  = 390
+       SYS_PSELECT                        = 394
+       SYS_PSELECT_NOCANCEL               = 395
+       SYS_READ_NOCANCEL                  = 396
+       SYS_WRITE_NOCANCEL                 = 397
+       SYS_OPEN_NOCANCEL                  = 398
+       SYS_CLOSE_NOCANCEL                 = 399
+       SYS_WAIT4_NOCANCEL                 = 400
+       SYS_RECVMSG_NOCANCEL               = 401
+       SYS_SENDMSG_NOCANCEL               = 402
+       SYS_RECVFROM_NOCANCEL              = 403
+       SYS_ACCEPT_NOCANCEL                = 404
+       SYS_MSYNC_NOCANCEL                 = 405
+       SYS_FCNTL_NOCANCEL                 = 406
+       SYS_SELECT_NOCANCEL                = 407
+       SYS_FSYNC_NOCANCEL                 = 408
+       SYS_CONNECT_NOCANCEL               = 409
+       SYS_SIGSUSPEND_NOCANCEL            = 410
+       SYS_READV_NOCANCEL                 = 411
+       SYS_WRITEV_NOCANCEL                = 412
+       SYS_SENDTO_NOCANCEL                = 413
+       SYS_PREAD_NOCANCEL                 = 414
+       SYS_PWRITE_NOCANCEL                = 415
+       SYS_WAITID_NOCANCEL                = 416
+       SYS_POLL_NOCANCEL                  = 417
+       SYS_MSGSND_NOCANCEL                = 418
+       SYS_MSGRCV_NOCANCEL                = 419
+       SYS_SEM_WAIT_NOCANCEL              = 420
+       SYS_AIO_SUSPEND_NOCANCEL           = 421
+       SYS___SIGWAIT_NOCANCEL             = 422
+       SYS___SEMWAIT_SIGNAL_NOCANCEL      = 423
+       SYS___MAC_MOUNT                    = 424
+       SYS___MAC_GET_MOUNT                = 425
+       SYS___MAC_GETFSSTAT                = 426
+       SYS_FSGETPATH                      = 427
+       SYS_AUDIT_SESSION_SELF             = 428
+       SYS_AUDIT_SESSION_JOIN             = 429
+       SYS_FILEPORT_MAKEPORT              = 430
+       SYS_FILEPORT_MAKEFD                = 431
+       SYS_AUDIT_SESSION_PORT             = 432
+       SYS_PID_SUSPEND                    = 433
+       SYS_PID_RESUME                     = 434
+       SYS_PID_HIBERNATE                  = 435
+       SYS_PID_SHUTDOWN_SOCKETS           = 436
+       SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
+       SYS_KAS_INFO                       = 439
+       SYS_MEMORYSTATUS_CONTROL           = 440
+       SYS_GUARDED_OPEN_NP                = 441
+       SYS_GUARDED_CLOSE_NP               = 442
+       SYS_GUARDED_KQUEUE_NP              = 443
+       SYS_CHANGE_FDGUARD_NP              = 444
+       SYS_USRCTL                         = 445
+       SYS_PROC_RLIMIT_CONTROL            = 446
+       SYS_CONNECTX                       = 447
+       SYS_DISCONNECTX                    = 448
+       SYS_PEELOFF                        = 449
+       SYS_SOCKET_DELEGATE                = 450
+       SYS_TELEMETRY                      = 451
+       SYS_PROC_UUID_POLICY               = 452
+       SYS_MEMORYSTATUS_GET_LEVEL         = 453
+       SYS_SYSTEM_OVERRIDE                = 454
+       SYS_VFS_PURGE                      = 455
+       SYS_SFI_CTL                        = 456
+       SYS_SFI_PIDCTL                     = 457
+       SYS_COALITION                      = 458
+       SYS_COALITION_INFO                 = 459
+       SYS_NECP_MATCH_POLICY              = 460
+       SYS_GETATTRLISTBULK                = 461
+       SYS_CLONEFILEAT                    = 462
+       SYS_OPENAT                         = 463
+       SYS_OPENAT_NOCANCEL                = 464
+       SYS_RENAMEAT                       = 465
+       SYS_FACCESSAT                      = 466
+       SYS_FCHMODAT                       = 467
+       SYS_FCHOWNAT                       = 468
+       SYS_FSTATAT                        = 469
+       SYS_FSTATAT64                      = 470
+       SYS_LINKAT                         = 471
+       SYS_UNLINKAT                       = 472
+       SYS_READLINKAT                     = 473
+       SYS_SYMLINKAT                      = 474
+       SYS_MKDIRAT                        = 475
+       SYS_GETATTRLISTAT                  = 476
+       SYS_PROC_TRACE_LOG                 = 477
+       SYS_BSDTHREAD_CTL                  = 478
+       SYS_OPENBYID_NP                    = 479
+       SYS_RECVMSG_X                      = 480
+       SYS_SENDMSG_X                      = 481
+       SYS_THREAD_SELFUSAGE               = 482
+       SYS_CSRCTL                         = 483
+       SYS_GUARDED_OPEN_DPROTECTED_NP     = 484
+       SYS_GUARDED_WRITE_NP               = 485
+       SYS_GUARDED_PWRITE_NP              = 486
+       SYS_GUARDED_WRITEV_NP              = 487
+       SYS_RENAMEATX_NP                   = 488
+       SYS_MREMAP_ENCRYPTED               = 489
+       SYS_NETAGENT_TRIGGER               = 490
+       SYS_STACK_SNAPSHOT_WITH_CONFIG     = 491
+       SYS_MICROSTACKSHOT                 = 492
+       SYS_GRAB_PGO_DATA                  = 493
+       SYS_PERSONA                        = 494
+       SYS_WORK_INTERVAL_CTL              = 499
+       SYS_GETENTROPY                     = 500
+       SYS_NECP_OPEN                      = 501
+       SYS_NECP_CLIENT_ACTION             = 502
+       SYS___NEXUS_OPEN                   = 503
+       SYS___NEXUS_REGISTER               = 504
+       SYS___NEXUS_DEREGISTER             = 505
+       SYS___NEXUS_CREATE                 = 506
+       SYS___NEXUS_DESTROY                = 507
+       SYS___NEXUS_GET_OPT                = 508
+       SYS___NEXUS_SET_OPT                = 509
+       SYS___CHANNEL_OPEN                 = 510
+       SYS___CHANNEL_GET_INFO             = 511
+       SYS___CHANNEL_SYNC                 = 512
+       SYS___CHANNEL_GET_OPT              = 513
+       SYS___CHANNEL_SET_OPT              = 514
+       SYS_ULOCK_WAIT                     = 515
+       SYS_ULOCK_WAKE                     = 516
+       SYS_FCLONEFILEAT                   = 517
+       SYS_FS_SNAPSHOT                    = 518
+       SYS_TERMINATE_WITH_PAYLOAD         = 520
+       SYS_ABORT_WITH_PAYLOAD             = 521
+       SYS_NECP_SESSION_OPEN              = 522
+       SYS_NECP_SESSION_ACTION            = 523
+       SYS_SETATTRLISTAT                  = 524
+       SYS_NET_QOS_GUIDELINE              = 525
+       SYS_FMOUNT                         = 526
+       SYS_NTP_ADJTIME                    = 527
+       SYS_NTP_GETTIME                    = 528
+       SYS_OS_FAULT_WITH_PAYLOAD          = 529
+       SYS_MAXSYSCALL                     = 530
+       SYS_INVALID                        = 63
+)
diff --git a/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go
new file mode 100644 (file)
index 0000000..527b958
--- /dev/null
@@ -0,0 +1,437 @@
+// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build arm64,darwin
+
+package unix
+
+// Deprecated: Use libSystem wrappers instead of direct syscalls.
+const (
+       SYS_SYSCALL                        = 0
+       SYS_EXIT                           = 1
+       SYS_FORK                           = 2
+       SYS_READ                           = 3
+       SYS_WRITE                          = 4
+       SYS_OPEN                           = 5
+       SYS_CLOSE                          = 6
+       SYS_WAIT4                          = 7
+       SYS_LINK                           = 9
+       SYS_UNLINK                         = 10
+       SYS_CHDIR                          = 12
+       SYS_FCHDIR                         = 13
+       SYS_MKNOD                          = 14
+       SYS_CHMOD                          = 15
+       SYS_CHOWN                          = 16
+       SYS_GETFSSTAT                      = 18
+       SYS_GETPID                         = 20
+       SYS_SETUID                         = 23
+       SYS_GETUID                         = 24
+       SYS_GETEUID                        = 25
+       SYS_PTRACE                         = 26
+       SYS_RECVMSG                        = 27
+       SYS_SENDMSG                        = 28
+       SYS_RECVFROM                       = 29
+       SYS_ACCEPT                         = 30
+       SYS_GETPEERNAME                    = 31
+       SYS_GETSOCKNAME                    = 32
+       SYS_ACCESS                         = 33
+       SYS_CHFLAGS                        = 34
+       SYS_FCHFLAGS                       = 35
+       SYS_SYNC                           = 36
+       SYS_KILL                           = 37
+       SYS_GETPPID                        = 39
+       SYS_DUP                            = 41
+       SYS_PIPE                           = 42
+       SYS_GETEGID                        = 43
+       SYS_SIGACTION                      = 46
+       SYS_GETGID                         = 47
+       SYS_SIGPROCMASK                    = 48
+       SYS_GETLOGIN                       = 49
+       SYS_SETLOGIN                       = 50
+       SYS_ACCT                           = 51
+       SYS_SIGPENDING                     = 52
+       SYS_SIGALTSTACK                    = 53
+       SYS_IOCTL                          = 54
+       SYS_REBOOT                         = 55
+       SYS_REVOKE                         = 56
+       SYS_SYMLINK                        = 57
+       SYS_READLINK                       = 58
+       SYS_EXECVE                         = 59
+       SYS_UMASK                          = 60
+       SYS_CHROOT                         = 61
+       SYS_MSYNC                          = 65
+       SYS_VFORK                          = 66
+       SYS_MUNMAP                         = 73
+       SYS_MPROTECT                       = 74
+       SYS_MADVISE                        = 75
+       SYS_MINCORE                        = 78
+       SYS_GETGROUPS                      = 79
+       SYS_SETGROUPS                      = 80
+       SYS_GETPGRP                        = 81
+       SYS_SETPGID                        = 82
+       SYS_SETITIMER                      = 83
+       SYS_SWAPON                         = 85
+       SYS_GETITIMER                      = 86
+       SYS_GETDTABLESIZE                  = 89
+       SYS_DUP2                           = 90
+       SYS_FCNTL                          = 92
+       SYS_SELECT                         = 93
+       SYS_FSYNC                          = 95
+       SYS_SETPRIORITY                    = 96
+       SYS_SOCKET                         = 97
+       SYS_CONNECT                        = 98
+       SYS_GETPRIORITY                    = 100
+       SYS_BIND                           = 104
+       SYS_SETSOCKOPT                     = 105
+       SYS_LISTEN                         = 106
+       SYS_SIGSUSPEND                     = 111
+       SYS_GETTIMEOFDAY                   = 116
+       SYS_GETRUSAGE                      = 117
+       SYS_GETSOCKOPT                     = 118
+       SYS_READV                          = 120
+       SYS_WRITEV                         = 121
+       SYS_SETTIMEOFDAY                   = 122
+       SYS_FCHOWN                         = 123
+       SYS_FCHMOD                         = 124
+       SYS_SETREUID                       = 126
+       SYS_SETREGID                       = 127
+       SYS_RENAME                         = 128
+       SYS_FLOCK                          = 131
+       SYS_MKFIFO                         = 132
+       SYS_SENDTO                         = 133
+       SYS_SHUTDOWN                       = 134
+       SYS_SOCKETPAIR                     = 135
+       SYS_MKDIR                          = 136
+       SYS_RMDIR                          = 137
+       SYS_UTIMES                         = 138
+       SYS_FUTIMES                        = 139
+       SYS_ADJTIME                        = 140
+       SYS_GETHOSTUUID                    = 142
+       SYS_SETSID                         = 147
+       SYS_GETPGID                        = 151
+       SYS_SETPRIVEXEC                    = 152
+       SYS_PREAD                          = 153
+       SYS_PWRITE                         = 154
+       SYS_NFSSVC                         = 155
+       SYS_STATFS                         = 157
+       SYS_FSTATFS                        = 158
+       SYS_UNMOUNT                        = 159
+       SYS_GETFH                          = 161
+       SYS_QUOTACTL                       = 165
+       SYS_MOUNT                          = 167
+       SYS_CSOPS                          = 169
+       SYS_CSOPS_AUDITTOKEN               = 170
+       SYS_WAITID                         = 173
+       SYS_KDEBUG_TYPEFILTER              = 177
+       SYS_KDEBUG_TRACE_STRING            = 178
+       SYS_KDEBUG_TRACE64                 = 179
+       SYS_KDEBUG_TRACE                   = 180
+       SYS_SETGID                         = 181
+       SYS_SETEGID                        = 182
+       SYS_SETEUID                        = 183
+       SYS_SIGRETURN                      = 184
+       SYS_THREAD_SELFCOUNTS              = 186
+       SYS_FDATASYNC                      = 187
+       SYS_STAT                           = 188
+       SYS_FSTAT                          = 189
+       SYS_LSTAT                          = 190
+       SYS_PATHCONF                       = 191
+       SYS_FPATHCONF                      = 192
+       SYS_GETRLIMIT                      = 194
+       SYS_SETRLIMIT                      = 195
+       SYS_GETDIRENTRIES                  = 196
+       SYS_MMAP                           = 197
+       SYS_LSEEK                          = 199
+       SYS_TRUNCATE                       = 200
+       SYS_FTRUNCATE                      = 201
+       SYS_SYSCTL                         = 202
+       SYS_MLOCK                          = 203
+       SYS_MUNLOCK                        = 204
+       SYS_UNDELETE                       = 205
+       SYS_OPEN_DPROTECTED_NP             = 216
+       SYS_GETATTRLIST                    = 220
+       SYS_SETATTRLIST                    = 221
+       SYS_GETDIRENTRIESATTR              = 222
+       SYS_EXCHANGEDATA                   = 223
+       SYS_SEARCHFS                       = 225
+       SYS_DELETE                         = 226
+       SYS_COPYFILE                       = 227
+       SYS_FGETATTRLIST                   = 228
+       SYS_FSETATTRLIST                   = 229
+       SYS_POLL                           = 230
+       SYS_WATCHEVENT                     = 231
+       SYS_WAITEVENT                      = 232
+       SYS_MODWATCH                       = 233
+       SYS_GETXATTR                       = 234
+       SYS_FGETXATTR                      = 235
+       SYS_SETXATTR                       = 236
+       SYS_FSETXATTR                      = 237
+       SYS_REMOVEXATTR                    = 238
+       SYS_FREMOVEXATTR                   = 239
+       SYS_LISTXATTR                      = 240
+       SYS_FLISTXATTR                     = 241
+       SYS_FSCTL                          = 242
+       SYS_INITGROUPS                     = 243
+       SYS_POSIX_SPAWN                    = 244
+       SYS_FFSCTL                         = 245
+       SYS_NFSCLNT                        = 247
+       SYS_FHOPEN                         = 248
+       SYS_MINHERIT                       = 250
+       SYS_SEMSYS                         = 251
+       SYS_MSGSYS                         = 252
+       SYS_SHMSYS                         = 253
+       SYS_SEMCTL                         = 254
+       SYS_SEMGET                         = 255
+       SYS_SEMOP                          = 256
+       SYS_MSGCTL                         = 258
+       SYS_MSGGET                         = 259
+       SYS_MSGSND                         = 260
+       SYS_MSGRCV                         = 261
+       SYS_SHMAT                          = 262
+       SYS_SHMCTL                         = 263
+       SYS_SHMDT                          = 264
+       SYS_SHMGET                         = 265
+       SYS_SHM_OPEN                       = 266
+       SYS_SHM_UNLINK                     = 267
+       SYS_SEM_OPEN                       = 268
+       SYS_SEM_CLOSE                      = 269
+       SYS_SEM_UNLINK                     = 270
+       SYS_SEM_WAIT                       = 271
+       SYS_SEM_TRYWAIT                    = 272
+       SYS_SEM_POST                       = 273
+       SYS_SYSCTLBYNAME                   = 274
+       SYS_OPEN_EXTENDED                  = 277
+       SYS_UMASK_EXTENDED                 = 278
+       SYS_STAT_EXTENDED                  = 279
+       SYS_LSTAT_EXTENDED                 = 280
+       SYS_FSTAT_EXTENDED                 = 281
+       SYS_CHMOD_EXTENDED                 = 282
+       SYS_FCHMOD_EXTENDED                = 283
+       SYS_ACCESS_EXTENDED                = 284
+       SYS_SETTID                         = 285
+       SYS_GETTID                         = 286
+       SYS_SETSGROUPS                     = 287
+       SYS_GETSGROUPS                     = 288
+       SYS_SETWGROUPS                     = 289
+       SYS_GETWGROUPS                     = 290
+       SYS_MKFIFO_EXTENDED                = 291
+       SYS_MKDIR_EXTENDED                 = 292
+       SYS_IDENTITYSVC                    = 293
+       SYS_SHARED_REGION_CHECK_NP         = 294
+       SYS_VM_PRESSURE_MONITOR            = 296
+       SYS_PSYNCH_RW_LONGRDLOCK           = 297
+       SYS_PSYNCH_RW_YIELDWRLOCK          = 298
+       SYS_PSYNCH_RW_DOWNGRADE            = 299
+       SYS_PSYNCH_RW_UPGRADE              = 300
+       SYS_PSYNCH_MUTEXWAIT               = 301
+       SYS_PSYNCH_MUTEXDROP               = 302
+       SYS_PSYNCH_CVBROAD                 = 303
+       SYS_PSYNCH_CVSIGNAL                = 304
+       SYS_PSYNCH_CVWAIT                  = 305
+       SYS_PSYNCH_RW_RDLOCK               = 306
+       SYS_PSYNCH_RW_WRLOCK               = 307
+       SYS_PSYNCH_RW_UNLOCK               = 308
+       SYS_PSYNCH_RW_UNLOCK2              = 309
+       SYS_GETSID                         = 310
+       SYS_SETTID_WITH_PID                = 311
+       SYS_PSYNCH_CVCLRPREPOST            = 312
+       SYS_AIO_FSYNC                      = 313
+       SYS_AIO_RETURN                     = 314
+       SYS_AIO_SUSPEND                    = 315
+       SYS_AIO_CANCEL                     = 316
+       SYS_AIO_ERROR                      = 317
+       SYS_AIO_READ                       = 318
+       SYS_AIO_WRITE                      = 319
+       SYS_LIO_LISTIO                     = 320
+       SYS_IOPOLICYSYS                    = 322
+       SYS_PROCESS_POLICY                 = 323
+       SYS_MLOCKALL                       = 324
+       SYS_MUNLOCKALL                     = 325
+       SYS_ISSETUGID                      = 327
+       SYS___PTHREAD_KILL                 = 328
+       SYS___PTHREAD_SIGMASK              = 329
+       SYS___SIGWAIT                      = 330
+       SYS___DISABLE_THREADSIGNAL         = 331
+       SYS___PTHREAD_MARKCANCEL           = 332
+       SYS___PTHREAD_CANCELED             = 333
+       SYS___SEMWAIT_SIGNAL               = 334
+       SYS_PROC_INFO                      = 336
+       SYS_SENDFILE                       = 337
+       SYS_STAT64                         = 338
+       SYS_FSTAT64                        = 339
+       SYS_LSTAT64                        = 340
+       SYS_STAT64_EXTENDED                = 341
+       SYS_LSTAT64_EXTENDED               = 342
+       SYS_FSTAT64_EXTENDED               = 343
+       SYS_GETDIRENTRIES64                = 344
+       SYS_STATFS64                       = 345
+       SYS_FSTATFS64                      = 346
+       SYS_GETFSSTAT64                    = 347
+       SYS___PTHREAD_CHDIR                = 348
+       SYS___PTHREAD_FCHDIR               = 349
+       SYS_AUDIT                          = 350
+       SYS_AUDITON                        = 351
+       SYS_GETAUID                        = 353
+       SYS_SETAUID                        = 354
+       SYS_GETAUDIT_ADDR                  = 357
+       SYS_SETAUDIT_ADDR                  = 358
+       SYS_AUDITCTL                       = 359
+       SYS_BSDTHREAD_CREATE               = 360
+       SYS_BSDTHREAD_TERMINATE            = 361
+       SYS_KQUEUE                         = 362
+       SYS_KEVENT                         = 363
+       SYS_LCHOWN                         = 364
+       SYS_BSDTHREAD_REGISTER             = 366
+       SYS_WORKQ_OPEN                     = 367
+       SYS_WORKQ_KERNRETURN               = 368
+       SYS_KEVENT64                       = 369
+       SYS___OLD_SEMWAIT_SIGNAL           = 370
+       SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371
+       SYS_THREAD_SELFID                  = 372
+       SYS_LEDGER                         = 373
+       SYS_KEVENT_QOS                     = 374
+       SYS_KEVENT_ID                      = 375
+       SYS___MAC_EXECVE                   = 380
+       SYS___MAC_SYSCALL                  = 381
+       SYS___MAC_GET_FILE                 = 382
+       SYS___MAC_SET_FILE                 = 383
+       SYS___MAC_GET_LINK                 = 384
+       SYS___MAC_SET_LINK                 = 385
+       SYS___MAC_GET_PROC                 = 386
+       SYS___MAC_SET_PROC                 = 387
+       SYS___MAC_GET_FD                   = 388
+       SYS___MAC_SET_FD                   = 389
+       SYS___MAC_GET_PID                  = 390
+       SYS_PSELECT                        = 394
+       SYS_PSELECT_NOCANCEL               = 395
+       SYS_READ_NOCANCEL                  = 396
+       SYS_WRITE_NOCANCEL                 = 397
+       SYS_OPEN_NOCANCEL                  = 398
+       SYS_CLOSE_NOCANCEL                 = 399
+       SYS_WAIT4_NOCANCEL                 = 400
+       SYS_RECVMSG_NOCANCEL               = 401
+       SYS_SENDMSG_NOCANCEL               = 402
+       SYS_RECVFROM_NOCANCEL              = 403
+       SYS_ACCEPT_NOCANCEL                = 404
+       SYS_MSYNC_NOCANCEL                 = 405
+       SYS_FCNTL_NOCANCEL                 = 406
+       SYS_SELECT_NOCANCEL                = 407
+       SYS_FSYNC_NOCANCEL                 = 408
+       SYS_CONNECT_NOCANCEL               = 409
+       SYS_SIGSUSPEND_NOCANCEL            = 410
+       SYS_READV_NOCANCEL                 = 411
+       SYS_WRITEV_NOCANCEL                = 412
+       SYS_SENDTO_NOCANCEL                = 413
+       SYS_PREAD_NOCANCEL                 = 414
+       SYS_PWRITE_NOCANCEL                = 415
+       SYS_WAITID_NOCANCEL                = 416
+       SYS_POLL_NOCANCEL                  = 417
+       SYS_MSGSND_NOCANCEL                = 418
+       SYS_MSGRCV_NOCANCEL                = 419
+       SYS_SEM_WAIT_NOCANCEL              = 420
+       SYS_AIO_SUSPEND_NOCANCEL           = 421
+       SYS___SIGWAIT_NOCANCEL             = 422
+       SYS___SEMWAIT_SIGNAL_NOCANCEL      = 423
+       SYS___MAC_MOUNT                    = 424
+       SYS___MAC_GET_MOUNT                = 425
+       SYS___MAC_GETFSSTAT                = 426
+       SYS_FSGETPATH                      = 427
+       SYS_AUDIT_SESSION_SELF             = 428
+       SYS_AUDIT_SESSION_JOIN             = 429
+       SYS_FILEPORT_MAKEPORT              = 430
+       SYS_FILEPORT_MAKEFD                = 431
+       SYS_AUDIT_SESSION_PORT             = 432
+       SYS_PID_SUSPEND                    = 433
+       SYS_PID_RESUME                     = 434
+       SYS_PID_HIBERNATE                  = 435
+       SYS_PID_SHUTDOWN_SOCKETS           = 436
+       SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
+       SYS_KAS_INFO                       = 439
+       SYS_MEMORYSTATUS_CONTROL           = 440
+       SYS_GUARDED_OPEN_NP                = 441
+       SYS_GUARDED_CLOSE_NP               = 442
+       SYS_GUARDED_KQUEUE_NP              = 443
+       SYS_CHANGE_FDGUARD_NP              = 444
+       SYS_USRCTL                         = 445
+       SYS_PROC_RLIMIT_CONTROL            = 446
+       SYS_CONNECTX                       = 447
+       SYS_DISCONNECTX                    = 448
+       SYS_PEELOFF                        = 449
+       SYS_SOCKET_DELEGATE                = 450
+       SYS_TELEMETRY                      = 451
+       SYS_PROC_UUID_POLICY               = 452
+       SYS_MEMORYSTATUS_GET_LEVEL         = 453
+       SYS_SYSTEM_OVERRIDE                = 454
+       SYS_VFS_PURGE                      = 455
+       SYS_SFI_CTL                        = 456
+       SYS_SFI_PIDCTL                     = 457
+       SYS_COALITION                      = 458
+       SYS_COALITION_INFO                 = 459
+       SYS_NECP_MATCH_POLICY              = 460
+       SYS_GETATTRLISTBULK                = 461
+       SYS_CLONEFILEAT                    = 462
+       SYS_OPENAT                         = 463
+       SYS_OPENAT_NOCANCEL                = 464
+       SYS_RENAMEAT                       = 465
+       SYS_FACCESSAT                      = 466
+       SYS_FCHMODAT                       = 467
+       SYS_FCHOWNAT                       = 468
+       SYS_FSTATAT                        = 469
+       SYS_FSTATAT64                      = 470
+       SYS_LINKAT                         = 471
+       SYS_UNLINKAT                       = 472
+       SYS_READLINKAT                     = 473
+       SYS_SYMLINKAT                      = 474
+       SYS_MKDIRAT                        = 475
+       SYS_GETATTRLISTAT                  = 476
+       SYS_PROC_TRACE_LOG                 = 477
+       SYS_BSDTHREAD_CTL                  = 478
+       SYS_OPENBYID_NP                    = 479
+       SYS_RECVMSG_X                      = 480
+       SYS_SENDMSG_X                      = 481
+       SYS_THREAD_SELFUSAGE               = 482
+       SYS_CSRCTL                         = 483
+       SYS_GUARDED_OPEN_DPROTECTED_NP     = 484
+       SYS_GUARDED_WRITE_NP               = 485
+       SYS_GUARDED_PWRITE_NP              = 486
+       SYS_GUARDED_WRITEV_NP              = 487
+       SYS_RENAMEATX_NP                   = 488
+       SYS_MREMAP_ENCRYPTED               = 489
+       SYS_NETAGENT_TRIGGER               = 490
+       SYS_STACK_SNAPSHOT_WITH_CONFIG     = 491
+       SYS_MICROSTACKSHOT                 = 492
+       SYS_GRAB_PGO_DATA                  = 493
+       SYS_PERSONA                        = 494
+       SYS_WORK_INTERVAL_CTL              = 499
+       SYS_GETENTROPY                     = 500
+       SYS_NECP_OPEN                      = 501
+       SYS_NECP_CLIENT_ACTION             = 502
+       SYS___NEXUS_OPEN                   = 503
+       SYS___NEXUS_REGISTER               = 504
+       SYS___NEXUS_DEREGISTER             = 505
+       SYS___NEXUS_CREATE                 = 506
+       SYS___NEXUS_DESTROY                = 507
+       SYS___NEXUS_GET_OPT                = 508
+       SYS___NEXUS_SET_OPT                = 509
+       SYS___CHANNEL_OPEN                 = 510
+       SYS___CHANNEL_GET_INFO             = 511
+       SYS___CHANNEL_SYNC                 = 512
+       SYS___CHANNEL_GET_OPT              = 513
+       SYS___CHANNEL_SET_OPT              = 514
+       SYS_ULOCK_WAIT                     = 515
+       SYS_ULOCK_WAKE                     = 516
+       SYS_FCLONEFILEAT                   = 517
+       SYS_FS_SNAPSHOT                    = 518
+       SYS_TERMINATE_WITH_PAYLOAD         = 520
+       SYS_ABORT_WITH_PAYLOAD             = 521
+       SYS_NECP_SESSION_OPEN              = 522
+       SYS_NECP_SESSION_ACTION            = 523
+       SYS_SETATTRLISTAT                  = 524
+       SYS_NET_QOS_GUIDELINE              = 525
+       SYS_FMOUNT                         = 526
+       SYS_NTP_ADJTIME                    = 527
+       SYS_NTP_GETTIME                    = 528
+       SYS_OS_FAULT_WITH_PAYLOAD          = 529
+       SYS_MAXSYSCALL                     = 530
+       SYS_INVALID                        = 63
+)
index 464c9a9832dc48b475196964669b72c01eb94f14..9912c6ee3d6ab183ea084d4c651b3a4b13d0f1ae 100644 (file)
 package unix
 
 const (
-       // SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int
-       SYS_EXIT          = 1   // { void exit(int rval); }
-       SYS_FORK          = 2   // { int fork(void); }
-       SYS_READ          = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }
-       SYS_WRITE         = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }
-       SYS_OPEN          = 5   // { int open(char *path, int flags, int mode); }
-       SYS_CLOSE         = 6   // { int close(int fd); }
-       SYS_WAIT4         = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int
-       SYS_LINK          = 9   // { int link(char *path, char *link); }
-       SYS_UNLINK        = 10  // { int unlink(char *path); }
-       SYS_CHDIR         = 12  // { int chdir(char *path); }
-       SYS_FCHDIR        = 13  // { int fchdir(int fd); }
-       SYS_MKNOD         = 14  // { int mknod(char *path, int mode, int dev); }
-       SYS_CHMOD         = 15  // { int chmod(char *path, int mode); }
-       SYS_CHOWN         = 16  // { int chown(char *path, int uid, int gid); }
-       SYS_OBREAK        = 17  // { int obreak(char *nsize); } break obreak_args int
-       SYS_GETFSSTAT     = 18  // { int getfsstat(struct statfs *buf, long bufsize, int flags); }
-       SYS_GETPID        = 20  // { pid_t getpid(void); }
-       SYS_MOUNT         = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }
-       SYS_UNMOUNT       = 22  // { int unmount(char *path, int flags); }
-       SYS_SETUID        = 23  // { int setuid(uid_t uid); }
-       SYS_GETUID        = 24  // { uid_t getuid(void); }
-       SYS_GETEUID       = 25  // { uid_t 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, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); }
-       SYS_ACCEPT        = 30  // { int accept(int s, caddr_t name, int *anamelen); }
-       SYS_GETPEERNAME   = 31  // { int getpeername(int fdes, caddr_t asa, int *alen); }
-       SYS_GETSOCKNAME   = 32  // { int getsockname(int fdes, caddr_t asa, int *alen); }
-       SYS_ACCESS        = 33  // { int access(char *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); }
-       SYS_GETPPID       = 39  // { pid_t getppid(void); }
-       SYS_DUP           = 41  // { int dup(int fd); }
-       SYS_PIPE          = 42  // { int pipe(void); }
-       SYS_GETEGID       = 43  // { gid_t getegid(void); }
-       SYS_PROFIL        = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }
-       SYS_KTRACE        = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }
-       SYS_GETGID        = 47  // { gid_t getgid(void); }
-       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_SIGALTSTACK   = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }
-       SYS_IOCTL         = 54  // { int ioctl(int fd, u_long com, caddr_t data); }
-       SYS_REBOOT        = 55  // { int reboot(int opt); }
-       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 **argv, char **envv); }
-       SYS_UMASK         = 60  // { int umask(int newmask); } umask umask_args int
-       SYS_CHROOT        = 61  // { int chroot(char *path); }
-       SYS_MSYNC         = 65  // { int msync(void *addr, size_t len, int flags); }
-       SYS_VFORK         = 66  // { pid_t vfork(void); }
-       SYS_SBRK          = 69  // { int sbrk(int incr); }
-       SYS_SSTK          = 70  // { int sstk(int incr); }
-       SYS_MUNMAP        = 73  // { int munmap(void *addr, size_t len); }
-       SYS_MPROTECT      = 74  // { int mprotect(void *addr, size_t len, int prot); }
-       SYS_MADVISE       = 75  // { int madvise(void *addr, size_t len, int behav); }
-       SYS_MINCORE       = 78  // { int mincore(const void *addr, size_t len, char *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_SWAPON        = 85  // { int swapon(char *name); }
-       SYS_GETITIMER     = 86  // { int getitimer(u_int which, struct itimerval *itv); }
-       SYS_GETDTABLESIZE = 89  // { int getdtablesize(void); }
-       SYS_DUP2          = 90  // { int dup2(int from, int to); }
-       SYS_FCNTL         = 92  // { int fcntl(int fd, int cmd, long arg); }
-       SYS_SELECT        = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-       SYS_FSYNC         = 95  // { int fsync(int fd); }
-       SYS_SETPRIORITY   = 96  // { int setpriority(int which, int who, int prio); }
-       SYS_SOCKET        = 97  // { int socket(int domain, int type, int protocol); }
-       SYS_CONNECT       = 98  // { int connect(int s, caddr_t name, int namelen); }
-       SYS_GETPRIORITY   = 100 // { int getpriority(int which, int who); }
-       SYS_BIND          = 104 // { int bind(int s, caddr_t name, int namelen); }
-       SYS_SETSOCKOPT    = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
-       SYS_LISTEN        = 106 // { int listen(int s, int backlog); }
-       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, int *avalsize); }
-       SYS_READV         = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
-       SYS_WRITEV        = 121 // { int 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_SETREUID      = 126 // { int setreuid(int ruid, int euid); }
-       SYS_SETREGID      = 127 // { int setregid(int rgid, int egid); }
-       SYS_RENAME        = 128 // { int rename(char *from, char *to); }
-       SYS_FLOCK         = 131 // { int flock(int fd, int how); }
-       SYS_MKFIFO        = 132 // { int mkfifo(char *path, int mode); }
-       SYS_SENDTO        = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
-       SYS_SHUTDOWN      = 134 // { int shutdown(int s, int how); }
-       SYS_SOCKETPAIR    = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
-       SYS_MKDIR         = 136 // { int mkdir(char *path, int mode); }
-       SYS_RMDIR         = 137 // { int rmdir(char *path); }
-       SYS_UTIMES        = 138 // { int utimes(char *path, struct timeval *tptr); }
-       SYS_ADJTIME       = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
-       SYS_SETSID        = 147 // { int setsid(void); }
-       SYS_QUOTACTL      = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
-       SYS_STATFS        = 157 // { int statfs(char *path, struct statfs *buf); }
-       SYS_FSTATFS       = 158 // { int fstatfs(int fd, struct statfs *buf); }
-       SYS_GETFH         = 161 // { int getfh(char *fname, struct fhandle *fhp); }
-       SYS_GETDOMAINNAME = 162 // { int getdomainname(char *domainname, int len); }
-       SYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); }
-       SYS_UNAME         = 164 // { int uname(struct utsname *name); }
-       SYS_SYSARCH       = 165 // { int sysarch(int op, char *parms); }
-       SYS_RTPRIO        = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
-       SYS_EXTPREAD      = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); }
-       SYS_EXTPWRITE     = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); }
-       SYS_NTP_ADJTIME   = 176 // { int ntp_adjtime(struct timex *tp); }
-       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_PATHCONF      = 191 // { int pathconf(char *path, int name); }
-       SYS_FPATHCONF     = 192 // { int fpathconf(int fd, int name); }
-       SYS_GETRLIMIT     = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
-       SYS_SETRLIMIT     = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
-       SYS_MMAP          = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); }
-       // SYS_NOSYS = 198;  // { int nosys(void); } __syscall __syscall_args int
+       SYS_EXIT  = 1 // { void exit(int rval); }
+       SYS_FORK  = 2 // { int fork(void); }
+       SYS_READ  = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }
+       SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }
+       SYS_OPEN  = 5 // { int open(char *path, int flags, int mode); }
+       SYS_CLOSE = 6 // { int close(int fd); }
+       SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int
+       // SYS_NOSYS = 8;  // { int nosys(void); } __nosys nosys_args int
+       SYS_LINK                   = 9   // { int link(char *path, char *link); }
+       SYS_UNLINK                 = 10  // { int unlink(char *path); }
+       SYS_CHDIR                  = 12  // { int chdir(char *path); }
+       SYS_FCHDIR                 = 13  // { int fchdir(int fd); }
+       SYS_MKNOD                  = 14  // { int mknod(char *path, int mode, int dev); }
+       SYS_CHMOD                  = 15  // { int chmod(char *path, int mode); }
+       SYS_CHOWN                  = 16  // { int chown(char *path, int uid, int gid); }
+       SYS_OBREAK                 = 17  // { int obreak(char *nsize); } break obreak_args int
+       SYS_GETFSSTAT              = 18  // { int getfsstat(struct statfs *buf, long bufsize, int flags); }
+       SYS_GETPID                 = 20  // { pid_t getpid(void); }
+       SYS_MOUNT                  = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }
+       SYS_UNMOUNT                = 22  // { int unmount(char *path, int flags); }
+       SYS_SETUID                 = 23  // { int setuid(uid_t uid); }
+       SYS_GETUID                 = 24  // { uid_t getuid(void); }
+       SYS_GETEUID                = 25  // { uid_t 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, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); }
+       SYS_ACCEPT                 = 30  // { int accept(int s, caddr_t name, int *anamelen); }
+       SYS_GETPEERNAME            = 31  // { int getpeername(int fdes, caddr_t asa, int *alen); }
+       SYS_GETSOCKNAME            = 32  // { int getsockname(int fdes, caddr_t asa, int *alen); }
+       SYS_ACCESS                 = 33  // { int access(char *path, int flags); }
+       SYS_CHFLAGS                = 34  // { int chflags(const char *path, u_long flags); }
+       SYS_FCHFLAGS               = 35  // { int fchflags(int fd, u_long flags); }
+       SYS_SYNC                   = 36  // { int sync(void); }
+       SYS_KILL                   = 37  // { int kill(int pid, int signum); }
+       SYS_GETPPID                = 39  // { pid_t getppid(void); }
+       SYS_DUP                    = 41  // { int dup(int fd); }
+       SYS_PIPE                   = 42  // { int pipe(void); }
+       SYS_GETEGID                = 43  // { gid_t getegid(void); }
+       SYS_PROFIL                 = 44  // { int profil(caddr_t samples, size_t size, u_long offset, u_int scale); }
+       SYS_KTRACE                 = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }
+       SYS_GETGID                 = 47  // { gid_t getgid(void); }
+       SYS_GETLOGIN               = 49  // { int getlogin(char *namebuf, size_t namelen); }
+       SYS_SETLOGIN               = 50  // { int setlogin(char *namebuf); }
+       SYS_ACCT                   = 51  // { int acct(char *path); }
+       SYS_SIGALTSTACK            = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }
+       SYS_IOCTL                  = 54  // { int ioctl(int fd, u_long com, caddr_t data); }
+       SYS_REBOOT                 = 55  // { int reboot(int opt); }
+       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 **argv, char **envv); }
+       SYS_UMASK                  = 60  // { int umask(int newmask); } umask umask_args int
+       SYS_CHROOT                 = 61  // { int chroot(char *path); }
+       SYS_MSYNC                  = 65  // { int msync(void *addr, size_t len, int flags); }
+       SYS_VFORK                  = 66  // { pid_t vfork(void); }
+       SYS_SBRK                   = 69  // { caddr_t sbrk(size_t incr); }
+       SYS_SSTK                   = 70  // { int sstk(size_t incr); }
+       SYS_MUNMAP                 = 73  // { int munmap(void *addr, size_t len); }
+       SYS_MPROTECT               = 74  // { int mprotect(void *addr, size_t len, int prot); }
+       SYS_MADVISE                = 75  // { int madvise(void *addr, size_t len, int behav); }
+       SYS_MINCORE                = 78  // { int mincore(const void *addr, size_t len, char *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_SWAPON                 = 85  // { int swapon(char *name); }
+       SYS_GETITIMER              = 86  // { int getitimer(u_int which, struct itimerval *itv); }
+       SYS_GETDTABLESIZE          = 89  // { int getdtablesize(void); }
+       SYS_DUP2                   = 90  // { int dup2(int from, int to); }
+       SYS_FCNTL                  = 92  // { int fcntl(int fd, int cmd, long arg); }
+       SYS_SELECT                 = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
+       SYS_FSYNC                  = 95  // { int fsync(int fd); }
+       SYS_SETPRIORITY            = 96  // { int setpriority(int which, int who, int prio); }
+       SYS_SOCKET                 = 97  // { int socket(int domain, int type, int protocol); }
+       SYS_CONNECT                = 98  // { int connect(int s, caddr_t name, int namelen); }
+       SYS_GETPRIORITY            = 100 // { int getpriority(int which, int who); }
+       SYS_BIND                   = 104 // { int bind(int s, caddr_t name, int namelen); }
+       SYS_SETSOCKOPT             = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
+       SYS_LISTEN                 = 106 // { int listen(int s, int backlog); }
+       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, int *avalsize); }
+       SYS_READV                  = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
+       SYS_WRITEV                 = 121 // { int 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_SETREUID               = 126 // { int setreuid(int ruid, int euid); }
+       SYS_SETREGID               = 127 // { int setregid(int rgid, int egid); }
+       SYS_RENAME                 = 128 // { int rename(char *from, char *to); }
+       SYS_FLOCK                  = 131 // { int flock(int fd, int how); }
+       SYS_MKFIFO                 = 132 // { int mkfifo(char *path, int mode); }
+       SYS_SENDTO                 = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
+       SYS_SHUTDOWN               = 134 // { int shutdown(int s, int how); }
+       SYS_SOCKETPAIR             = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
+       SYS_MKDIR                  = 136 // { int mkdir(char *path, int mode); }
+       SYS_RMDIR                  = 137 // { int rmdir(char *path); }
+       SYS_UTIMES                 = 138 // { int utimes(char *path, struct timeval *tptr); }
+       SYS_ADJTIME                = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
+       SYS_SETSID                 = 147 // { int setsid(void); }
+       SYS_QUOTACTL               = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
+       SYS_STATFS                 = 157 // { int statfs(char *path, struct statfs *buf); }
+       SYS_FSTATFS                = 158 // { int fstatfs(int fd, struct statfs *buf); }
+       SYS_GETFH                  = 161 // { int getfh(char *fname, struct fhandle *fhp); }
+       SYS_SYSARCH                = 165 // { int sysarch(int op, char *parms); }
+       SYS_RTPRIO                 = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
+       SYS_EXTPREAD               = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); }
+       SYS_EXTPWRITE              = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); }
+       SYS_NTP_ADJTIME            = 176 // { int ntp_adjtime(struct timex *tp); }
+       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_PATHCONF               = 191 // { int pathconf(char *path, int name); }
+       SYS_FPATHCONF              = 192 // { int fpathconf(int fd, int name); }
+       SYS_GETRLIMIT              = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
+       SYS_SETRLIMIT              = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
+       SYS_MMAP                   = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); }
        SYS_LSEEK                  = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); }
        SYS_TRUNCATE               = 200 // { int truncate(char *path, int pad, off_t length); }
        SYS_FTRUNCATE              = 201 // { int ftruncate(int fd, int pad, off_t length); }
@@ -161,8 +157,8 @@ const (
        SYS_LCHOWN                 = 254 // { int lchown(char *path, int uid, int gid); }
        SYS_LCHMOD                 = 274 // { int lchmod(char *path, mode_t mode); }
        SYS_LUTIMES                = 276 // { int lutimes(char *path, struct timeval *tptr); }
-       SYS_EXTPREADV              = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, u_int iovcnt, int flags, off_t offset); }
-       SYS_EXTPWRITEV             = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,u_int iovcnt, int flags, off_t offset); }
+       SYS_EXTPREADV              = 289 // { ssize_t extpreadv(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }
+       SYS_EXTPWRITEV             = 290 // { ssize_t extpwritev(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }
        SYS_FHSTATFS               = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
        SYS_FHOPEN                 = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
        SYS_MODNEXT                = 300 // { int modnext(int modid); }
@@ -225,7 +221,7 @@ const (
        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_KENV                   = 390 // { int kenv(int what, const char *name, char *value, int len); }
-       SYS_LCHFLAGS               = 391 // { int lchflags(char *path, int flags); }
+       SYS_LCHFLAGS               = 391 // { int lchflags(const char *path, u_long flags); }
        SYS_UUIDGEN                = 392 // { int uuidgen(struct uuid *store, int count); }
        SYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }
        SYS_VARSYM_SET             = 450 // { int varsym_set(int level, const char *name, const char *data); }
@@ -302,7 +298,7 @@ const (
        SYS_VMM_GUEST_CTL          = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }
        SYS_VMM_GUEST_SYNC_ADDR    = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }
        SYS_PROCCTL                = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); }
-       SYS_CHFLAGSAT              = 537 // { int chflagsat(int fd, const char *path, int flags, int atflags);}
+       SYS_CHFLAGSAT              = 537 // { int chflagsat(int fd, const char *path, u_long flags, int atflags);}
        SYS_PIPE2                  = 538 // { int pipe2(int *fildes, int flags); }
        SYS_UTIMENSAT              = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); }
        SYS_FUTIMENS               = 540 // { int futimens(int fd, const struct timespec *ts); }
@@ -312,4 +308,9 @@ const (
        SYS_LWP_SETAFFINITY        = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); }
        SYS_LWP_GETAFFINITY        = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); }
        SYS_LWP_CREATE2            = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); }
+       SYS_GETCPUCLOCKID          = 547 // { int getcpuclockid(pid_t pid, lwpid_t lwp_id, clockid_t *clock_id); }
+       SYS_WAIT6                  = 548 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }
+       SYS_LWP_GETNAME            = 549 // { int lwp_getname(lwpid_t tid, char *name, size_t len); }
+       SYS_GETRANDOM              = 550 // { ssize_t getrandom(void *buf, size_t len, unsigned flags); }
+       SYS___REALPATH             = 551 // { ssize_t __realpath(const char *path, char *buf, size_t len); }
 )
index a597e061caed0f0eb64950130498ad77063eea47..0f5a3f6970a26ba5a80e52010a652b96ff192d43 100644 (file)
@@ -431,6 +431,7 @@ const (
        SYS_FSPICK                       = 433
        SYS_PIDFD_OPEN                   = 434
        SYS_CLONE3                       = 435
+       SYS_CLOSE_RANGE                  = 436
        SYS_OPENAT2                      = 437
        SYS_PIDFD_GETFD                  = 438
        SYS_FACCESSAT2                   = 439
index 8c102e55a1dfd2ba907b5353b938cb9535b136b3..36d5219ef824fe107998bfde93ca0507c1783d1f 100644 (file)
@@ -353,6 +353,7 @@ const (
        SYS_FSPICK                 = 433
        SYS_PIDFD_OPEN             = 434
        SYS_CLONE3                 = 435
+       SYS_CLOSE_RANGE            = 436
        SYS_OPENAT2                = 437
        SYS_PIDFD_GETFD            = 438
        SYS_FACCESSAT2             = 439
index 98f9b68fb905541fd828a8ead79db0f403e0c099..3622ba14b4e11f8f71e543f24e4a687ef09bc586 100644 (file)
@@ -395,6 +395,7 @@ const (
        SYS_FSPICK                       = 433
        SYS_PIDFD_OPEN                   = 434
        SYS_CLONE3                       = 435
+       SYS_CLOSE_RANGE                  = 436
        SYS_OPENAT2                      = 437
        SYS_PIDFD_GETFD                  = 438
        SYS_FACCESSAT2                   = 439
index 4dabc33fbc9f6ea9145f0609723effaed57d12e5..6193c3dc07c146bce08efedb9e1958f2ab480ee8 100644 (file)
@@ -298,6 +298,7 @@ const (
        SYS_FSPICK                 = 433
        SYS_PIDFD_OPEN             = 434
        SYS_CLONE3                 = 435
+       SYS_CLOSE_RANGE            = 436
        SYS_OPENAT2                = 437
        SYS_PIDFD_GETFD            = 438
        SYS_FACCESSAT2             = 439
index d5724e5964d72bed5683d3ed7fdd33a03553e642..640b974345f314b0aad674c7d1b0fcaf568df5da 100644 (file)
@@ -416,6 +416,7 @@ const (
        SYS_FSPICK                       = 4433
        SYS_PIDFD_OPEN                   = 4434
        SYS_CLONE3                       = 4435
+       SYS_CLOSE_RANGE                  = 4436
        SYS_OPENAT2                      = 4437
        SYS_PIDFD_GETFD                  = 4438
        SYS_FACCESSAT2                   = 4439
index c1d824a4f3d244792bd29b8bc8674f9e527117b1..3467fbb5ff1c488b8339e847a60fc2791a6b9aaf 100644 (file)
@@ -346,6 +346,7 @@ const (
        SYS_FSPICK                 = 5433
        SYS_PIDFD_OPEN             = 5434
        SYS_CLONE3                 = 5435
+       SYS_CLOSE_RANGE            = 5436
        SYS_OPENAT2                = 5437
        SYS_PIDFD_GETFD            = 5438
        SYS_FACCESSAT2             = 5439
index 598dd5d6375a43b6153ad95850abd9dfe50274e3..0fc38d5a72f0297048f936809fac34ac39c25524 100644 (file)
@@ -346,6 +346,7 @@ const (
        SYS_FSPICK                 = 5433
        SYS_PIDFD_OPEN             = 5434
        SYS_CLONE3                 = 5435
+       SYS_CLOSE_RANGE            = 5436
        SYS_OPENAT2                = 5437
        SYS_PIDFD_GETFD            = 5438
        SYS_FACCESSAT2             = 5439
index c36782d08e270c7a4722a5bea565e0df8051154a..999fd55bccb705a15df717b41ed3001c229c8733 100644 (file)
@@ -416,6 +416,7 @@ const (
        SYS_FSPICK                       = 4433
        SYS_PIDFD_OPEN                   = 4434
        SYS_CLONE3                       = 4435
+       SYS_CLOSE_RANGE                  = 4436
        SYS_OPENAT2                      = 4437
        SYS_PIDFD_GETFD                  = 4438
        SYS_FACCESSAT2                   = 4439
index 9287538d36866c8b9171c7fd7dbcfb5c63158d3c..1df0d799355df5f58aa83b4ce9611a6dd16bec15 100644 (file)
@@ -395,6 +395,7 @@ const (
        SYS_FSPICK                 = 433
        SYS_PIDFD_OPEN             = 434
        SYS_CLONE3                 = 435
+       SYS_CLOSE_RANGE            = 436
        SYS_OPENAT2                = 437
        SYS_PIDFD_GETFD            = 438
        SYS_FACCESSAT2             = 439
index 4dafad8352ada47dbe2844282c03b9fcd6580895..4db39cca4da51a230e88e725595749d9bb4203b8 100644 (file)
@@ -395,6 +395,7 @@ const (
        SYS_FSPICK                 = 433
        SYS_PIDFD_OPEN             = 434
        SYS_CLONE3                 = 435
+       SYS_CLOSE_RANGE            = 436
        SYS_OPENAT2                = 437
        SYS_PIDFD_GETFD            = 438
        SYS_FACCESSAT2             = 439
index 6642cfccdf1606c4adca53e671c864c4315b84dc..e6927401446f719b1558a59e1c65fd6c6eb4f219 100644 (file)
@@ -297,6 +297,7 @@ const (
        SYS_FSPICK                 = 433
        SYS_PIDFD_OPEN             = 434
        SYS_CLONE3                 = 435
+       SYS_CLOSE_RANGE            = 436
        SYS_OPENAT2                = 437
        SYS_PIDFD_GETFD            = 438
        SYS_FACCESSAT2             = 439
index 23367b9467f02b4f2ffd48e47fad3b08a60d369c..a585aec4e7971e13848d08f2dc4dbd7da388f2dd 100644 (file)
@@ -360,6 +360,7 @@ const (
        SYS_FSPICK                 = 433
        SYS_PIDFD_OPEN             = 434
        SYS_CLONE3                 = 435
+       SYS_CLOSE_RANGE            = 436
        SYS_OPENAT2                = 437
        SYS_PIDFD_GETFD            = 438
        SYS_FACCESSAT2             = 439
index 083aa0204ef8e3ef95a0ef9978213d7cc3acc496..d047e567afc60859752c9cfe6e6c7d790bea22df 100644 (file)
@@ -374,6 +374,7 @@ const (
        SYS_FSMOUNT                = 432
        SYS_FSPICK                 = 433
        SYS_PIDFD_OPEN             = 434
+       SYS_CLOSE_RANGE            = 436
        SYS_OPENAT2                = 437
        SYS_PIDFD_GETFD            = 438
        SYS_FACCESSAT2             = 439
index 9f47b87c507a851f3d700091936877912c20ccad..830fbb35c0a4c21ae5525266cc6fda6f2a645101 100644 (file)
@@ -92,9 +92,9 @@ type Statfs_t struct {
        Type        uint32
        Flags       uint32
        Fssubtype   uint32
-       Fstypename  [16]int8
-       Mntonname   [1024]int8
-       Mntfromname [1024]int8
+       Fstypename  [16]byte
+       Mntonname   [1024]byte
+       Mntfromname [1024]byte
        Reserved    [8]uint32
 }
 
@@ -145,6 +145,10 @@ type Dirent struct {
        _       [3]byte
 }
 
+const (
+       PathMax = 0x400
+)
+
 type RawSockaddrInet4 struct {
        Len    uint8
        Family uint8
@@ -190,6 +194,15 @@ type RawSockaddrAny struct {
        Pad  [92]int8
 }
 
+type RawSockaddrCtl struct {
+       Sc_len      uint8
+       Sc_family   uint8
+       Ss_sysaddr  uint16
+       Sc_id       uint32
+       Sc_unit     uint32
+       Sc_reserved [5]uint32
+}
+
 type _Socklen uint32
 
 type Linger struct {
@@ -254,6 +267,7 @@ const (
        SizeofSockaddrAny      = 0x6c
        SizeofSockaddrUnix     = 0x6a
        SizeofSockaddrDatalink = 0x14
+       SizeofSockaddrCtl      = 0x20
        SizeofLinger           = 0x8
        SizeofIPMreq           = 0x8
        SizeofIPv6Mreq         = 0x14
@@ -301,7 +315,6 @@ type IfMsghdr struct {
        Addrs   int32
        Flags   int32
        Index   uint16
-       _       [2]byte
        Data    IfData
 }
 
@@ -344,7 +357,6 @@ type IfaMsghdr struct {
        Addrs   int32
        Flags   int32
        Index   uint16
-       _       [2]byte
        Metric  int32
 }
 
@@ -365,7 +377,6 @@ type IfmaMsghdr2 struct {
        Addrs    int32
        Flags    int32
        Index    uint16
-       _        [2]byte
        Refcount int32
 }
 
@@ -374,7 +385,6 @@ type RtMsghdr struct {
        Version uint8
        Type    uint8
        Index   uint16
-       _       [2]byte
        Flags   int32
        Addrs   int32
        Pid     int32
@@ -396,7 +406,8 @@ type RtMetrics struct {
        Rtt      uint32
        Rttvar   uint32
        Pksent   uint32
-       Filler   [4]uint32
+       State    uint32
+       Filler   [3]uint32
 }
 
 const (
@@ -497,3 +508,8 @@ type Clockinfo struct {
        Stathz  int32
        Profhz  int32
 }
+
+type CtlInfo struct {
+       Id   uint32
+       Name [96]byte
+}
index 966798a870976f707917b28a36c2691914237393..e53a7c49ffe8d97214e28a2f6e4a6144d99df0cf 100644 (file)
@@ -70,7 +70,6 @@ type Stat_t struct {
        Uid     uint32
        Gid     uint32
        Rdev    int32
-       _       [4]byte
        Atim    Timespec
        Mtim    Timespec
        Ctim    Timespec
@@ -97,10 +96,11 @@ type Statfs_t struct {
        Type        uint32
        Flags       uint32
        Fssubtype   uint32
-       Fstypename  [16]int8
-       Mntonname   [1024]int8
-       Mntfromname [1024]int8
-       Reserved    [8]uint32
+       Fstypename  [16]byte
+       Mntonname   [1024]byte
+       Mntfromname [1024]byte
+       Flags_ext   uint32
+       Reserved    [7]uint32
 }
 
 type Flock_t struct {
@@ -133,8 +133,7 @@ type Fbootstraptransfer_t struct {
 
 type Log2phys_t struct {
        Flags uint32
-       _     [8]byte
-       _     [8]byte
+       _     [16]byte
 }
 
 type Fsid struct {
@@ -151,6 +150,10 @@ type Dirent struct {
        _       [3]byte
 }
 
+const (
+       PathMax = 0x400
+)
+
 type RawSockaddrInet4 struct {
        Len    uint8
        Family uint8
@@ -196,6 +199,15 @@ type RawSockaddrAny struct {
        Pad  [92]int8
 }
 
+type RawSockaddrCtl struct {
+       Sc_len      uint8
+       Sc_family   uint8
+       Ss_sysaddr  uint16
+       Sc_id       uint32
+       Sc_unit     uint32
+       Sc_reserved [5]uint32
+}
+
 type _Socklen uint32
 
 type Linger struct {
@@ -221,10 +233,8 @@ type IPv6Mreq struct {
 type Msghdr struct {
        Name       *byte
        Namelen    uint32
-       _          [4]byte
        Iov        *Iovec
        Iovlen     int32
-       _          [4]byte
        Control    *byte
        Controllen uint32
        Flags      int32
@@ -262,6 +272,7 @@ const (
        SizeofSockaddrAny      = 0x6c
        SizeofSockaddrUnix     = 0x6a
        SizeofSockaddrDatalink = 0x14
+       SizeofSockaddrCtl      = 0x20
        SizeofLinger           = 0x8
        SizeofIPMreq           = 0x8
        SizeofIPv6Mreq         = 0x14
@@ -309,7 +320,6 @@ type IfMsghdr struct {
        Addrs   int32
        Flags   int32
        Index   uint16
-       _       [2]byte
        Data    IfData
 }
 
@@ -352,7 +362,6 @@ type IfaMsghdr struct {
        Addrs   int32
        Flags   int32
        Index   uint16
-       _       [2]byte
        Metric  int32
 }
 
@@ -373,7 +382,6 @@ type IfmaMsghdr2 struct {
        Addrs    int32
        Flags    int32
        Index    uint16
-       _        [2]byte
        Refcount int32
 }
 
@@ -382,7 +390,6 @@ type RtMsghdr struct {
        Version uint8
        Type    uint8
        Index   uint16
-       _       [2]byte
        Flags   int32
        Addrs   int32
        Pid     int32
@@ -404,7 +411,8 @@ type RtMetrics struct {
        Rtt      uint32
        Rttvar   uint32
        Pksent   uint32
-       Filler   [4]uint32
+       State    uint32
+       Filler   [3]uint32
 }
 
 const (
@@ -427,7 +435,6 @@ type BpfStat struct {
 
 type BpfProgram struct {
        Len   uint32
-       _     [4]byte
        Insns *BpfInsn
 }
 
@@ -452,7 +459,6 @@ type Termios struct {
        Cflag  uint64
        Lflag  uint64
        Cc     [20]uint8
-       _      [4]byte
        Ispeed uint64
        Ospeed uint64
 }
@@ -507,3 +513,8 @@ type Clockinfo struct {
        Stathz  int32
        Profhz  int32
 }
+
+type CtlInfo struct {
+       Id   uint32
+       Name [96]byte
+}
index 4fe4c9cd73e6ec144abae117097b1b3b85dd08a2..98be973ef94b08d1ebb7f26961e23fa110028a5d 100644 (file)
@@ -1,6 +1,5 @@
-// NOTE: cgo can't generate struct Stat_t and struct Statfs_t yet
-// Created by cgo -godefs - DO NOT EDIT
-// cgo -godefs types_darwin.go
+// cgo -godefs types_darwin.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
 
 // +build arm,darwin
 
@@ -31,7 +30,7 @@ type Timeval struct {
        Usec int32
 }
 
-type Timeval32 [0]byte
+type Timeval32 struct{}
 
 type Rusage struct {
        Utime    Timeval
@@ -93,9 +92,9 @@ type Statfs_t struct {
        Type        uint32
        Flags       uint32
        Fssubtype   uint32
-       Fstypename  [16]int8
-       Mntonname   [1024]int8
-       Mntfromname [1024]int8
+       Fstypename  [16]byte
+       Mntonname   [1024]byte
+       Mntfromname [1024]byte
        Reserved    [8]uint32
 }
 
@@ -146,6 +145,10 @@ type Dirent struct {
        _       [3]byte
 }
 
+const (
+       PathMax = 0x400
+)
+
 type RawSockaddrInet4 struct {
        Len    uint8
        Family uint8
@@ -191,6 +194,15 @@ type RawSockaddrAny struct {
        Pad  [92]int8
 }
 
+type RawSockaddrCtl struct {
+       Sc_len      uint8
+       Sc_family   uint8
+       Ss_sysaddr  uint16
+       Sc_id       uint32
+       Sc_unit     uint32
+       Sc_reserved [5]uint32
+}
+
 type _Socklen uint32
 
 type Linger struct {
@@ -255,6 +267,7 @@ const (
        SizeofSockaddrAny      = 0x6c
        SizeofSockaddrUnix     = 0x6a
        SizeofSockaddrDatalink = 0x14
+       SizeofSockaddrCtl      = 0x20
        SizeofLinger           = 0x8
        SizeofIPMreq           = 0x8
        SizeofIPv6Mreq         = 0x14
@@ -302,7 +315,6 @@ type IfMsghdr struct {
        Addrs   int32
        Flags   int32
        Index   uint16
-       _       [2]byte
        Data    IfData
 }
 
@@ -345,7 +357,6 @@ type IfaMsghdr struct {
        Addrs   int32
        Flags   int32
        Index   uint16
-       _       [2]byte
        Metric  int32
 }
 
@@ -366,7 +377,6 @@ type IfmaMsghdr2 struct {
        Addrs    int32
        Flags    int32
        Index    uint16
-       _        [2]byte
        Refcount int32
 }
 
@@ -375,7 +385,6 @@ type RtMsghdr struct {
        Version uint8
        Type    uint8
        Index   uint16
-       _       [2]byte
        Flags   int32
        Addrs   int32
        Pid     int32
@@ -397,7 +406,8 @@ type RtMetrics struct {
        Rtt      uint32
        Rttvar   uint32
        Pksent   uint32
-       Filler   [4]uint32
+       State    uint32
+       Filler   [3]uint32
 }
 
 const (
@@ -498,3 +508,8 @@ type Clockinfo struct {
        Stathz  int32
        Profhz  int32
 }
+
+type CtlInfo struct {
+       Id   uint32
+       Name [96]byte
+}
index 21999e4b0a2a33bde9bc10b358cde0953a5d9a82..ddae5afe1ba6aab513cdd297b8fedd0f66650b31 100644 (file)
@@ -70,7 +70,6 @@ type Stat_t struct {
        Uid     uint32
        Gid     uint32
        Rdev    int32
-       _       [4]byte
        Atim    Timespec
        Mtim    Timespec
        Ctim    Timespec
@@ -97,10 +96,11 @@ type Statfs_t struct {
        Type        uint32
        Flags       uint32
        Fssubtype   uint32
-       Fstypename  [16]int8
-       Mntonname   [1024]int8
-       Mntfromname [1024]int8
-       Reserved    [8]uint32
+       Fstypename  [16]byte
+       Mntonname   [1024]byte
+       Mntfromname [1024]byte
+       Flags_ext   uint32
+       Reserved    [7]uint32
 }
 
 type Flock_t struct {
@@ -133,8 +133,7 @@ type Fbootstraptransfer_t struct {
 
 type Log2phys_t struct {
        Flags uint32
-       _     [8]byte
-       _     [8]byte
+       _     [16]byte
 }
 
 type Fsid struct {
@@ -151,6 +150,10 @@ type Dirent struct {
        _       [3]byte
 }
 
+const (
+       PathMax = 0x400
+)
+
 type RawSockaddrInet4 struct {
        Len    uint8
        Family uint8
@@ -196,6 +199,15 @@ type RawSockaddrAny struct {
        Pad  [92]int8
 }
 
+type RawSockaddrCtl struct {
+       Sc_len      uint8
+       Sc_family   uint8
+       Ss_sysaddr  uint16
+       Sc_id       uint32
+       Sc_unit     uint32
+       Sc_reserved [5]uint32
+}
+
 type _Socklen uint32
 
 type Linger struct {
@@ -221,10 +233,8 @@ type IPv6Mreq struct {
 type Msghdr struct {
        Name       *byte
        Namelen    uint32
-       _          [4]byte
        Iov        *Iovec
        Iovlen     int32
-       _          [4]byte
        Control    *byte
        Controllen uint32
        Flags      int32
@@ -262,6 +272,7 @@ const (
        SizeofSockaddrAny      = 0x6c
        SizeofSockaddrUnix     = 0x6a
        SizeofSockaddrDatalink = 0x14
+       SizeofSockaddrCtl      = 0x20
        SizeofLinger           = 0x8
        SizeofIPMreq           = 0x8
        SizeofIPv6Mreq         = 0x14
@@ -309,7 +320,6 @@ type IfMsghdr struct {
        Addrs   int32
        Flags   int32
        Index   uint16
-       _       [2]byte
        Data    IfData
 }
 
@@ -352,7 +362,6 @@ type IfaMsghdr struct {
        Addrs   int32
        Flags   int32
        Index   uint16
-       _       [2]byte
        Metric  int32
 }
 
@@ -373,7 +382,6 @@ type IfmaMsghdr2 struct {
        Addrs    int32
        Flags    int32
        Index    uint16
-       _        [2]byte
        Refcount int32
 }
 
@@ -382,7 +390,6 @@ type RtMsghdr struct {
        Version uint8
        Type    uint8
        Index   uint16
-       _       [2]byte
        Flags   int32
        Addrs   int32
        Pid     int32
@@ -404,7 +411,8 @@ type RtMetrics struct {
        Rtt      uint32
        Rttvar   uint32
        Pksent   uint32
-       Filler   [4]uint32
+       State    uint32
+       Filler   [3]uint32
 }
 
 const (
@@ -427,7 +435,6 @@ type BpfStat struct {
 
 type BpfProgram struct {
        Len   uint32
-       _     [4]byte
        Insns *BpfInsn
 }
 
@@ -452,7 +459,6 @@ type Termios struct {
        Cflag  uint64
        Lflag  uint64
        Cc     [20]uint8
-       _      [4]byte
        Ispeed uint64
        Ospeed uint64
 }
@@ -507,3 +513,8 @@ type Clockinfo struct {
        Stathz  int32
        Profhz  int32
 }
+
+type CtlInfo struct {
+       Id   uint32
+       Name [96]byte
+}
index 71ea1d6d23f662a3651edea8abfa0b187928f356..c4772df23bfd64a37dfc4801cf93b8062a09e3df 100644 (file)
@@ -70,11 +70,11 @@ type Stat_t struct {
        Ctim    Timespec
        Size    int64
        Blocks  int64
-       Blksize uint32
+       _       uint32
        Flags   uint32
        Gen     uint32
        Lspare  int32
-       Qspare1 int64
+       Blksize int64
        Qspare2 int64
 }
 
@@ -91,17 +91,15 @@ type Statfs_t struct {
        Owner       uint32
        Type        int32
        Flags       int32
-       _           [4]byte
        Syncwrites  int64
        Asyncwrites int64
-       Fstypename  [16]int8
-       Mntonname   [80]int8
+       Fstypename  [16]byte
+       Mntonname   [80]byte
        Syncreads   int64
        Asyncreads  int64
        Spares1     int16
-       Mntfromname [80]int8
+       Mntfromname [80]byte
        Spares2     int16
-       _           [4]byte
        Spare       [2]int64
 }
 
@@ -202,10 +200,8 @@ type IPv6Mreq struct {
 type Msghdr struct {
        Name       *byte
        Namelen    uint32
-       _          [4]byte
        Iov        *Iovec
        Iovlen     int32
-       _          [4]byte
        Control    *byte
        Controllen uint32
        Flags      int32
@@ -269,7 +265,7 @@ type FdSet struct {
 const (
        SizeofIfMsghdr         = 0xb0
        SizeofIfData           = 0xa0
-       SizeofIfaMsghdr        = 0x14
+       SizeofIfaMsghdr        = 0x18
        SizeofIfmaMsghdr       = 0x10
        SizeofIfAnnounceMsghdr = 0x18
        SizeofRtMsghdr         = 0x98
@@ -280,10 +276,9 @@ type IfMsghdr struct {
        Msglen  uint16
        Version uint8
        Type    uint8
-       Addrs   int32
-       Flags   int32
        Index   uint16
-       _       [2]byte
+       Flags   int32
+       Addrs   int32
        Data    IfData
 }
 
@@ -294,7 +289,6 @@ type IfData struct {
        Hdrlen     uint8
        Recvquota  uint8
        Xmitquota  uint8
-       _          [2]byte
        Mtu        uint64
        Metric     uint64
        Link_state uint64
@@ -316,24 +310,23 @@ type IfData struct {
 }
 
 type IfaMsghdr struct {
-       Msglen  uint16
-       Version uint8
-       Type    uint8
-       Addrs   int32
-       Flags   int32
-       Index   uint16
-       _       [2]byte
-       Metric  int32
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Flags     int32
+       Addrs     int32
+       Addrflags int32
+       Metric    int32
 }
 
 type IfmaMsghdr struct {
        Msglen  uint16
        Version uint8
        Type    uint8
-       Addrs   int32
-       Flags   int32
        Index   uint16
-       _       [2]byte
+       Flags   int32
+       Addrs   int32
 }
 
 type IfAnnounceMsghdr struct {
@@ -350,7 +343,6 @@ type RtMsghdr struct {
        Version uint8
        Type    uint8
        Index   uint16
-       _       [2]byte
        Flags   int32
        Addrs   int32
        Pid     int32
@@ -374,7 +366,6 @@ type RtMetrics struct {
        Hopcount  uint64
        Mssopt    uint16
        Pad       uint16
-       _         [4]byte
        Msl       uint64
        Iwmaxsegs uint64
        Iwcapsegs uint64
@@ -400,7 +391,6 @@ type BpfStat struct {
 
 type BpfProgram struct {
        Len   uint32
-       _     [4]byte
        Insns *BpfInsn
 }
 
index a92a5019afa822cf1e75c694cc3fb32705c2c046..a96ad4c299dd47e462d80002a1dabbc78c5c1456 100644 (file)
@@ -462,166 +462,107 @@ const (
 )
 
 const (
-       NDA_UNSPEC              = 0x0
-       NDA_DST                 = 0x1
-       NDA_LLADDR              = 0x2
-       NDA_CACHEINFO           = 0x3
-       NDA_PROBES              = 0x4
-       NDA_VLAN                = 0x5
-       NDA_PORT                = 0x6
-       NDA_VNI                 = 0x7
-       NDA_IFINDEX             = 0x8
-       NDA_MASTER              = 0x9
-       NDA_LINK_NETNSID        = 0xa
-       NDA_SRC_VNI             = 0xb
-       NTF_USE                 = 0x1
-       NTF_SELF                = 0x2
-       NTF_MASTER              = 0x4
-       NTF_PROXY               = 0x8
-       NTF_EXT_LEARNED         = 0x10
-       NTF_OFFLOADED           = 0x20
-       NTF_ROUTER              = 0x80
-       NUD_INCOMPLETE          = 0x1
-       NUD_REACHABLE           = 0x2
-       NUD_STALE               = 0x4
-       NUD_DELAY               = 0x8
-       NUD_PROBE               = 0x10
-       NUD_FAILED              = 0x20
-       NUD_NOARP               = 0x40
-       NUD_PERMANENT           = 0x80
-       NUD_NONE                = 0x0
-       IFA_UNSPEC              = 0x0
-       IFA_ADDRESS             = 0x1
-       IFA_LOCAL               = 0x2
-       IFA_LABEL               = 0x3
-       IFA_BROADCAST           = 0x4
-       IFA_ANYCAST             = 0x5
-       IFA_CACHEINFO           = 0x6
-       IFA_MULTICAST           = 0x7
-       IFA_FLAGS               = 0x8
-       IFA_RT_PRIORITY         = 0x9
-       IFA_TARGET_NETNSID      = 0xa
-       IFLA_UNSPEC             = 0x0
-       IFLA_ADDRESS            = 0x1
-       IFLA_BROADCAST          = 0x2
-       IFLA_IFNAME             = 0x3
-       IFLA_MTU                = 0x4
-       IFLA_LINK               = 0x5
-       IFLA_QDISC              = 0x6
-       IFLA_STATS              = 0x7
-       IFLA_COST               = 0x8
-       IFLA_PRIORITY           = 0x9
-       IFLA_MASTER             = 0xa
-       IFLA_WIRELESS           = 0xb
-       IFLA_PROTINFO           = 0xc
-       IFLA_TXQLEN             = 0xd
-       IFLA_MAP                = 0xe
-       IFLA_WEIGHT             = 0xf
-       IFLA_OPERSTATE          = 0x10
-       IFLA_LINKMODE           = 0x11
-       IFLA_LINKINFO           = 0x12
-       IFLA_NET_NS_PID         = 0x13
-       IFLA_IFALIAS            = 0x14
-       IFLA_NUM_VF             = 0x15
-       IFLA_VFINFO_LIST        = 0x16
-       IFLA_STATS64            = 0x17
-       IFLA_VF_PORTS           = 0x18
-       IFLA_PORT_SELF          = 0x19
-       IFLA_AF_SPEC            = 0x1a
-       IFLA_GROUP              = 0x1b
-       IFLA_NET_NS_FD          = 0x1c
-       IFLA_EXT_MASK           = 0x1d
-       IFLA_PROMISCUITY        = 0x1e
-       IFLA_NUM_TX_QUEUES      = 0x1f
-       IFLA_NUM_RX_QUEUES      = 0x20
-       IFLA_CARRIER            = 0x21
-       IFLA_PHYS_PORT_ID       = 0x22
-       IFLA_CARRIER_CHANGES    = 0x23
-       IFLA_PHYS_SWITCH_ID     = 0x24
-       IFLA_LINK_NETNSID       = 0x25
-       IFLA_PHYS_PORT_NAME     = 0x26
-       IFLA_PROTO_DOWN         = 0x27
-       IFLA_GSO_MAX_SEGS       = 0x28
-       IFLA_GSO_MAX_SIZE       = 0x29
-       IFLA_PAD                = 0x2a
-       IFLA_XDP                = 0x2b
-       IFLA_EVENT              = 0x2c
-       IFLA_NEW_NETNSID        = 0x2d
-       IFLA_IF_NETNSID         = 0x2e
-       IFLA_TARGET_NETNSID     = 0x2e
-       IFLA_CARRIER_UP_COUNT   = 0x2f
-       IFLA_CARRIER_DOWN_COUNT = 0x30
-       IFLA_NEW_IFINDEX        = 0x31
-       IFLA_MIN_MTU            = 0x32
-       IFLA_MAX_MTU            = 0x33
-       IFLA_MAX                = 0x36
-       IFLA_INFO_KIND          = 0x1
-       IFLA_INFO_DATA          = 0x2
-       IFLA_INFO_XSTATS        = 0x3
-       IFLA_INFO_SLAVE_KIND    = 0x4
-       IFLA_INFO_SLAVE_DATA    = 0x5
-       RT_SCOPE_UNIVERSE       = 0x0
-       RT_SCOPE_SITE           = 0xc8
-       RT_SCOPE_LINK           = 0xfd
-       RT_SCOPE_HOST           = 0xfe
-       RT_SCOPE_NOWHERE        = 0xff
-       RT_TABLE_UNSPEC         = 0x0
-       RT_TABLE_COMPAT         = 0xfc
-       RT_TABLE_DEFAULT        = 0xfd
-       RT_TABLE_MAIN           = 0xfe
-       RT_TABLE_LOCAL          = 0xff
-       RT_TABLE_MAX            = 0xffffffff
-       RTA_UNSPEC              = 0x0
-       RTA_DST                 = 0x1
-       RTA_SRC                 = 0x2
-       RTA_IIF                 = 0x3
-       RTA_OIF                 = 0x4
-       RTA_GATEWAY             = 0x5
-       RTA_PRIORITY            = 0x6
-       RTA_PREFSRC             = 0x7
-       RTA_METRICS             = 0x8
-       RTA_MULTIPATH           = 0x9
-       RTA_FLOW                = 0xb
-       RTA_CACHEINFO           = 0xc
-       RTA_TABLE               = 0xf
-       RTA_MARK                = 0x10
-       RTA_MFC_STATS           = 0x11
-       RTA_VIA                 = 0x12
-       RTA_NEWDST              = 0x13
-       RTA_PREF                = 0x14
-       RTA_ENCAP_TYPE          = 0x15
-       RTA_ENCAP               = 0x16
-       RTA_EXPIRES             = 0x17
-       RTA_PAD                 = 0x18
-       RTA_UID                 = 0x19
-       RTA_TTL_PROPAGATE       = 0x1a
-       RTA_IP_PROTO            = 0x1b
-       RTA_SPORT               = 0x1c
-       RTA_DPORT               = 0x1d
-       RTN_UNSPEC              = 0x0
-       RTN_UNICAST             = 0x1
-       RTN_LOCAL               = 0x2
-       RTN_BROADCAST           = 0x3
-       RTN_ANYCAST             = 0x4
-       RTN_MULTICAST           = 0x5
-       RTN_BLACKHOLE           = 0x6
-       RTN_UNREACHABLE         = 0x7
-       RTN_PROHIBIT            = 0x8
-       RTN_THROW               = 0x9
-       RTN_NAT                 = 0xa
-       RTN_XRESOLVE            = 0xb
-       SizeofNlMsghdr          = 0x10
-       SizeofNlMsgerr          = 0x14
-       SizeofRtGenmsg          = 0x1
-       SizeofNlAttr            = 0x4
-       SizeofRtAttr            = 0x4
-       SizeofIfInfomsg         = 0x10
-       SizeofIfAddrmsg         = 0x8
-       SizeofIfaCacheinfo      = 0x10
-       SizeofRtMsg             = 0xc
-       SizeofRtNexthop         = 0x8
-       SizeofNdUseroptmsg      = 0x10
-       SizeofNdMsg             = 0xc
+       NDA_UNSPEC         = 0x0
+       NDA_DST            = 0x1
+       NDA_LLADDR         = 0x2
+       NDA_CACHEINFO      = 0x3
+       NDA_PROBES         = 0x4
+       NDA_VLAN           = 0x5
+       NDA_PORT           = 0x6
+       NDA_VNI            = 0x7
+       NDA_IFINDEX        = 0x8
+       NDA_MASTER         = 0x9
+       NDA_LINK_NETNSID   = 0xa
+       NDA_SRC_VNI        = 0xb
+       NTF_USE            = 0x1
+       NTF_SELF           = 0x2
+       NTF_MASTER         = 0x4
+       NTF_PROXY          = 0x8
+       NTF_EXT_LEARNED    = 0x10
+       NTF_OFFLOADED      = 0x20
+       NTF_ROUTER         = 0x80
+       NUD_INCOMPLETE     = 0x1
+       NUD_REACHABLE      = 0x2
+       NUD_STALE          = 0x4
+       NUD_DELAY          = 0x8
+       NUD_PROBE          = 0x10
+       NUD_FAILED         = 0x20
+       NUD_NOARP          = 0x40
+       NUD_PERMANENT      = 0x80
+       NUD_NONE           = 0x0
+       IFA_UNSPEC         = 0x0
+       IFA_ADDRESS        = 0x1
+       IFA_LOCAL          = 0x2
+       IFA_LABEL          = 0x3
+       IFA_BROADCAST      = 0x4
+       IFA_ANYCAST        = 0x5
+       IFA_CACHEINFO      = 0x6
+       IFA_MULTICAST      = 0x7
+       IFA_FLAGS          = 0x8
+       IFA_RT_PRIORITY    = 0x9
+       IFA_TARGET_NETNSID = 0xa
+       RT_SCOPE_UNIVERSE  = 0x0
+       RT_SCOPE_SITE      = 0xc8
+       RT_SCOPE_LINK      = 0xfd
+       RT_SCOPE_HOST      = 0xfe
+       RT_SCOPE_NOWHERE   = 0xff
+       RT_TABLE_UNSPEC    = 0x0
+       RT_TABLE_COMPAT    = 0xfc
+       RT_TABLE_DEFAULT   = 0xfd
+       RT_TABLE_MAIN      = 0xfe
+       RT_TABLE_LOCAL     = 0xff
+       RT_TABLE_MAX       = 0xffffffff
+       RTA_UNSPEC         = 0x0
+       RTA_DST            = 0x1
+       RTA_SRC            = 0x2
+       RTA_IIF            = 0x3
+       RTA_OIF            = 0x4
+       RTA_GATEWAY        = 0x5
+       RTA_PRIORITY       = 0x6
+       RTA_PREFSRC        = 0x7
+       RTA_METRICS        = 0x8
+       RTA_MULTIPATH      = 0x9
+       RTA_FLOW           = 0xb
+       RTA_CACHEINFO      = 0xc
+       RTA_TABLE          = 0xf
+       RTA_MARK           = 0x10
+       RTA_MFC_STATS      = 0x11
+       RTA_VIA            = 0x12
+       RTA_NEWDST         = 0x13
+       RTA_PREF           = 0x14
+       RTA_ENCAP_TYPE     = 0x15
+       RTA_ENCAP          = 0x16
+       RTA_EXPIRES        = 0x17
+       RTA_PAD            = 0x18
+       RTA_UID            = 0x19
+       RTA_TTL_PROPAGATE  = 0x1a
+       RTA_IP_PROTO       = 0x1b
+       RTA_SPORT          = 0x1c
+       RTA_DPORT          = 0x1d
+       RTN_UNSPEC         = 0x0
+       RTN_UNICAST        = 0x1
+       RTN_LOCAL          = 0x2
+       RTN_BROADCAST      = 0x3
+       RTN_ANYCAST        = 0x4
+       RTN_MULTICAST      = 0x5
+       RTN_BLACKHOLE      = 0x6
+       RTN_UNREACHABLE    = 0x7
+       RTN_PROHIBIT       = 0x8
+       RTN_THROW          = 0x9
+       RTN_NAT            = 0xa
+       RTN_XRESOLVE       = 0xb
+       SizeofNlMsghdr     = 0x10
+       SizeofNlMsgerr     = 0x14
+       SizeofRtGenmsg     = 0x1
+       SizeofNlAttr       = 0x4
+       SizeofRtAttr       = 0x4
+       SizeofIfInfomsg    = 0x10
+       SizeofIfAddrmsg    = 0x8
+       SizeofIfaCacheinfo = 0x10
+       SizeofRtMsg        = 0xc
+       SizeofRtNexthop    = 0x8
+       SizeofNdUseroptmsg = 0x10
+       SizeofNdMsg        = 0xc
 )
 
 type NlMsghdr struct {
@@ -823,8 +764,6 @@ type SignalfdSiginfo struct {
        _         [28]uint8
 }
 
-const PERF_IOC_FLAG_GROUP = 0x1
-
 type Winsize struct {
        Row    uint16
        Col    uint16
@@ -948,7 +887,10 @@ type PerfEventMmapPage struct {
        Time_offset    uint64
        Time_zero      uint64
        Size           uint32
-       _              [948]uint8
+       _              uint32
+       Time_cycles    uint64
+       Time_mask      uint64
+       _              [928]uint8
        Data_head      uint64
        Data_tail      uint64
        Data_offset    uint64
@@ -990,13 +932,13 @@ const (
 )
 
 const (
-       PERF_TYPE_HARDWARE   = 0x0
-       PERF_TYPE_SOFTWARE   = 0x1
-       PERF_TYPE_TRACEPOINT = 0x2
-       PERF_TYPE_HW_CACHE   = 0x3
-       PERF_TYPE_RAW        = 0x4
-       PERF_TYPE_BREAKPOINT = 0x5
-
+       PERF_TYPE_HARDWARE                    = 0x0
+       PERF_TYPE_SOFTWARE                    = 0x1
+       PERF_TYPE_TRACEPOINT                  = 0x2
+       PERF_TYPE_HW_CACHE                    = 0x3
+       PERF_TYPE_RAW                         = 0x4
+       PERF_TYPE_BREAKPOINT                  = 0x5
+       PERF_TYPE_MAX                         = 0x6
        PERF_COUNT_HW_CPU_CYCLES              = 0x0
        PERF_COUNT_HW_INSTRUCTIONS            = 0x1
        PERF_COUNT_HW_CACHE_REFERENCES        = 0x2
@@ -1007,106 +949,163 @@ const (
        PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7
        PERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8
        PERF_COUNT_HW_REF_CPU_CYCLES          = 0x9
-
-       PERF_COUNT_HW_CACHE_L1D  = 0x0
-       PERF_COUNT_HW_CACHE_L1I  = 0x1
-       PERF_COUNT_HW_CACHE_LL   = 0x2
-       PERF_COUNT_HW_CACHE_DTLB = 0x3
-       PERF_COUNT_HW_CACHE_ITLB = 0x4
-       PERF_COUNT_HW_CACHE_BPU  = 0x5
-       PERF_COUNT_HW_CACHE_NODE = 0x6
-
-       PERF_COUNT_HW_CACHE_OP_READ     = 0x0
-       PERF_COUNT_HW_CACHE_OP_WRITE    = 0x1
-       PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2
-
-       PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0
-       PERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1
-
-       PERF_COUNT_SW_CPU_CLOCK        = 0x0
-       PERF_COUNT_SW_TASK_CLOCK       = 0x1
-       PERF_COUNT_SW_PAGE_FAULTS      = 0x2
-       PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3
-       PERF_COUNT_SW_CPU_MIGRATIONS   = 0x4
-       PERF_COUNT_SW_PAGE_FAULTS_MIN  = 0x5
-       PERF_COUNT_SW_PAGE_FAULTS_MAJ  = 0x6
-       PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7
-       PERF_COUNT_SW_EMULATION_FAULTS = 0x8
-       PERF_COUNT_SW_DUMMY            = 0x9
-       PERF_COUNT_SW_BPF_OUTPUT       = 0xa
-
-       PERF_SAMPLE_IP           = 0x1
-       PERF_SAMPLE_TID          = 0x2
-       PERF_SAMPLE_TIME         = 0x4
-       PERF_SAMPLE_ADDR         = 0x8
-       PERF_SAMPLE_READ         = 0x10
-       PERF_SAMPLE_CALLCHAIN    = 0x20
-       PERF_SAMPLE_ID           = 0x40
-       PERF_SAMPLE_CPU          = 0x80
-       PERF_SAMPLE_PERIOD       = 0x100
-       PERF_SAMPLE_STREAM_ID    = 0x200
-       PERF_SAMPLE_RAW          = 0x400
-       PERF_SAMPLE_BRANCH_STACK = 0x800
-       PERF_SAMPLE_REGS_USER    = 0x1000
-       PERF_SAMPLE_STACK_USER   = 0x2000
-       PERF_SAMPLE_WEIGHT       = 0x4000
-       PERF_SAMPLE_DATA_SRC     = 0x8000
-       PERF_SAMPLE_IDENTIFIER   = 0x10000
-       PERF_SAMPLE_TRANSACTION  = 0x20000
-       PERF_SAMPLE_REGS_INTR    = 0x40000
-
-       PERF_SAMPLE_BRANCH_USER       = 0x1
-       PERF_SAMPLE_BRANCH_KERNEL     = 0x2
-       PERF_SAMPLE_BRANCH_HV         = 0x4
-       PERF_SAMPLE_BRANCH_ANY        = 0x8
-       PERF_SAMPLE_BRANCH_ANY_CALL   = 0x10
-       PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20
-       PERF_SAMPLE_BRANCH_IND_CALL   = 0x40
-       PERF_SAMPLE_BRANCH_ABORT_TX   = 0x80
-       PERF_SAMPLE_BRANCH_IN_TX      = 0x100
-       PERF_SAMPLE_BRANCH_NO_TX      = 0x200
-       PERF_SAMPLE_BRANCH_COND       = 0x400
-       PERF_SAMPLE_BRANCH_CALL_STACK = 0x800
-       PERF_SAMPLE_BRANCH_IND_JUMP   = 0x1000
-       PERF_SAMPLE_BRANCH_CALL       = 0x2000
-       PERF_SAMPLE_BRANCH_NO_FLAGS   = 0x4000
-       PERF_SAMPLE_BRANCH_NO_CYCLES  = 0x8000
-       PERF_SAMPLE_BRANCH_TYPE_SAVE  = 0x10000
-
-       PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1
-       PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2
-       PERF_FORMAT_ID                 = 0x4
-       PERF_FORMAT_GROUP              = 0x8
-
-       PERF_RECORD_MMAP            = 0x1
-       PERF_RECORD_LOST            = 0x2
-       PERF_RECORD_COMM            = 0x3
-       PERF_RECORD_EXIT            = 0x4
-       PERF_RECORD_THROTTLE        = 0x5
-       PERF_RECORD_UNTHROTTLE      = 0x6
-       PERF_RECORD_FORK            = 0x7
-       PERF_RECORD_READ            = 0x8
-       PERF_RECORD_SAMPLE          = 0x9
-       PERF_RECORD_MMAP2           = 0xa
-       PERF_RECORD_AUX             = 0xb
-       PERF_RECORD_ITRACE_START    = 0xc
-       PERF_RECORD_LOST_SAMPLES    = 0xd
-       PERF_RECORD_SWITCH          = 0xe
-       PERF_RECORD_SWITCH_CPU_WIDE = 0xf
-       PERF_RECORD_NAMESPACES      = 0x10
-
-       PERF_CONTEXT_HV     = -0x20
-       PERF_CONTEXT_KERNEL = -0x80
-       PERF_CONTEXT_USER   = -0x200
-
-       PERF_CONTEXT_GUEST        = -0x800
-       PERF_CONTEXT_GUEST_KERNEL = -0x880
-       PERF_CONTEXT_GUEST_USER   = -0xa00
-
-       PERF_FLAG_FD_NO_GROUP = 0x1
-       PERF_FLAG_FD_OUTPUT   = 0x2
-       PERF_FLAG_PID_CGROUP  = 0x4
-       PERF_FLAG_FD_CLOEXEC  = 0x8
+       PERF_COUNT_HW_MAX                     = 0xa
+       PERF_COUNT_HW_CACHE_L1D               = 0x0
+       PERF_COUNT_HW_CACHE_L1I               = 0x1
+       PERF_COUNT_HW_CACHE_LL                = 0x2
+       PERF_COUNT_HW_CACHE_DTLB              = 0x3
+       PERF_COUNT_HW_CACHE_ITLB              = 0x4
+       PERF_COUNT_HW_CACHE_BPU               = 0x5
+       PERF_COUNT_HW_CACHE_NODE              = 0x6
+       PERF_COUNT_HW_CACHE_MAX               = 0x7
+       PERF_COUNT_HW_CACHE_OP_READ           = 0x0
+       PERF_COUNT_HW_CACHE_OP_WRITE          = 0x1
+       PERF_COUNT_HW_CACHE_OP_PREFETCH       = 0x2
+       PERF_COUNT_HW_CACHE_OP_MAX            = 0x3
+       PERF_COUNT_HW_CACHE_RESULT_ACCESS     = 0x0
+       PERF_COUNT_HW_CACHE_RESULT_MISS       = 0x1
+       PERF_COUNT_HW_CACHE_RESULT_MAX        = 0x2
+       PERF_COUNT_SW_CPU_CLOCK               = 0x0
+       PERF_COUNT_SW_TASK_CLOCK              = 0x1
+       PERF_COUNT_SW_PAGE_FAULTS             = 0x2
+       PERF_COUNT_SW_CONTEXT_SWITCHES        = 0x3
+       PERF_COUNT_SW_CPU_MIGRATIONS          = 0x4
+       PERF_COUNT_SW_PAGE_FAULTS_MIN         = 0x5
+       PERF_COUNT_SW_PAGE_FAULTS_MAJ         = 0x6
+       PERF_COUNT_SW_ALIGNMENT_FAULTS        = 0x7
+       PERF_COUNT_SW_EMULATION_FAULTS        = 0x8
+       PERF_COUNT_SW_DUMMY                   = 0x9
+       PERF_COUNT_SW_BPF_OUTPUT              = 0xa
+       PERF_COUNT_SW_MAX                     = 0xb
+       PERF_SAMPLE_IP                        = 0x1
+       PERF_SAMPLE_TID                       = 0x2
+       PERF_SAMPLE_TIME                      = 0x4
+       PERF_SAMPLE_ADDR                      = 0x8
+       PERF_SAMPLE_READ                      = 0x10
+       PERF_SAMPLE_CALLCHAIN                 = 0x20
+       PERF_SAMPLE_ID                        = 0x40
+       PERF_SAMPLE_CPU                       = 0x80
+       PERF_SAMPLE_PERIOD                    = 0x100
+       PERF_SAMPLE_STREAM_ID                 = 0x200
+       PERF_SAMPLE_RAW                       = 0x400
+       PERF_SAMPLE_BRANCH_STACK              = 0x800
+       PERF_SAMPLE_REGS_USER                 = 0x1000
+       PERF_SAMPLE_STACK_USER                = 0x2000
+       PERF_SAMPLE_WEIGHT                    = 0x4000
+       PERF_SAMPLE_DATA_SRC                  = 0x8000
+       PERF_SAMPLE_IDENTIFIER                = 0x10000
+       PERF_SAMPLE_TRANSACTION               = 0x20000
+       PERF_SAMPLE_REGS_INTR                 = 0x40000
+       PERF_SAMPLE_PHYS_ADDR                 = 0x80000
+       PERF_SAMPLE_AUX                       = 0x100000
+       PERF_SAMPLE_CGROUP                    = 0x200000
+       PERF_SAMPLE_MAX                       = 0x400000
+       PERF_SAMPLE_BRANCH_USER_SHIFT         = 0x0
+       PERF_SAMPLE_BRANCH_KERNEL_SHIFT       = 0x1
+       PERF_SAMPLE_BRANCH_HV_SHIFT           = 0x2
+       PERF_SAMPLE_BRANCH_ANY_SHIFT          = 0x3
+       PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT     = 0x4
+       PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT   = 0x5
+       PERF_SAMPLE_BRANCH_IND_CALL_SHIFT     = 0x6
+       PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT     = 0x7
+       PERF_SAMPLE_BRANCH_IN_TX_SHIFT        = 0x8
+       PERF_SAMPLE_BRANCH_NO_TX_SHIFT        = 0x9
+       PERF_SAMPLE_BRANCH_COND_SHIFT         = 0xa
+       PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT   = 0xb
+       PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT     = 0xc
+       PERF_SAMPLE_BRANCH_CALL_SHIFT         = 0xd
+       PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT     = 0xe
+       PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT    = 0xf
+       PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT    = 0x10
+       PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT     = 0x11
+       PERF_SAMPLE_BRANCH_MAX_SHIFT          = 0x12
+       PERF_SAMPLE_BRANCH_USER               = 0x1
+       PERF_SAMPLE_BRANCH_KERNEL             = 0x2
+       PERF_SAMPLE_BRANCH_HV                 = 0x4
+       PERF_SAMPLE_BRANCH_ANY                = 0x8
+       PERF_SAMPLE_BRANCH_ANY_CALL           = 0x10
+       PERF_SAMPLE_BRANCH_ANY_RETURN         = 0x20
+       PERF_SAMPLE_BRANCH_IND_CALL           = 0x40
+       PERF_SAMPLE_BRANCH_ABORT_TX           = 0x80
+       PERF_SAMPLE_BRANCH_IN_TX              = 0x100
+       PERF_SAMPLE_BRANCH_NO_TX              = 0x200
+       PERF_SAMPLE_BRANCH_COND               = 0x400
+       PERF_SAMPLE_BRANCH_CALL_STACK         = 0x800
+       PERF_SAMPLE_BRANCH_IND_JUMP           = 0x1000
+       PERF_SAMPLE_BRANCH_CALL               = 0x2000
+       PERF_SAMPLE_BRANCH_NO_FLAGS           = 0x4000
+       PERF_SAMPLE_BRANCH_NO_CYCLES          = 0x8000
+       PERF_SAMPLE_BRANCH_TYPE_SAVE          = 0x10000
+       PERF_SAMPLE_BRANCH_HW_INDEX           = 0x20000
+       PERF_SAMPLE_BRANCH_MAX                = 0x40000
+       PERF_BR_UNKNOWN                       = 0x0
+       PERF_BR_COND                          = 0x1
+       PERF_BR_UNCOND                        = 0x2
+       PERF_BR_IND                           = 0x3
+       PERF_BR_CALL                          = 0x4
+       PERF_BR_IND_CALL                      = 0x5
+       PERF_BR_RET                           = 0x6
+       PERF_BR_SYSCALL                       = 0x7
+       PERF_BR_SYSRET                        = 0x8
+       PERF_BR_COND_CALL                     = 0x9
+       PERF_BR_COND_RET                      = 0xa
+       PERF_BR_MAX                           = 0xb
+       PERF_SAMPLE_REGS_ABI_NONE             = 0x0
+       PERF_SAMPLE_REGS_ABI_32               = 0x1
+       PERF_SAMPLE_REGS_ABI_64               = 0x2
+       PERF_TXN_ELISION                      = 0x1
+       PERF_TXN_TRANSACTION                  = 0x2
+       PERF_TXN_SYNC                         = 0x4
+       PERF_TXN_ASYNC                        = 0x8
+       PERF_TXN_RETRY                        = 0x10
+       PERF_TXN_CONFLICT                     = 0x20
+       PERF_TXN_CAPACITY_WRITE               = 0x40
+       PERF_TXN_CAPACITY_READ                = 0x80
+       PERF_TXN_MAX                          = 0x100
+       PERF_TXN_ABORT_MASK                   = -0x100000000
+       PERF_TXN_ABORT_SHIFT                  = 0x20
+       PERF_FORMAT_TOTAL_TIME_ENABLED        = 0x1
+       PERF_FORMAT_TOTAL_TIME_RUNNING        = 0x2
+       PERF_FORMAT_ID                        = 0x4
+       PERF_FORMAT_GROUP                     = 0x8
+       PERF_FORMAT_MAX                       = 0x10
+       PERF_IOC_FLAG_GROUP                   = 0x1
+       PERF_RECORD_MMAP                      = 0x1
+       PERF_RECORD_LOST                      = 0x2
+       PERF_RECORD_COMM                      = 0x3
+       PERF_RECORD_EXIT                      = 0x4
+       PERF_RECORD_THROTTLE                  = 0x5
+       PERF_RECORD_UNTHROTTLE                = 0x6
+       PERF_RECORD_FORK                      = 0x7
+       PERF_RECORD_READ                      = 0x8
+       PERF_RECORD_SAMPLE                    = 0x9
+       PERF_RECORD_MMAP2                     = 0xa
+       PERF_RECORD_AUX                       = 0xb
+       PERF_RECORD_ITRACE_START              = 0xc
+       PERF_RECORD_LOST_SAMPLES              = 0xd
+       PERF_RECORD_SWITCH                    = 0xe
+       PERF_RECORD_SWITCH_CPU_WIDE           = 0xf
+       PERF_RECORD_NAMESPACES                = 0x10
+       PERF_RECORD_KSYMBOL                   = 0x11
+       PERF_RECORD_BPF_EVENT                 = 0x12
+       PERF_RECORD_CGROUP                    = 0x13
+       PERF_RECORD_TEXT_POKE                 = 0x14
+       PERF_RECORD_MAX                       = 0x15
+       PERF_RECORD_KSYMBOL_TYPE_UNKNOWN      = 0x0
+       PERF_RECORD_KSYMBOL_TYPE_BPF          = 0x1
+       PERF_RECORD_KSYMBOL_TYPE_OOL          = 0x2
+       PERF_RECORD_KSYMBOL_TYPE_MAX          = 0x3
+       PERF_BPF_EVENT_UNKNOWN                = 0x0
+       PERF_BPF_EVENT_PROG_LOAD              = 0x1
+       PERF_BPF_EVENT_PROG_UNLOAD            = 0x2
+       PERF_BPF_EVENT_MAX                    = 0x3
+       PERF_CONTEXT_HV                       = -0x20
+       PERF_CONTEXT_KERNEL                   = -0x80
+       PERF_CONTEXT_USER                     = -0x200
+       PERF_CONTEXT_GUEST                    = -0x800
+       PERF_CONTEXT_GUEST_KERNEL             = -0x880
+       PERF_CONTEXT_GUEST_USER               = -0xa00
+       PERF_CONTEXT_MAX                      = -0xfff
 )
 
 type TCPMD5Sig struct {
@@ -1325,6 +1324,394 @@ const (
        SizeofTpacketStatsV3 = 0xc
 )
 
+const (
+       IFLA_UNSPEC                                = 0x0
+       IFLA_ADDRESS                               = 0x1
+       IFLA_BROADCAST                             = 0x2
+       IFLA_IFNAME                                = 0x3
+       IFLA_MTU                                   = 0x4
+       IFLA_LINK                                  = 0x5
+       IFLA_QDISC                                 = 0x6
+       IFLA_STATS                                 = 0x7
+       IFLA_COST                                  = 0x8
+       IFLA_PRIORITY                              = 0x9
+       IFLA_MASTER                                = 0xa
+       IFLA_WIRELESS                              = 0xb
+       IFLA_PROTINFO                              = 0xc
+       IFLA_TXQLEN                                = 0xd
+       IFLA_MAP                                   = 0xe
+       IFLA_WEIGHT                                = 0xf
+       IFLA_OPERSTATE                             = 0x10
+       IFLA_LINKMODE                              = 0x11
+       IFLA_LINKINFO                              = 0x12
+       IFLA_NET_NS_PID                            = 0x13
+       IFLA_IFALIAS                               = 0x14
+       IFLA_NUM_VF                                = 0x15
+       IFLA_VFINFO_LIST                           = 0x16
+       IFLA_STATS64                               = 0x17
+       IFLA_VF_PORTS                              = 0x18
+       IFLA_PORT_SELF                             = 0x19
+       IFLA_AF_SPEC                               = 0x1a
+       IFLA_GROUP                                 = 0x1b
+       IFLA_NET_NS_FD                             = 0x1c
+       IFLA_EXT_MASK                              = 0x1d
+       IFLA_PROMISCUITY                           = 0x1e
+       IFLA_NUM_TX_QUEUES                         = 0x1f
+       IFLA_NUM_RX_QUEUES                         = 0x20
+       IFLA_CARRIER                               = 0x21
+       IFLA_PHYS_PORT_ID                          = 0x22
+       IFLA_CARRIER_CHANGES                       = 0x23
+       IFLA_PHYS_SWITCH_ID                        = 0x24
+       IFLA_LINK_NETNSID                          = 0x25
+       IFLA_PHYS_PORT_NAME                        = 0x26
+       IFLA_PROTO_DOWN                            = 0x27
+       IFLA_GSO_MAX_SEGS                          = 0x28
+       IFLA_GSO_MAX_SIZE                          = 0x29
+       IFLA_PAD                                   = 0x2a
+       IFLA_XDP                                   = 0x2b
+       IFLA_EVENT                                 = 0x2c
+       IFLA_NEW_NETNSID                           = 0x2d
+       IFLA_IF_NETNSID                            = 0x2e
+       IFLA_TARGET_NETNSID                        = 0x2e
+       IFLA_CARRIER_UP_COUNT                      = 0x2f
+       IFLA_CARRIER_DOWN_COUNT                    = 0x30
+       IFLA_NEW_IFINDEX                           = 0x31
+       IFLA_MIN_MTU                               = 0x32
+       IFLA_MAX_MTU                               = 0x33
+       IFLA_PROP_LIST                             = 0x34
+       IFLA_ALT_IFNAME                            = 0x35
+       IFLA_PERM_ADDRESS                          = 0x36
+       IFLA_INET_UNSPEC                           = 0x0
+       IFLA_INET_CONF                             = 0x1
+       IFLA_INET6_UNSPEC                          = 0x0
+       IFLA_INET6_FLAGS                           = 0x1
+       IFLA_INET6_CONF                            = 0x2
+       IFLA_INET6_STATS                           = 0x3
+       IFLA_INET6_MCAST                           = 0x4
+       IFLA_INET6_CACHEINFO                       = 0x5
+       IFLA_INET6_ICMP6STATS                      = 0x6
+       IFLA_INET6_TOKEN                           = 0x7
+       IFLA_INET6_ADDR_GEN_MODE                   = 0x8
+       IFLA_BR_UNSPEC                             = 0x0
+       IFLA_BR_FORWARD_DELAY                      = 0x1
+       IFLA_BR_HELLO_TIME                         = 0x2
+       IFLA_BR_MAX_AGE                            = 0x3
+       IFLA_BR_AGEING_TIME                        = 0x4
+       IFLA_BR_STP_STATE                          = 0x5
+       IFLA_BR_PRIORITY                           = 0x6
+       IFLA_BR_VLAN_FILTERING                     = 0x7
+       IFLA_BR_VLAN_PROTOCOL                      = 0x8
+       IFLA_BR_GROUP_FWD_MASK                     = 0x9
+       IFLA_BR_ROOT_ID                            = 0xa
+       IFLA_BR_BRIDGE_ID                          = 0xb
+       IFLA_BR_ROOT_PORT                          = 0xc
+       IFLA_BR_ROOT_PATH_COST                     = 0xd
+       IFLA_BR_TOPOLOGY_CHANGE                    = 0xe
+       IFLA_BR_TOPOLOGY_CHANGE_DETECTED           = 0xf
+       IFLA_BR_HELLO_TIMER                        = 0x10
+       IFLA_BR_TCN_TIMER                          = 0x11
+       IFLA_BR_TOPOLOGY_CHANGE_TIMER              = 0x12
+       IFLA_BR_GC_TIMER                           = 0x13
+       IFLA_BR_GROUP_ADDR                         = 0x14
+       IFLA_BR_FDB_FLUSH                          = 0x15
+       IFLA_BR_MCAST_ROUTER                       = 0x16
+       IFLA_BR_MCAST_SNOOPING                     = 0x17
+       IFLA_BR_MCAST_QUERY_USE_IFADDR             = 0x18
+       IFLA_BR_MCAST_QUERIER                      = 0x19
+       IFLA_BR_MCAST_HASH_ELASTICITY              = 0x1a
+       IFLA_BR_MCAST_HASH_MAX                     = 0x1b
+       IFLA_BR_MCAST_LAST_MEMBER_CNT              = 0x1c
+       IFLA_BR_MCAST_STARTUP_QUERY_CNT            = 0x1d
+       IFLA_BR_MCAST_LAST_MEMBER_INTVL            = 0x1e
+       IFLA_BR_MCAST_MEMBERSHIP_INTVL             = 0x1f
+       IFLA_BR_MCAST_QUERIER_INTVL                = 0x20
+       IFLA_BR_MCAST_QUERY_INTVL                  = 0x21
+       IFLA_BR_MCAST_QUERY_RESPONSE_INTVL         = 0x22
+       IFLA_BR_MCAST_STARTUP_QUERY_INTVL          = 0x23
+       IFLA_BR_NF_CALL_IPTABLES                   = 0x24
+       IFLA_BR_NF_CALL_IP6TABLES                  = 0x25
+       IFLA_BR_NF_CALL_ARPTABLES                  = 0x26
+       IFLA_BR_VLAN_DEFAULT_PVID                  = 0x27
+       IFLA_BR_PAD                                = 0x28
+       IFLA_BR_VLAN_STATS_ENABLED                 = 0x29
+       IFLA_BR_MCAST_STATS_ENABLED                = 0x2a
+       IFLA_BR_MCAST_IGMP_VERSION                 = 0x2b
+       IFLA_BR_MCAST_MLD_VERSION                  = 0x2c
+       IFLA_BR_VLAN_STATS_PER_PORT                = 0x2d
+       IFLA_BR_MULTI_BOOLOPT                      = 0x2e
+       IFLA_BRPORT_UNSPEC                         = 0x0
+       IFLA_BRPORT_STATE                          = 0x1
+       IFLA_BRPORT_PRIORITY                       = 0x2
+       IFLA_BRPORT_COST                           = 0x3
+       IFLA_BRPORT_MODE                           = 0x4
+       IFLA_BRPORT_GUARD                          = 0x5
+       IFLA_BRPORT_PROTECT                        = 0x6
+       IFLA_BRPORT_FAST_LEAVE                     = 0x7
+       IFLA_BRPORT_LEARNING                       = 0x8
+       IFLA_BRPORT_UNICAST_FLOOD                  = 0x9
+       IFLA_BRPORT_PROXYARP                       = 0xa
+       IFLA_BRPORT_LEARNING_SYNC                  = 0xb
+       IFLA_BRPORT_PROXYARP_WIFI                  = 0xc
+       IFLA_BRPORT_ROOT_ID                        = 0xd
+       IFLA_BRPORT_BRIDGE_ID                      = 0xe
+       IFLA_BRPORT_DESIGNATED_PORT                = 0xf
+       IFLA_BRPORT_DESIGNATED_COST                = 0x10
+       IFLA_BRPORT_ID                             = 0x11
+       IFLA_BRPORT_NO                             = 0x12
+       IFLA_BRPORT_TOPOLOGY_CHANGE_ACK            = 0x13
+       IFLA_BRPORT_CONFIG_PENDING                 = 0x14
+       IFLA_BRPORT_MESSAGE_AGE_TIMER              = 0x15
+       IFLA_BRPORT_FORWARD_DELAY_TIMER            = 0x16
+       IFLA_BRPORT_HOLD_TIMER                     = 0x17
+       IFLA_BRPORT_FLUSH                          = 0x18
+       IFLA_BRPORT_MULTICAST_ROUTER               = 0x19
+       IFLA_BRPORT_PAD                            = 0x1a
+       IFLA_BRPORT_MCAST_FLOOD                    = 0x1b
+       IFLA_BRPORT_MCAST_TO_UCAST                 = 0x1c
+       IFLA_BRPORT_VLAN_TUNNEL                    = 0x1d
+       IFLA_BRPORT_BCAST_FLOOD                    = 0x1e
+       IFLA_BRPORT_GROUP_FWD_MASK                 = 0x1f
+       IFLA_BRPORT_NEIGH_SUPPRESS                 = 0x20
+       IFLA_BRPORT_ISOLATED                       = 0x21
+       IFLA_BRPORT_BACKUP_PORT                    = 0x22
+       IFLA_BRPORT_MRP_RING_OPEN                  = 0x23
+       IFLA_INFO_UNSPEC                           = 0x0
+       IFLA_INFO_KIND                             = 0x1
+       IFLA_INFO_DATA                             = 0x2
+       IFLA_INFO_XSTATS                           = 0x3
+       IFLA_INFO_SLAVE_KIND                       = 0x4
+       IFLA_INFO_SLAVE_DATA                       = 0x5
+       IFLA_VLAN_UNSPEC                           = 0x0
+       IFLA_VLAN_ID                               = 0x1
+       IFLA_VLAN_FLAGS                            = 0x2
+       IFLA_VLAN_EGRESS_QOS                       = 0x3
+       IFLA_VLAN_INGRESS_QOS                      = 0x4
+       IFLA_VLAN_PROTOCOL                         = 0x5
+       IFLA_VLAN_QOS_UNSPEC                       = 0x0
+       IFLA_VLAN_QOS_MAPPING                      = 0x1
+       IFLA_MACVLAN_UNSPEC                        = 0x0
+       IFLA_MACVLAN_MODE                          = 0x1
+       IFLA_MACVLAN_FLAGS                         = 0x2
+       IFLA_MACVLAN_MACADDR_MODE                  = 0x3
+       IFLA_MACVLAN_MACADDR                       = 0x4
+       IFLA_MACVLAN_MACADDR_DATA                  = 0x5
+       IFLA_MACVLAN_MACADDR_COUNT                 = 0x6
+       IFLA_VRF_UNSPEC                            = 0x0
+       IFLA_VRF_TABLE                             = 0x1
+       IFLA_VRF_PORT_UNSPEC                       = 0x0
+       IFLA_VRF_PORT_TABLE                        = 0x1
+       IFLA_MACSEC_UNSPEC                         = 0x0
+       IFLA_MACSEC_SCI                            = 0x1
+       IFLA_MACSEC_PORT                           = 0x2
+       IFLA_MACSEC_ICV_LEN                        = 0x3
+       IFLA_MACSEC_CIPHER_SUITE                   = 0x4
+       IFLA_MACSEC_WINDOW                         = 0x5
+       IFLA_MACSEC_ENCODING_SA                    = 0x6
+       IFLA_MACSEC_ENCRYPT                        = 0x7
+       IFLA_MACSEC_PROTECT                        = 0x8
+       IFLA_MACSEC_INC_SCI                        = 0x9
+       IFLA_MACSEC_ES                             = 0xa
+       IFLA_MACSEC_SCB                            = 0xb
+       IFLA_MACSEC_REPLAY_PROTECT                 = 0xc
+       IFLA_MACSEC_VALIDATION                     = 0xd
+       IFLA_MACSEC_PAD                            = 0xe
+       IFLA_MACSEC_OFFLOAD                        = 0xf
+       IFLA_XFRM_UNSPEC                           = 0x0
+       IFLA_XFRM_LINK                             = 0x1
+       IFLA_XFRM_IF_ID                            = 0x2
+       IFLA_IPVLAN_UNSPEC                         = 0x0
+       IFLA_IPVLAN_MODE                           = 0x1
+       IFLA_IPVLAN_FLAGS                          = 0x2
+       IFLA_VXLAN_UNSPEC                          = 0x0
+       IFLA_VXLAN_ID                              = 0x1
+       IFLA_VXLAN_GROUP                           = 0x2
+       IFLA_VXLAN_LINK                            = 0x3
+       IFLA_VXLAN_LOCAL                           = 0x4
+       IFLA_VXLAN_TTL                             = 0x5
+       IFLA_VXLAN_TOS                             = 0x6
+       IFLA_VXLAN_LEARNING                        = 0x7
+       IFLA_VXLAN_AGEING                          = 0x8
+       IFLA_VXLAN_LIMIT                           = 0x9
+       IFLA_VXLAN_PORT_RANGE                      = 0xa
+       IFLA_VXLAN_PROXY                           = 0xb
+       IFLA_VXLAN_RSC                             = 0xc
+       IFLA_VXLAN_L2MISS                          = 0xd
+       IFLA_VXLAN_L3MISS                          = 0xe
+       IFLA_VXLAN_PORT                            = 0xf
+       IFLA_VXLAN_GROUP6                          = 0x10
+       IFLA_VXLAN_LOCAL6                          = 0x11
+       IFLA_VXLAN_UDP_CSUM                        = 0x12
+       IFLA_VXLAN_UDP_ZERO_CSUM6_TX               = 0x13
+       IFLA_VXLAN_UDP_ZERO_CSUM6_RX               = 0x14
+       IFLA_VXLAN_REMCSUM_TX                      = 0x15
+       IFLA_VXLAN_REMCSUM_RX                      = 0x16
+       IFLA_VXLAN_GBP                             = 0x17
+       IFLA_VXLAN_REMCSUM_NOPARTIAL               = 0x18
+       IFLA_VXLAN_COLLECT_METADATA                = 0x19
+       IFLA_VXLAN_LABEL                           = 0x1a
+       IFLA_VXLAN_GPE                             = 0x1b
+       IFLA_VXLAN_TTL_INHERIT                     = 0x1c
+       IFLA_VXLAN_DF                              = 0x1d
+       IFLA_GENEVE_UNSPEC                         = 0x0
+       IFLA_GENEVE_ID                             = 0x1
+       IFLA_GENEVE_REMOTE                         = 0x2
+       IFLA_GENEVE_TTL                            = 0x3
+       IFLA_GENEVE_TOS                            = 0x4
+       IFLA_GENEVE_PORT                           = 0x5
+       IFLA_GENEVE_COLLECT_METADATA               = 0x6
+       IFLA_GENEVE_REMOTE6                        = 0x7
+       IFLA_GENEVE_UDP_CSUM                       = 0x8
+       IFLA_GENEVE_UDP_ZERO_CSUM6_TX              = 0x9
+       IFLA_GENEVE_UDP_ZERO_CSUM6_RX              = 0xa
+       IFLA_GENEVE_LABEL                          = 0xb
+       IFLA_GENEVE_TTL_INHERIT                    = 0xc
+       IFLA_GENEVE_DF                             = 0xd
+       IFLA_BAREUDP_UNSPEC                        = 0x0
+       IFLA_BAREUDP_PORT                          = 0x1
+       IFLA_BAREUDP_ETHERTYPE                     = 0x2
+       IFLA_BAREUDP_SRCPORT_MIN                   = 0x3
+       IFLA_BAREUDP_MULTIPROTO_MODE               = 0x4
+       IFLA_PPP_UNSPEC                            = 0x0
+       IFLA_PPP_DEV_FD                            = 0x1
+       IFLA_GTP_UNSPEC                            = 0x0
+       IFLA_GTP_FD0                               = 0x1
+       IFLA_GTP_FD1                               = 0x2
+       IFLA_GTP_PDP_HASHSIZE                      = 0x3
+       IFLA_GTP_ROLE                              = 0x4
+       IFLA_BOND_UNSPEC                           = 0x0
+       IFLA_BOND_MODE                             = 0x1
+       IFLA_BOND_ACTIVE_SLAVE                     = 0x2
+       IFLA_BOND_MIIMON                           = 0x3
+       IFLA_BOND_UPDELAY                          = 0x4
+       IFLA_BOND_DOWNDELAY                        = 0x5
+       IFLA_BOND_USE_CARRIER                      = 0x6
+       IFLA_BOND_ARP_INTERVAL                     = 0x7
+       IFLA_BOND_ARP_IP_TARGET                    = 0x8
+       IFLA_BOND_ARP_VALIDATE                     = 0x9
+       IFLA_BOND_ARP_ALL_TARGETS                  = 0xa
+       IFLA_BOND_PRIMARY                          = 0xb
+       IFLA_BOND_PRIMARY_RESELECT                 = 0xc
+       IFLA_BOND_FAIL_OVER_MAC                    = 0xd
+       IFLA_BOND_XMIT_HASH_POLICY                 = 0xe
+       IFLA_BOND_RESEND_IGMP                      = 0xf
+       IFLA_BOND_NUM_PEER_NOTIF                   = 0x10
+       IFLA_BOND_ALL_SLAVES_ACTIVE                = 0x11
+       IFLA_BOND_MIN_LINKS                        = 0x12
+       IFLA_BOND_LP_INTERVAL                      = 0x13
+       IFLA_BOND_PACKETS_PER_SLAVE                = 0x14
+       IFLA_BOND_AD_LACP_RATE                     = 0x15
+       IFLA_BOND_AD_SELECT                        = 0x16
+       IFLA_BOND_AD_INFO                          = 0x17
+       IFLA_BOND_AD_ACTOR_SYS_PRIO                = 0x18
+       IFLA_BOND_AD_USER_PORT_KEY                 = 0x19
+       IFLA_BOND_AD_ACTOR_SYSTEM                  = 0x1a
+       IFLA_BOND_TLB_DYNAMIC_LB                   = 0x1b
+       IFLA_BOND_PEER_NOTIF_DELAY                 = 0x1c
+       IFLA_BOND_AD_INFO_UNSPEC                   = 0x0
+       IFLA_BOND_AD_INFO_AGGREGATOR               = 0x1
+       IFLA_BOND_AD_INFO_NUM_PORTS                = 0x2
+       IFLA_BOND_AD_INFO_ACTOR_KEY                = 0x3
+       IFLA_BOND_AD_INFO_PARTNER_KEY              = 0x4
+       IFLA_BOND_AD_INFO_PARTNER_MAC              = 0x5
+       IFLA_BOND_SLAVE_UNSPEC                     = 0x0
+       IFLA_BOND_SLAVE_STATE                      = 0x1
+       IFLA_BOND_SLAVE_MII_STATUS                 = 0x2
+       IFLA_BOND_SLAVE_LINK_FAILURE_COUNT         = 0x3
+       IFLA_BOND_SLAVE_PERM_HWADDR                = 0x4
+       IFLA_BOND_SLAVE_QUEUE_ID                   = 0x5
+       IFLA_BOND_SLAVE_AD_AGGREGATOR_ID           = 0x6
+       IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE   = 0x7
+       IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 0x8
+       IFLA_VF_INFO_UNSPEC                        = 0x0
+       IFLA_VF_INFO                               = 0x1
+       IFLA_VF_UNSPEC                             = 0x0
+       IFLA_VF_MAC                                = 0x1
+       IFLA_VF_VLAN                               = 0x2
+       IFLA_VF_TX_RATE                            = 0x3
+       IFLA_VF_SPOOFCHK                           = 0x4
+       IFLA_VF_LINK_STATE                         = 0x5
+       IFLA_VF_RATE                               = 0x6
+       IFLA_VF_RSS_QUERY_EN                       = 0x7
+       IFLA_VF_STATS                              = 0x8
+       IFLA_VF_TRUST                              = 0x9
+       IFLA_VF_IB_NODE_GUID                       = 0xa
+       IFLA_VF_IB_PORT_GUID                       = 0xb
+       IFLA_VF_VLAN_LIST                          = 0xc
+       IFLA_VF_BROADCAST                          = 0xd
+       IFLA_VF_VLAN_INFO_UNSPEC                   = 0x0
+       IFLA_VF_VLAN_INFO                          = 0x1
+       IFLA_VF_LINK_STATE_AUTO                    = 0x0
+       IFLA_VF_LINK_STATE_ENABLE                  = 0x1
+       IFLA_VF_LINK_STATE_DISABLE                 = 0x2
+       IFLA_VF_STATS_RX_PACKETS                   = 0x0
+       IFLA_VF_STATS_TX_PACKETS                   = 0x1
+       IFLA_VF_STATS_RX_BYTES                     = 0x2
+       IFLA_VF_STATS_TX_BYTES                     = 0x3
+       IFLA_VF_STATS_BROADCAST                    = 0x4
+       IFLA_VF_STATS_MULTICAST                    = 0x5
+       IFLA_VF_STATS_PAD                          = 0x6
+       IFLA_VF_STATS_RX_DROPPED                   = 0x7
+       IFLA_VF_STATS_TX_DROPPED                   = 0x8
+       IFLA_VF_PORT_UNSPEC                        = 0x0
+       IFLA_VF_PORT                               = 0x1
+       IFLA_PORT_UNSPEC                           = 0x0
+       IFLA_PORT_VF                               = 0x1
+       IFLA_PORT_PROFILE                          = 0x2
+       IFLA_PORT_VSI_TYPE                         = 0x3
+       IFLA_PORT_INSTANCE_UUID                    = 0x4
+       IFLA_PORT_HOST_UUID                        = 0x5
+       IFLA_PORT_REQUEST                          = 0x6
+       IFLA_PORT_RESPONSE                         = 0x7
+       IFLA_IPOIB_UNSPEC                          = 0x0
+       IFLA_IPOIB_PKEY                            = 0x1
+       IFLA_IPOIB_MODE                            = 0x2
+       IFLA_IPOIB_UMCAST                          = 0x3
+       IFLA_HSR_UNSPEC                            = 0x0
+       IFLA_HSR_SLAVE1                            = 0x1
+       IFLA_HSR_SLAVE2                            = 0x2
+       IFLA_HSR_MULTICAST_SPEC                    = 0x3
+       IFLA_HSR_SUPERVISION_ADDR                  = 0x4
+       IFLA_HSR_SEQ_NR                            = 0x5
+       IFLA_HSR_VERSION                           = 0x6
+       IFLA_STATS_UNSPEC                          = 0x0
+       IFLA_STATS_LINK_64                         = 0x1
+       IFLA_STATS_LINK_XSTATS                     = 0x2
+       IFLA_STATS_LINK_XSTATS_SLAVE               = 0x3
+       IFLA_STATS_LINK_OFFLOAD_XSTATS             = 0x4
+       IFLA_STATS_AF_SPEC                         = 0x5
+       IFLA_OFFLOAD_XSTATS_UNSPEC                 = 0x0
+       IFLA_OFFLOAD_XSTATS_CPU_HIT                = 0x1
+       IFLA_XDP_UNSPEC                            = 0x0
+       IFLA_XDP_FD                                = 0x1
+       IFLA_XDP_ATTACHED                          = 0x2
+       IFLA_XDP_FLAGS                             = 0x3
+       IFLA_XDP_PROG_ID                           = 0x4
+       IFLA_XDP_DRV_PROG_ID                       = 0x5
+       IFLA_XDP_SKB_PROG_ID                       = 0x6
+       IFLA_XDP_HW_PROG_ID                        = 0x7
+       IFLA_XDP_EXPECTED_FD                       = 0x8
+       IFLA_EVENT_NONE                            = 0x0
+       IFLA_EVENT_REBOOT                          = 0x1
+       IFLA_EVENT_FEATURES                        = 0x2
+       IFLA_EVENT_BONDING_FAILOVER                = 0x3
+       IFLA_EVENT_NOTIFY_PEERS                    = 0x4
+       IFLA_EVENT_IGMP_RESEND                     = 0x5
+       IFLA_EVENT_BONDING_OPTIONS                 = 0x6
+       IFLA_TUN_UNSPEC                            = 0x0
+       IFLA_TUN_OWNER                             = 0x1
+       IFLA_TUN_GROUP                             = 0x2
+       IFLA_TUN_TYPE                              = 0x3
+       IFLA_TUN_PI                                = 0x4
+       IFLA_TUN_VNET_HDR                          = 0x5
+       IFLA_TUN_PERSIST                           = 0x6
+       IFLA_TUN_MULTI_QUEUE                       = 0x7
+       IFLA_TUN_NUM_QUEUES                        = 0x8
+       IFLA_TUN_NUM_DISABLED_QUEUES               = 0x9
+       IFLA_RMNET_UNSPEC                          = 0x0
+       IFLA_RMNET_MUX_ID                          = 0x1
+       IFLA_RMNET_FLAGS                           = 0x2
+)
+
 const (
        NF_INET_PRE_ROUTING  = 0x0
        NF_INET_LOCAL_IN     = 0x1
@@ -1412,7 +1799,7 @@ const (
        NFT_MSG_DELOBJ                    = 0x14
        NFT_MSG_GETOBJ_RESET              = 0x15
        NFT_MSG_MAX                       = 0x19
-       NFTA_LIST_UNPEC                   = 0x0
+       NFTA_LIST_UNSPEC                  = 0x0
        NFTA_LIST_ELEM                    = 0x1
        NFTA_HOOK_UNSPEC                  = 0x0
        NFTA_HOOK_HOOKNUM                 = 0x1
@@ -1851,9 +2238,12 @@ type XDPMmapOffsets struct {
 }
 
 type XDPStatistics struct {
-       Rx_dropped       uint64
-       Rx_invalid_descs uint64
-       Tx_invalid_descs uint64
+       Rx_dropped               uint64
+       Rx_invalid_descs         uint64
+       Tx_invalid_descs         uint64
+       Rx_ring_full             uint64
+       Rx_fill_ring_empty_descs uint64
+       Tx_ring_empty_descs      uint64
 }
 
 type XDPDesc struct {
@@ -2500,7 +2890,7 @@ const (
        DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE     = 0x3c
        DEVLINK_ATTR_PAD                          = 0x3d
        DEVLINK_ATTR_ESWITCH_ENCAP_MODE           = 0x3e
-       DEVLINK_ATTR_MAX                          = 0x90
+       DEVLINK_ATTR_MAX                          = 0x94
        DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE     = 0x0
        DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX  = 0x1
        DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT      = 0x0
@@ -2567,3 +2957,27 @@ const (
        CAN_RAW_FD_FRAMES     = 0x5
        CAN_RAW_JOIN_FILTERS  = 0x6
 )
+
+type WatchdogInfo struct {
+       Options  uint32
+       Version  uint32
+       Identity [32]uint8
+}
+
+type PPSFData struct {
+       Info    PPSKInfo
+       Timeout PPSKTime
+}
+
+type PPSKParams struct {
+       Api_version   int32
+       Mode          int32
+       Assert_off_tu PPSKTime
+       Clear_off_tu  PPSKTime
+}
+
+type PPSKTime struct {
+       Sec   int64
+       Nsec  int32
+       Flags uint32
+}
index 73509d896a2ac825e2c444a6ded75dcf2eef6af1..d54618aa61f5862581ab2a1655977136c7026f86 100644 (file)
@@ -602,3 +602,18 @@ type TIPCSIOCNodeIDReq struct {
        Peer uint32
        Id   [16]int8
 }
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+}
+
+const (
+       PPS_GETPARAMS = 0x800470a1
+       PPS_SETPARAMS = 0x400470a2
+       PPS_GETCAP    = 0x800470a3
+       PPS_FETCH     = 0xc00470a4
+)
index 45eb8738b0df120f8c80159bb13167c0a41a8445..741d25be95742c7078423593d13a69986c2d3ab8 100644 (file)
@@ -619,3 +619,19 @@ type TIPCSIOCNodeIDReq struct {
        Peer uint32
        Id   [16]int8
 }
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+       _               [4]byte
+}
+
+const (
+       PPS_GETPARAMS = 0x800870a1
+       PPS_SETPARAMS = 0x400870a2
+       PPS_GETCAP    = 0x800870a3
+       PPS_FETCH     = 0xc00870a4
+)
index 8f6b453aba5b148321ef09de7aedb1dfa5c1660b..e8d982c3df7bad3e4d45cce33bc103e2565663a2 100644 (file)
@@ -596,3 +596,19 @@ type TIPCSIOCNodeIDReq struct {
        Peer uint32
        Id   [16]uint8
 }
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+       _               [4]byte
+}
+
+const (
+       PPS_GETPARAMS = 0x800470a1
+       PPS_SETPARAMS = 0x400470a2
+       PPS_GETCAP    = 0x800470a3
+       PPS_FETCH     = 0xc00470a4
+)
index b1e0c24f192fdb71ac19908174a0b855ed5217ea..311cf2155d5774cb676c32a4befdbacc2a81e1b8 100644 (file)
@@ -598,3 +598,19 @@ type TIPCSIOCNodeIDReq struct {
        Peer uint32
        Id   [16]int8
 }
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+       _               [4]byte
+}
+
+const (
+       PPS_GETPARAMS = 0x800870a1
+       PPS_SETPARAMS = 0x400870a2
+       PPS_GETCAP    = 0x800870a3
+       PPS_FETCH     = 0xc00870a4
+)
index fb802c3ec9b377d136a666eaf2c82a1cc48ef98c..1312bdf77feaceabf97f7a935bb821131a4370d4 100644 (file)
@@ -602,3 +602,19 @@ type TIPCSIOCNodeIDReq struct {
        Peer uint32
        Id   [16]int8
 }
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+       _               [4]byte
+}
+
+const (
+       PPS_GETPARAMS = 0x400470a1
+       PPS_SETPARAMS = 0x800470a2
+       PPS_GETCAP    = 0x400470a3
+       PPS_FETCH     = 0xc00470a4
+)
index 30abcf3bb8e3087e724c37537120aff98ffb03ec..2a993481950c8f50bcecb750c4dbe3033b9f07b2 100644 (file)
@@ -601,3 +601,19 @@ type TIPCSIOCNodeIDReq struct {
        Peer uint32
        Id   [16]int8
 }
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+       _               [4]byte
+}
+
+const (
+       PPS_GETPARAMS = 0x400870a1
+       PPS_SETPARAMS = 0x800870a2
+       PPS_GETCAP    = 0x400870a3
+       PPS_FETCH     = 0xc00870a4
+)
index 99761aa9a78ac78bac651efeed973623404fee99..f964307b293c9d758bb03d327a7de3b1b47303db 100644 (file)
@@ -601,3 +601,19 @@ type TIPCSIOCNodeIDReq struct {
        Peer uint32
        Id   [16]int8
 }
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+       _               [4]byte
+}
+
+const (
+       PPS_GETPARAMS = 0x400870a1
+       PPS_SETPARAMS = 0x800870a2
+       PPS_GETCAP    = 0x400870a3
+       PPS_FETCH     = 0xc00870a4
+)
index 293690348f6e2d8293593f70f9562aaf4a0db064..ca0fab27020bdc646d72f97d35e426b31f47aef6 100644 (file)
@@ -602,3 +602,19 @@ type TIPCSIOCNodeIDReq struct {
        Peer uint32
        Id   [16]int8
 }
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+       _               [4]byte
+}
+
+const (
+       PPS_GETPARAMS = 0x400470a1
+       PPS_SETPARAMS = 0x800470a2
+       PPS_GETCAP    = 0x400470a3
+       PPS_FETCH     = 0xc00470a4
+)
index 0ca856e559b6cbfd5095c06fc1901beb2c457194..257e0042473c25d3e0eb7716cc54861bfff33c5d 100644 (file)
@@ -608,3 +608,19 @@ type TIPCSIOCNodeIDReq struct {
        Peer uint32
        Id   [16]uint8
 }
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+       _               [4]byte
+}
+
+const (
+       PPS_GETPARAMS = 0x400870a1
+       PPS_SETPARAMS = 0x800870a2
+       PPS_GETCAP    = 0x400870a3
+       PPS_FETCH     = 0xc00870a4
+)
index f50f6482eee7d6b5c9b18971b45df8c3de27e790..980dd31736a6fa97e84b5146b30a3cf24ceaf0bf 100644 (file)
@@ -608,3 +608,19 @@ type TIPCSIOCNodeIDReq struct {
        Peer uint32
        Id   [16]uint8
 }
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+       _               [4]byte
+}
+
+const (
+       PPS_GETPARAMS = 0x400870a1
+       PPS_SETPARAMS = 0x800870a2
+       PPS_GETCAP    = 0x400870a3
+       PPS_FETCH     = 0xc00870a4
+)
index 4d3ac8d7b40970d9bec558857a7e048b116a9877..d9fdab20b83daee4fdef4f6f4f4b2eb8730a1fe8 100644 (file)
@@ -626,3 +626,19 @@ type TIPCSIOCNodeIDReq struct {
        Peer uint32
        Id   [16]uint8
 }
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+       _               [4]byte
+}
+
+const (
+       PPS_GETPARAMS = 0x800870a1
+       PPS_SETPARAMS = 0x400870a2
+       PPS_GETCAP    = 0x800870a3
+       PPS_FETCH     = 0xc00870a4
+)
index 349f483a80ea630111fc5a3d747223e093b67424..c25de8c679cda805ae7e4473e4d417ce030ce3a7 100644 (file)
@@ -622,3 +622,19 @@ type TIPCSIOCNodeIDReq struct {
        Peer uint32
        Id   [16]int8
 }
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+       _               [4]byte
+}
+
+const (
+       PPS_GETPARAMS = 0x800870a1
+       PPS_SETPARAMS = 0x400870a2
+       PPS_GETCAP    = 0x800870a3
+       PPS_FETCH     = 0xc00870a4
+)
index 80c73beaa1556fd0cb9dba1f991ab8aa342d1b28..97fca65340e656c9035a3702db7005399e6dae69 100644 (file)
@@ -603,3 +603,19 @@ type TIPCSIOCNodeIDReq struct {
        Peer uint32
        Id   [16]int8
 }
+
+type PPSKInfo struct {
+       Assert_sequence uint32
+       Clear_sequence  uint32
+       Assert_tu       PPSKTime
+       Clear_tu        PPSKTime
+       Current_mode    int32
+       _               [4]byte
+}
+
+const (
+       PPS_GETPARAMS = 0x400870a1
+       PPS_SETPARAMS = 0x800870a2
+       PPS_GETCAP    = 0x400870a3
+       PPS_FETCH     = 0xc00870a4
+)
index 23ed9fe51d4cf9929772409ada72b4939b9662de..db817f3ba828c6c4ec370e30b849530a4ee7f588 100644 (file)
@@ -88,7 +88,6 @@ type Stat_t struct {
        Mtim    Timespec
        Ctim    Timespec
        Blksize int32
-       _       [4]byte
        Blocks  int64
        Fstype  [16]int8
 }
@@ -96,7 +95,6 @@ type Stat_t struct {
 type Flock_t struct {
        Type   int16
        Whence int16
-       _      [4]byte
        Start  int64
        Len    int64
        Sysid  int32
@@ -138,12 +136,12 @@ type RawSockaddrInet4 struct {
 }
 
 type RawSockaddrInet6 struct {
-       Family         uint16
-       Port           uint16
-       Flowinfo       uint32
-       Addr           [16]byte /* in6_addr */
-       Scope_id       uint32
-       X__sin6_src_id uint32
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+       _        uint32
 }
 
 type RawSockaddrUnix struct {
@@ -196,10 +194,8 @@ type IPv6Mreq struct {
 type Msghdr struct {
        Name         *byte
        Namelen      uint32
-       _            [4]byte
        Iov          *Iovec
        Iovlen       int32
-       _            [4]byte
        Accrights    *int8
        Accrightslen int32
        _            [4]byte
@@ -228,7 +224,7 @@ type IPv6MTUInfo struct {
 }
 
 type ICMPv6Filter struct {
-       X__icmp6_filt [8]uint32
+       Filt [8]uint32
 }
 
 const (
@@ -291,7 +287,6 @@ type IfMsghdr struct {
        Addrs   int32
        Flags   int32
        Index   uint16
-       _       [2]byte
        Data    IfData
 }
 
@@ -299,7 +294,6 @@ type IfData struct {
        Type       uint8
        Addrlen    uint8
        Hdrlen     uint8
-       _          [1]byte
        Mtu        uint32
        Metric     uint32
        Baudrate   uint32
@@ -324,7 +318,6 @@ type IfaMsghdr struct {
        Addrs   int32
        Flags   int32
        Index   uint16
-       _       [2]byte
        Metric  int32
 }
 
@@ -333,7 +326,6 @@ type RtMsghdr struct {
        Version uint8
        Type    uint8
        Index   uint16
-       _       [2]byte
        Flags   int32
        Addrs   int32
        Pid     int32
@@ -371,15 +363,14 @@ type BpfVersion struct {
 }
 
 type BpfStat struct {
-       Recv    uint64
-       Drop    uint64
-       Capt    uint64
-       Padding [13]uint64
+       Recv uint64
+       Drop uint64
+       Capt uint64
+       _    [13]uint64
 }
 
 type BpfProgram struct {
        Len   uint32
-       _     [4]byte
        Insns *BpfInsn
 }
 
index af828a91bcf3fe6e2cee28cada66753543d8a5c8..6122f557a097a508b31fa34ff100db0d89337140 100644 (file)
 package windows // import "golang.org/x/sys/windows"
 
 import (
+       "bytes"
+       "strings"
        "syscall"
+       "unsafe"
+
+       "golang.org/x/sys/internal/unsafeheader"
 )
 
 // ByteSliceFromString returns a NUL-terminated slice of bytes
 // containing the text of s. If s contains a NUL byte at any
 // location, it returns (nil, syscall.EINVAL).
 func ByteSliceFromString(s string) ([]byte, error) {
-       for i := 0; i < len(s); i++ {
-               if s[i] == 0 {
-                       return nil, syscall.EINVAL
-               }
+       if strings.IndexByte(s, 0) != -1 {
+               return nil, syscall.EINVAL
        }
        a := make([]byte, len(s)+1)
        copy(a, s)
@@ -53,6 +56,41 @@ func BytePtrFromString(s string) (*byte, error) {
        return &a[0], nil
 }
 
+// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any
+// bytes after the NUL removed.
+func ByteSliceToString(s []byte) string {
+       if i := bytes.IndexByte(s, 0); i != -1 {
+               s = s[:i]
+       }
+       return string(s)
+}
+
+// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.
+// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated
+// at a zero byte; if the zero byte is not present, the program may crash.
+func BytePtrToString(p *byte) string {
+       if p == nil {
+               return ""
+       }
+       if *p == 0 {
+               return ""
+       }
+
+       // Find NUL terminator.
+       n := 0
+       for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {
+               ptr = unsafe.Pointer(uintptr(ptr) + 1)
+       }
+
+       var s []byte
+       h := (*unsafeheader.Slice)(unsafe.Pointer(&s))
+       h.Data = unsafe.Pointer(p)
+       h.Len = n
+       h.Cap = n
+
+       return string(s)
+}
+
 // Single-word zero for use when we need a valid pointer to 0 bytes.
 // See mksyscall.pl.
 var _zero uintptr
index 2aa29e8396d36231b07d1893a4ad7cbbbe34c6fc..88cff4e0d456f03ebf56e8e50f08f13c92efae1e 100644 (file)
@@ -92,11 +92,11 @@ func UTF16FromString(s string) ([]uint16, error) {
 }
 
 // UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,
-// with a terminating NUL removed.
+// with a terminating NUL and any bytes after the NUL removed.
 func UTF16ToString(s []uint16) string {
        for i, v := range s {
                if v == 0 {
-                       s = s[0:i]
+                       s = s[:i]
                        break
                }
        }
@@ -120,7 +120,7 @@ func UTF16PtrFromString(s string) (*uint16, error) {
 }
 
 // UTF16PtrToString takes a pointer to a UTF-16 sequence and returns the corresponding UTF-8 encoded string.
-// If the pointer is nil, this returns the empty string. This assumes that the UTF-16 sequence is terminated
+// If the pointer is nil, it returns the empty string. It assumes that the UTF-16 sequence is terminated
 // at a zero word; if the zero word is not present, the program may crash.
 func UTF16PtrToString(p *uint16) string {
        if p == nil {
@@ -270,9 +270,11 @@ func NewCallbackCDecl(fn interface{}) uintptr {
 //sys  RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW
 //sys  RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW
 //sys  GetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId
+//sys  ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) = kernel32.ProcessIdToSessionId
 //sys  GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode
 //sys  SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode
 //sys  GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo
+//sys  SetConsoleCursorPosition(console Handle, position Coord) (err error) = kernel32.SetConsoleCursorPosition
 //sys  WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW
 //sys  ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW
 //sys  CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot
@@ -348,6 +350,7 @@ func NewCallbackCDecl(fn interface{}) uintptr {
 //sys  getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetThreadPreferredUILanguages
 //sys  getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetUserPreferredUILanguages
 //sys  getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetSystemPreferredUILanguages
+//sys   GetFinalPathNameByHandleW(file syscall.Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) = kernel32.GetFinalPathNameByHandleW
 
 // Process Status API (PSAPI)
 //sys  EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses
@@ -388,11 +391,7 @@ func GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err
        r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), ordinal, 0)
        proc = uintptr(r0)
        if proc == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
@@ -1089,11 +1088,7 @@ func WSASendMsg(fd Handle, msg *WSAMsg, flags uint32, bytesSent *uint32, overlap
        }
        r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.sendAddr, 6, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(flags), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
        if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return err
 }
@@ -1105,11 +1100,7 @@ func WSARecvMsg(fd Handle, msg *WSAMsg, bytesReceived *uint32, overlapped *Overl
        }
        r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.recvAddr, 5, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(bytesReceived)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0)
        if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return err
 }
index 347f13dbf6e64bdc4f4153d1e1e5fc24e88ca1a1..a1c801d1b8f6af77e5e3598f61bbe106c2570e2c 100644 (file)
@@ -17,6 +17,7 @@ const (
 
 var (
        errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
+       errERROR_EINVAL     error = syscall.EINVAL
 )
 
 // errnoErr returns common boxed Errno values, to prevent
@@ -24,7 +25,7 @@ var (
 func errnoErr(e syscall.Errno) error {
        switch e {
        case 0:
-               return nil
+               return errERROR_EINVAL
        case errnoERROR_IO_PENDING:
                return errERROR_IO_PENDING
        }
@@ -36,375 +37,392 @@ func errnoErr(e syscall.Errno) error {
 
 var (
        modadvapi32 = NewLazySystemDLL("advapi32.dll")
+       modcrypt32  = NewLazySystemDLL("crypt32.dll")
+       moddnsapi   = NewLazySystemDLL("dnsapi.dll")
+       modiphlpapi = NewLazySystemDLL("iphlpapi.dll")
        modkernel32 = NewLazySystemDLL("kernel32.dll")
-       modshell32  = NewLazySystemDLL("shell32.dll")
-       moduserenv  = NewLazySystemDLL("userenv.dll")
        modmswsock  = NewLazySystemDLL("mswsock.dll")
-       modcrypt32  = NewLazySystemDLL("crypt32.dll")
-       moduser32   = NewLazySystemDLL("user32.dll")
-       modole32    = NewLazySystemDLL("ole32.dll")
+       modnetapi32 = NewLazySystemDLL("netapi32.dll")
        modntdll    = NewLazySystemDLL("ntdll.dll")
+       modole32    = NewLazySystemDLL("ole32.dll")
        modpsapi    = NewLazySystemDLL("psapi.dll")
-       modws2_32   = NewLazySystemDLL("ws2_32.dll")
-       moddnsapi   = NewLazySystemDLL("dnsapi.dll")
-       modiphlpapi = NewLazySystemDLL("iphlpapi.dll")
        modsecur32  = NewLazySystemDLL("secur32.dll")
-       modnetapi32 = NewLazySystemDLL("netapi32.dll")
+       modshell32  = NewLazySystemDLL("shell32.dll")
+       moduser32   = NewLazySystemDLL("user32.dll")
+       moduserenv  = NewLazySystemDLL("userenv.dll")
+       modws2_32   = NewLazySystemDLL("ws2_32.dll")
        modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
 
-       procRegisterEventSourceW                                 = modadvapi32.NewProc("RegisterEventSourceW")
-       procDeregisterEventSource                                = modadvapi32.NewProc("DeregisterEventSource")
-       procReportEventW                                         = modadvapi32.NewProc("ReportEventW")
-       procOpenSCManagerW                                       = modadvapi32.NewProc("OpenSCManagerW")
+       procAdjustTokenGroups                                    = modadvapi32.NewProc("AdjustTokenGroups")
+       procAdjustTokenPrivileges                                = modadvapi32.NewProc("AdjustTokenPrivileges")
+       procAllocateAndInitializeSid                             = modadvapi32.NewProc("AllocateAndInitializeSid")
+       procBuildSecurityDescriptorW                             = modadvapi32.NewProc("BuildSecurityDescriptorW")
+       procChangeServiceConfig2W                                = modadvapi32.NewProc("ChangeServiceConfig2W")
+       procChangeServiceConfigW                                 = modadvapi32.NewProc("ChangeServiceConfigW")
+       procCheckTokenMembership                                 = modadvapi32.NewProc("CheckTokenMembership")
        procCloseServiceHandle                                   = modadvapi32.NewProc("CloseServiceHandle")
+       procControlService                                       = modadvapi32.NewProc("ControlService")
+       procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc("ConvertSecurityDescriptorToStringSecurityDescriptorW")
+       procConvertSidToStringSidW                               = modadvapi32.NewProc("ConvertSidToStringSidW")
+       procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW")
+       procConvertStringSidToSidW                               = modadvapi32.NewProc("ConvertStringSidToSidW")
+       procCopySid                                              = modadvapi32.NewProc("CopySid")
        procCreateServiceW                                       = modadvapi32.NewProc("CreateServiceW")
-       procOpenServiceW                                         = modadvapi32.NewProc("OpenServiceW")
+       procCreateWellKnownSid                                   = modadvapi32.NewProc("CreateWellKnownSid")
+       procCryptAcquireContextW                                 = modadvapi32.NewProc("CryptAcquireContextW")
+       procCryptGenRandom                                       = modadvapi32.NewProc("CryptGenRandom")
+       procCryptReleaseContext                                  = modadvapi32.NewProc("CryptReleaseContext")
        procDeleteService                                        = modadvapi32.NewProc("DeleteService")
-       procStartServiceW                                        = modadvapi32.NewProc("StartServiceW")
-       procQueryServiceStatus                                   = modadvapi32.NewProc("QueryServiceStatus")
-       procQueryServiceLockStatusW                              = modadvapi32.NewProc("QueryServiceLockStatusW")
-       procControlService                                       = modadvapi32.NewProc("ControlService")
-       procStartServiceCtrlDispatcherW                          = modadvapi32.NewProc("StartServiceCtrlDispatcherW")
-       procSetServiceStatus                                     = modadvapi32.NewProc("SetServiceStatus")
-       procChangeServiceConfigW                                 = modadvapi32.NewProc("ChangeServiceConfigW")
-       procQueryServiceConfigW                                  = modadvapi32.NewProc("QueryServiceConfigW")
-       procChangeServiceConfig2W                                = modadvapi32.NewProc("ChangeServiceConfig2W")
-       procQueryServiceConfig2W                                 = modadvapi32.NewProc("QueryServiceConfig2W")
+       procDeregisterEventSource                                = modadvapi32.NewProc("DeregisterEventSource")
+       procDuplicateTokenEx                                     = modadvapi32.NewProc("DuplicateTokenEx")
        procEnumServicesStatusExW                                = modadvapi32.NewProc("EnumServicesStatusExW")
-       procQueryServiceStatusEx                                 = modadvapi32.NewProc("QueryServiceStatusEx")
+       procEqualSid                                             = modadvapi32.NewProc("EqualSid")
+       procFreeSid                                              = modadvapi32.NewProc("FreeSid")
+       procGetLengthSid                                         = modadvapi32.NewProc("GetLengthSid")
+       procGetNamedSecurityInfoW                                = modadvapi32.NewProc("GetNamedSecurityInfoW")
+       procGetSecurityDescriptorControl                         = modadvapi32.NewProc("GetSecurityDescriptorControl")
+       procGetSecurityDescriptorDacl                            = modadvapi32.NewProc("GetSecurityDescriptorDacl")
+       procGetSecurityDescriptorGroup                           = modadvapi32.NewProc("GetSecurityDescriptorGroup")
+       procGetSecurityDescriptorLength                          = modadvapi32.NewProc("GetSecurityDescriptorLength")
+       procGetSecurityDescriptorOwner                           = modadvapi32.NewProc("GetSecurityDescriptorOwner")
+       procGetSecurityDescriptorRMControl                       = modadvapi32.NewProc("GetSecurityDescriptorRMControl")
+       procGetSecurityDescriptorSacl                            = modadvapi32.NewProc("GetSecurityDescriptorSacl")
+       procGetSecurityInfo                                      = modadvapi32.NewProc("GetSecurityInfo")
+       procGetSidIdentifierAuthority                            = modadvapi32.NewProc("GetSidIdentifierAuthority")
+       procGetSidSubAuthority                                   = modadvapi32.NewProc("GetSidSubAuthority")
+       procGetSidSubAuthorityCount                              = modadvapi32.NewProc("GetSidSubAuthorityCount")
+       procGetTokenInformation                                  = modadvapi32.NewProc("GetTokenInformation")
+       procImpersonateSelf                                      = modadvapi32.NewProc("ImpersonateSelf")
+       procInitializeSecurityDescriptor                         = modadvapi32.NewProc("InitializeSecurityDescriptor")
+       procInitiateSystemShutdownExW                            = modadvapi32.NewProc("InitiateSystemShutdownExW")
+       procIsValidSecurityDescriptor                            = modadvapi32.NewProc("IsValidSecurityDescriptor")
+       procIsValidSid                                           = modadvapi32.NewProc("IsValidSid")
+       procIsWellKnownSid                                       = modadvapi32.NewProc("IsWellKnownSid")
+       procLookupAccountNameW                                   = modadvapi32.NewProc("LookupAccountNameW")
+       procLookupAccountSidW                                    = modadvapi32.NewProc("LookupAccountSidW")
+       procLookupPrivilegeValueW                                = modadvapi32.NewProc("LookupPrivilegeValueW")
+       procMakeAbsoluteSD                                       = modadvapi32.NewProc("MakeAbsoluteSD")
+       procMakeSelfRelativeSD                                   = modadvapi32.NewProc("MakeSelfRelativeSD")
        procNotifyServiceStatusChangeW                           = modadvapi32.NewProc("NotifyServiceStatusChangeW")
-       procGetLastError                                         = modkernel32.NewProc("GetLastError")
-       procLoadLibraryW                                         = modkernel32.NewProc("LoadLibraryW")
-       procLoadLibraryExW                                       = modkernel32.NewProc("LoadLibraryExW")
-       procFreeLibrary                                          = modkernel32.NewProc("FreeLibrary")
-       procGetProcAddress                                       = modkernel32.NewProc("GetProcAddress")
-       procGetModuleFileNameW                                   = modkernel32.NewProc("GetModuleFileNameW")
-       procGetModuleHandleExW                                   = modkernel32.NewProc("GetModuleHandleExW")
-       procGetVersion                                           = modkernel32.NewProc("GetVersion")
-       procFormatMessageW                                       = modkernel32.NewProc("FormatMessageW")
-       procExitProcess                                          = modkernel32.NewProc("ExitProcess")
-       procIsWow64Process                                       = modkernel32.NewProc("IsWow64Process")
-       procCreateFileW                                          = modkernel32.NewProc("CreateFileW")
-       procReadFile                                             = modkernel32.NewProc("ReadFile")
-       procWriteFile                                            = modkernel32.NewProc("WriteFile")
-       procGetOverlappedResult                                  = modkernel32.NewProc("GetOverlappedResult")
-       procSetFilePointer                                       = modkernel32.NewProc("SetFilePointer")
-       procCloseHandle                                          = modkernel32.NewProc("CloseHandle")
-       procGetStdHandle                                         = modkernel32.NewProc("GetStdHandle")
-       procSetStdHandle                                         = modkernel32.NewProc("SetStdHandle")
-       procFindFirstFileW                                       = modkernel32.NewProc("FindFirstFileW")
-       procFindNextFileW                                        = modkernel32.NewProc("FindNextFileW")
-       procFindClose                                            = modkernel32.NewProc("FindClose")
-       procGetFileInformationByHandle                           = modkernel32.NewProc("GetFileInformationByHandle")
-       procGetFileInformationByHandleEx                         = modkernel32.NewProc("GetFileInformationByHandleEx")
-       procGetCurrentDirectoryW                                 = modkernel32.NewProc("GetCurrentDirectoryW")
-       procSetCurrentDirectoryW                                 = modkernel32.NewProc("SetCurrentDirectoryW")
-       procCreateDirectoryW                                     = modkernel32.NewProc("CreateDirectoryW")
-       procRemoveDirectoryW                                     = modkernel32.NewProc("RemoveDirectoryW")
-       procDeleteFileW                                          = modkernel32.NewProc("DeleteFileW")
-       procMoveFileW                                            = modkernel32.NewProc("MoveFileW")
-       procMoveFileExW                                          = modkernel32.NewProc("MoveFileExW")
-       procLockFileEx                                           = modkernel32.NewProc("LockFileEx")
-       procUnlockFileEx                                         = modkernel32.NewProc("UnlockFileEx")
-       procGetComputerNameW                                     = modkernel32.NewProc("GetComputerNameW")
-       procGetComputerNameExW                                   = modkernel32.NewProc("GetComputerNameExW")
-       procSetEndOfFile                                         = modkernel32.NewProc("SetEndOfFile")
-       procGetSystemTimeAsFileTime                              = modkernel32.NewProc("GetSystemTimeAsFileTime")
-       procGetSystemTimePreciseAsFileTime                       = modkernel32.NewProc("GetSystemTimePreciseAsFileTime")
-       procGetTimeZoneInformation                               = modkernel32.NewProc("GetTimeZoneInformation")
-       procCreateIoCompletionPort                               = modkernel32.NewProc("CreateIoCompletionPort")
-       procGetQueuedCompletionStatus                            = modkernel32.NewProc("GetQueuedCompletionStatus")
-       procPostQueuedCompletionStatus                           = modkernel32.NewProc("PostQueuedCompletionStatus")
-       procCancelIo                                             = modkernel32.NewProc("CancelIo")
-       procCancelIoEx                                           = modkernel32.NewProc("CancelIoEx")
-       procCreateProcessW                                       = modkernel32.NewProc("CreateProcessW")
-       procOpenProcess                                          = modkernel32.NewProc("OpenProcess")
-       procShellExecuteW                                        = modshell32.NewProc("ShellExecuteW")
-       procSHGetKnownFolderPath                                 = modshell32.NewProc("SHGetKnownFolderPath")
-       procTerminateProcess                                     = modkernel32.NewProc("TerminateProcess")
-       procGetExitCodeProcess                                   = modkernel32.NewProc("GetExitCodeProcess")
-       procGetStartupInfoW                                      = modkernel32.NewProc("GetStartupInfoW")
-       procGetProcessTimes                                      = modkernel32.NewProc("GetProcessTimes")
-       procDuplicateHandle                                      = modkernel32.NewProc("DuplicateHandle")
-       procWaitForSingleObject                                  = modkernel32.NewProc("WaitForSingleObject")
-       procWaitForMultipleObjects                               = modkernel32.NewProc("WaitForMultipleObjects")
-       procGetTempPathW                                         = modkernel32.NewProc("GetTempPathW")
-       procCreatePipe                                           = modkernel32.NewProc("CreatePipe")
-       procGetFileType                                          = modkernel32.NewProc("GetFileType")
-       procCryptAcquireContextW                                 = modadvapi32.NewProc("CryptAcquireContextW")
-       procCryptReleaseContext                                  = modadvapi32.NewProc("CryptReleaseContext")
-       procCryptGenRandom                                       = modadvapi32.NewProc("CryptGenRandom")
-       procGetEnvironmentStringsW                               = modkernel32.NewProc("GetEnvironmentStringsW")
-       procFreeEnvironmentStringsW                              = modkernel32.NewProc("FreeEnvironmentStringsW")
-       procGetEnvironmentVariableW                              = modkernel32.NewProc("GetEnvironmentVariableW")
-       procSetEnvironmentVariableW                              = modkernel32.NewProc("SetEnvironmentVariableW")
-       procCreateEnvironmentBlock                               = moduserenv.NewProc("CreateEnvironmentBlock")
-       procDestroyEnvironmentBlock                              = moduserenv.NewProc("DestroyEnvironmentBlock")
-       procGetTickCount64                                       = modkernel32.NewProc("GetTickCount64")
-       procSetFileTime                                          = modkernel32.NewProc("SetFileTime")
-       procGetFileAttributesW                                   = modkernel32.NewProc("GetFileAttributesW")
-       procSetFileAttributesW                                   = modkernel32.NewProc("SetFileAttributesW")
-       procGetFileAttributesExW                                 = modkernel32.NewProc("GetFileAttributesExW")
-       procGetCommandLineW                                      = modkernel32.NewProc("GetCommandLineW")
-       procCommandLineToArgvW                                   = modshell32.NewProc("CommandLineToArgvW")
-       procLocalFree                                            = modkernel32.NewProc("LocalFree")
-       procSetHandleInformation                                 = modkernel32.NewProc("SetHandleInformation")
-       procFlushFileBuffers                                     = modkernel32.NewProc("FlushFileBuffers")
-       procGetFullPathNameW                                     = modkernel32.NewProc("GetFullPathNameW")
-       procGetLongPathNameW                                     = modkernel32.NewProc("GetLongPathNameW")
-       procGetShortPathNameW                                    = modkernel32.NewProc("GetShortPathNameW")
-       procCreateFileMappingW                                   = modkernel32.NewProc("CreateFileMappingW")
-       procMapViewOfFile                                        = modkernel32.NewProc("MapViewOfFile")
-       procUnmapViewOfFile                                      = modkernel32.NewProc("UnmapViewOfFile")
-       procFlushViewOfFile                                      = modkernel32.NewProc("FlushViewOfFile")
-       procVirtualLock                                          = modkernel32.NewProc("VirtualLock")
-       procVirtualUnlock                                        = modkernel32.NewProc("VirtualUnlock")
-       procVirtualAlloc                                         = modkernel32.NewProc("VirtualAlloc")
-       procVirtualFree                                          = modkernel32.NewProc("VirtualFree")
-       procVirtualProtect                                       = modkernel32.NewProc("VirtualProtect")
-       procTransmitFile                                         = modmswsock.NewProc("TransmitFile")
-       procReadDirectoryChangesW                                = modkernel32.NewProc("ReadDirectoryChangesW")
-       procCertOpenSystemStoreW                                 = modcrypt32.NewProc("CertOpenSystemStoreW")
-       procCertOpenStore                                        = modcrypt32.NewProc("CertOpenStore")
-       procCertEnumCertificatesInStore                          = modcrypt32.NewProc("CertEnumCertificatesInStore")
+       procOpenProcessToken                                     = modadvapi32.NewProc("OpenProcessToken")
+       procOpenSCManagerW                                       = modadvapi32.NewProc("OpenSCManagerW")
+       procOpenServiceW                                         = modadvapi32.NewProc("OpenServiceW")
+       procOpenThreadToken                                      = modadvapi32.NewProc("OpenThreadToken")
+       procQueryServiceConfig2W                                 = modadvapi32.NewProc("QueryServiceConfig2W")
+       procQueryServiceConfigW                                  = modadvapi32.NewProc("QueryServiceConfigW")
+       procQueryServiceLockStatusW                              = modadvapi32.NewProc("QueryServiceLockStatusW")
+       procQueryServiceStatus                                   = modadvapi32.NewProc("QueryServiceStatus")
+       procQueryServiceStatusEx                                 = modadvapi32.NewProc("QueryServiceStatusEx")
+       procRegCloseKey                                          = modadvapi32.NewProc("RegCloseKey")
+       procRegEnumKeyExW                                        = modadvapi32.NewProc("RegEnumKeyExW")
+       procRegOpenKeyExW                                        = modadvapi32.NewProc("RegOpenKeyExW")
+       procRegQueryInfoKeyW                                     = modadvapi32.NewProc("RegQueryInfoKeyW")
+       procRegQueryValueExW                                     = modadvapi32.NewProc("RegQueryValueExW")
+       procRegisterEventSourceW                                 = modadvapi32.NewProc("RegisterEventSourceW")
+       procReportEventW                                         = modadvapi32.NewProc("ReportEventW")
+       procRevertToSelf                                         = modadvapi32.NewProc("RevertToSelf")
+       procSetEntriesInAclW                                     = modadvapi32.NewProc("SetEntriesInAclW")
+       procSetNamedSecurityInfoW                                = modadvapi32.NewProc("SetNamedSecurityInfoW")
+       procSetSecurityDescriptorControl                         = modadvapi32.NewProc("SetSecurityDescriptorControl")
+       procSetSecurityDescriptorDacl                            = modadvapi32.NewProc("SetSecurityDescriptorDacl")
+       procSetSecurityDescriptorGroup                           = modadvapi32.NewProc("SetSecurityDescriptorGroup")
+       procSetSecurityDescriptorOwner                           = modadvapi32.NewProc("SetSecurityDescriptorOwner")
+       procSetSecurityDescriptorRMControl                       = modadvapi32.NewProc("SetSecurityDescriptorRMControl")
+       procSetSecurityDescriptorSacl                            = modadvapi32.NewProc("SetSecurityDescriptorSacl")
+       procSetSecurityInfo                                      = modadvapi32.NewProc("SetSecurityInfo")
+       procSetServiceStatus                                     = modadvapi32.NewProc("SetServiceStatus")
+       procSetThreadToken                                       = modadvapi32.NewProc("SetThreadToken")
+       procSetTokenInformation                                  = modadvapi32.NewProc("SetTokenInformation")
+       procStartServiceCtrlDispatcherW                          = modadvapi32.NewProc("StartServiceCtrlDispatcherW")
+       procStartServiceW                                        = modadvapi32.NewProc("StartServiceW")
        procCertAddCertificateContextToStore                     = modcrypt32.NewProc("CertAddCertificateContextToStore")
        procCertCloseStore                                       = modcrypt32.NewProc("CertCloseStore")
-       procCertGetCertificateChain                              = modcrypt32.NewProc("CertGetCertificateChain")
-       procCertFreeCertificateChain                             = modcrypt32.NewProc("CertFreeCertificateChain")
        procCertCreateCertificateContext                         = modcrypt32.NewProc("CertCreateCertificateContext")
+       procCertEnumCertificatesInStore                          = modcrypt32.NewProc("CertEnumCertificatesInStore")
+       procCertFreeCertificateChain                             = modcrypt32.NewProc("CertFreeCertificateChain")
        procCertFreeCertificateContext                           = modcrypt32.NewProc("CertFreeCertificateContext")
+       procCertGetCertificateChain                              = modcrypt32.NewProc("CertGetCertificateChain")
+       procCertOpenStore                                        = modcrypt32.NewProc("CertOpenStore")
+       procCertOpenSystemStoreW                                 = modcrypt32.NewProc("CertOpenSystemStoreW")
        procCertVerifyCertificateChainPolicy                     = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
-       procRegOpenKeyExW                                        = modadvapi32.NewProc("RegOpenKeyExW")
-       procRegCloseKey                                          = modadvapi32.NewProc("RegCloseKey")
-       procRegQueryInfoKeyW                                     = modadvapi32.NewProc("RegQueryInfoKeyW")
-       procRegEnumKeyExW                                        = modadvapi32.NewProc("RegEnumKeyExW")
-       procRegQueryValueExW                                     = modadvapi32.NewProc("RegQueryValueExW")
-       procGetCurrentProcessId                                  = modkernel32.NewProc("GetCurrentProcessId")
-       procGetConsoleMode                                       = modkernel32.NewProc("GetConsoleMode")
-       procSetConsoleMode                                       = modkernel32.NewProc("SetConsoleMode")
-       procGetConsoleScreenBufferInfo                           = modkernel32.NewProc("GetConsoleScreenBufferInfo")
-       procWriteConsoleW                                        = modkernel32.NewProc("WriteConsoleW")
-       procReadConsoleW                                         = modkernel32.NewProc("ReadConsoleW")
-       procCreateToolhelp32Snapshot                             = modkernel32.NewProc("CreateToolhelp32Snapshot")
-       procProcess32FirstW                                      = modkernel32.NewProc("Process32FirstW")
-       procProcess32NextW                                       = modkernel32.NewProc("Process32NextW")
-       procThread32First                                        = modkernel32.NewProc("Thread32First")
-       procThread32Next                                         = modkernel32.NewProc("Thread32Next")
-       procDeviceIoControl                                      = modkernel32.NewProc("DeviceIoControl")
-       procCreateSymbolicLinkW                                  = modkernel32.NewProc("CreateSymbolicLinkW")
-       procCreateHardLinkW                                      = modkernel32.NewProc("CreateHardLinkW")
-       procGetCurrentThreadId                                   = modkernel32.NewProc("GetCurrentThreadId")
-       procCreateEventW                                         = modkernel32.NewProc("CreateEventW")
+       procDnsNameCompare_W                                     = moddnsapi.NewProc("DnsNameCompare_W")
+       procDnsQuery_W                                           = moddnsapi.NewProc("DnsQuery_W")
+       procDnsRecordListFree                                    = moddnsapi.NewProc("DnsRecordListFree")
+       procGetAdaptersAddresses                                 = modiphlpapi.NewProc("GetAdaptersAddresses")
+       procGetAdaptersInfo                                      = modiphlpapi.NewProc("GetAdaptersInfo")
+       procGetIfEntry                                           = modiphlpapi.NewProc("GetIfEntry")
+       procAssignProcessToJobObject                             = modkernel32.NewProc("AssignProcessToJobObject")
+       procCancelIo                                             = modkernel32.NewProc("CancelIo")
+       procCancelIoEx                                           = modkernel32.NewProc("CancelIoEx")
+       procCloseHandle                                          = modkernel32.NewProc("CloseHandle")
+       procCreateDirectoryW                                     = modkernel32.NewProc("CreateDirectoryW")
        procCreateEventExW                                       = modkernel32.NewProc("CreateEventExW")
-       procOpenEventW                                           = modkernel32.NewProc("OpenEventW")
-       procSetEvent                                             = modkernel32.NewProc("SetEvent")
-       procResetEvent                                           = modkernel32.NewProc("ResetEvent")
-       procPulseEvent                                           = modkernel32.NewProc("PulseEvent")
-       procCreateMutexW                                         = modkernel32.NewProc("CreateMutexW")
-       procCreateMutexExW                                       = modkernel32.NewProc("CreateMutexExW")
-       procOpenMutexW                                           = modkernel32.NewProc("OpenMutexW")
-       procReleaseMutex                                         = modkernel32.NewProc("ReleaseMutex")
-       procSleepEx                                              = modkernel32.NewProc("SleepEx")
+       procCreateEventW                                         = modkernel32.NewProc("CreateEventW")
+       procCreateFileMappingW                                   = modkernel32.NewProc("CreateFileMappingW")
+       procCreateFileW                                          = modkernel32.NewProc("CreateFileW")
+       procCreateHardLinkW                                      = modkernel32.NewProc("CreateHardLinkW")
+       procCreateIoCompletionPort                               = modkernel32.NewProc("CreateIoCompletionPort")
        procCreateJobObjectW                                     = modkernel32.NewProc("CreateJobObjectW")
-       procAssignProcessToJobObject                             = modkernel32.NewProc("AssignProcessToJobObject")
-       procTerminateJobObject                                   = modkernel32.NewProc("TerminateJobObject")
-       procSetErrorMode                                         = modkernel32.NewProc("SetErrorMode")
-       procResumeThread                                         = modkernel32.NewProc("ResumeThread")
-       procSetPriorityClass                                     = modkernel32.NewProc("SetPriorityClass")
-       procGetPriorityClass                                     = modkernel32.NewProc("GetPriorityClass")
-       procQueryInformationJobObject                            = modkernel32.NewProc("QueryInformationJobObject")
-       procSetInformationJobObject                              = modkernel32.NewProc("SetInformationJobObject")
-       procGenerateConsoleCtrlEvent                             = modkernel32.NewProc("GenerateConsoleCtrlEvent")
-       procGetProcessId                                         = modkernel32.NewProc("GetProcessId")
-       procOpenThread                                           = modkernel32.NewProc("OpenThread")
-       procSetProcessPriorityBoost                              = modkernel32.NewProc("SetProcessPriorityBoost")
-       procGetProcessWorkingSetSizeEx                           = modkernel32.NewProc("GetProcessWorkingSetSizeEx")
-       procSetProcessWorkingSetSizeEx                           = modkernel32.NewProc("SetProcessWorkingSetSizeEx")
+       procCreateMutexExW                                       = modkernel32.NewProc("CreateMutexExW")
+       procCreateMutexW                                         = modkernel32.NewProc("CreateMutexW")
+       procCreatePipe                                           = modkernel32.NewProc("CreatePipe")
+       procCreateProcessW                                       = modkernel32.NewProc("CreateProcessW")
+       procCreateSymbolicLinkW                                  = modkernel32.NewProc("CreateSymbolicLinkW")
+       procCreateToolhelp32Snapshot                             = modkernel32.NewProc("CreateToolhelp32Snapshot")
        procDefineDosDeviceW                                     = modkernel32.NewProc("DefineDosDeviceW")
+       procDeleteFileW                                          = modkernel32.NewProc("DeleteFileW")
        procDeleteVolumeMountPointW                              = modkernel32.NewProc("DeleteVolumeMountPointW")
-       procFindFirstVolumeW                                     = modkernel32.NewProc("FindFirstVolumeW")
+       procDeviceIoControl                                      = modkernel32.NewProc("DeviceIoControl")
+       procDuplicateHandle                                      = modkernel32.NewProc("DuplicateHandle")
+       procExitProcess                                          = modkernel32.NewProc("ExitProcess")
+       procFindClose                                            = modkernel32.NewProc("FindClose")
+       procFindFirstFileW                                       = modkernel32.NewProc("FindFirstFileW")
        procFindFirstVolumeMountPointW                           = modkernel32.NewProc("FindFirstVolumeMountPointW")
-       procFindNextVolumeW                                      = modkernel32.NewProc("FindNextVolumeW")
+       procFindFirstVolumeW                                     = modkernel32.NewProc("FindFirstVolumeW")
+       procFindNextFileW                                        = modkernel32.NewProc("FindNextFileW")
        procFindNextVolumeMountPointW                            = modkernel32.NewProc("FindNextVolumeMountPointW")
+       procFindNextVolumeW                                      = modkernel32.NewProc("FindNextVolumeW")
        procFindVolumeClose                                      = modkernel32.NewProc("FindVolumeClose")
        procFindVolumeMountPointClose                            = modkernel32.NewProc("FindVolumeMountPointClose")
+       procFlushFileBuffers                                     = modkernel32.NewProc("FlushFileBuffers")
+       procFlushViewOfFile                                      = modkernel32.NewProc("FlushViewOfFile")
+       procFormatMessageW                                       = modkernel32.NewProc("FormatMessageW")
+       procFreeEnvironmentStringsW                              = modkernel32.NewProc("FreeEnvironmentStringsW")
+       procFreeLibrary                                          = modkernel32.NewProc("FreeLibrary")
+       procGenerateConsoleCtrlEvent                             = modkernel32.NewProc("GenerateConsoleCtrlEvent")
+       procGetACP                                               = modkernel32.NewProc("GetACP")
+       procGetCommandLineW                                      = modkernel32.NewProc("GetCommandLineW")
+       procGetComputerNameExW                                   = modkernel32.NewProc("GetComputerNameExW")
+       procGetComputerNameW                                     = modkernel32.NewProc("GetComputerNameW")
+       procGetConsoleMode                                       = modkernel32.NewProc("GetConsoleMode")
+       procGetConsoleScreenBufferInfo                           = modkernel32.NewProc("GetConsoleScreenBufferInfo")
+       procGetCurrentDirectoryW                                 = modkernel32.NewProc("GetCurrentDirectoryW")
+       procGetCurrentProcessId                                  = modkernel32.NewProc("GetCurrentProcessId")
+       procGetCurrentThreadId                                   = modkernel32.NewProc("GetCurrentThreadId")
        procGetDiskFreeSpaceExW                                  = modkernel32.NewProc("GetDiskFreeSpaceExW")
        procGetDriveTypeW                                        = modkernel32.NewProc("GetDriveTypeW")
-       procGetLogicalDrives                                     = modkernel32.NewProc("GetLogicalDrives")
+       procGetEnvironmentStringsW                               = modkernel32.NewProc("GetEnvironmentStringsW")
+       procGetEnvironmentVariableW                              = modkernel32.NewProc("GetEnvironmentVariableW")
+       procGetExitCodeProcess                                   = modkernel32.NewProc("GetExitCodeProcess")
+       procGetFileAttributesExW                                 = modkernel32.NewProc("GetFileAttributesExW")
+       procGetFileAttributesW                                   = modkernel32.NewProc("GetFileAttributesW")
+       procGetFileInformationByHandle                           = modkernel32.NewProc("GetFileInformationByHandle")
+       procGetFileInformationByHandleEx                         = modkernel32.NewProc("GetFileInformationByHandleEx")
+       procGetFileType                                          = modkernel32.NewProc("GetFileType")
+       procGetFinalPathNameByHandleW                            = modkernel32.NewProc("GetFinalPathNameByHandleW")
+       procGetFullPathNameW                                     = modkernel32.NewProc("GetFullPathNameW")
+       procGetLastError                                         = modkernel32.NewProc("GetLastError")
        procGetLogicalDriveStringsW                              = modkernel32.NewProc("GetLogicalDriveStringsW")
-       procGetVolumeInformationW                                = modkernel32.NewProc("GetVolumeInformationW")
+       procGetLogicalDrives                                     = modkernel32.NewProc("GetLogicalDrives")
+       procGetLongPathNameW                                     = modkernel32.NewProc("GetLongPathNameW")
+       procGetModuleFileNameW                                   = modkernel32.NewProc("GetModuleFileNameW")
+       procGetModuleHandleExW                                   = modkernel32.NewProc("GetModuleHandleExW")
+       procGetOverlappedResult                                  = modkernel32.NewProc("GetOverlappedResult")
+       procGetPriorityClass                                     = modkernel32.NewProc("GetPriorityClass")
+       procGetProcAddress                                       = modkernel32.NewProc("GetProcAddress")
+       procGetProcessId                                         = modkernel32.NewProc("GetProcessId")
+       procGetProcessPreferredUILanguages                       = modkernel32.NewProc("GetProcessPreferredUILanguages")
+       procGetProcessShutdownParameters                         = modkernel32.NewProc("GetProcessShutdownParameters")
+       procGetProcessTimes                                      = modkernel32.NewProc("GetProcessTimes")
+       procGetProcessWorkingSetSizeEx                           = modkernel32.NewProc("GetProcessWorkingSetSizeEx")
+       procGetQueuedCompletionStatus                            = modkernel32.NewProc("GetQueuedCompletionStatus")
+       procGetShortPathNameW                                    = modkernel32.NewProc("GetShortPathNameW")
+       procGetStartupInfoW                                      = modkernel32.NewProc("GetStartupInfoW")
+       procGetStdHandle                                         = modkernel32.NewProc("GetStdHandle")
+       procGetSystemDirectoryW                                  = modkernel32.NewProc("GetSystemDirectoryW")
+       procGetSystemPreferredUILanguages                        = modkernel32.NewProc("GetSystemPreferredUILanguages")
+       procGetSystemTimeAsFileTime                              = modkernel32.NewProc("GetSystemTimeAsFileTime")
+       procGetSystemTimePreciseAsFileTime                       = modkernel32.NewProc("GetSystemTimePreciseAsFileTime")
+       procGetSystemWindowsDirectoryW                           = modkernel32.NewProc("GetSystemWindowsDirectoryW")
+       procGetTempPathW                                         = modkernel32.NewProc("GetTempPathW")
+       procGetThreadPreferredUILanguages                        = modkernel32.NewProc("GetThreadPreferredUILanguages")
+       procGetTickCount64                                       = modkernel32.NewProc("GetTickCount64")
+       procGetTimeZoneInformation                               = modkernel32.NewProc("GetTimeZoneInformation")
+       procGetUserPreferredUILanguages                          = modkernel32.NewProc("GetUserPreferredUILanguages")
+       procGetVersion                                           = modkernel32.NewProc("GetVersion")
        procGetVolumeInformationByHandleW                        = modkernel32.NewProc("GetVolumeInformationByHandleW")
+       procGetVolumeInformationW                                = modkernel32.NewProc("GetVolumeInformationW")
        procGetVolumeNameForVolumeMountPointW                    = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW")
        procGetVolumePathNameW                                   = modkernel32.NewProc("GetVolumePathNameW")
        procGetVolumePathNamesForVolumeNameW                     = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW")
+       procGetWindowsDirectoryW                                 = modkernel32.NewProc("GetWindowsDirectoryW")
+       procIsWow64Process                                       = modkernel32.NewProc("IsWow64Process")
+       procLoadLibraryExW                                       = modkernel32.NewProc("LoadLibraryExW")
+       procLoadLibraryW                                         = modkernel32.NewProc("LoadLibraryW")
+       procLocalFree                                            = modkernel32.NewProc("LocalFree")
+       procLockFileEx                                           = modkernel32.NewProc("LockFileEx")
+       procMapViewOfFile                                        = modkernel32.NewProc("MapViewOfFile")
+       procMoveFileExW                                          = modkernel32.NewProc("MoveFileExW")
+       procMoveFileW                                            = modkernel32.NewProc("MoveFileW")
+       procMultiByteToWideChar                                  = modkernel32.NewProc("MultiByteToWideChar")
+       procOpenEventW                                           = modkernel32.NewProc("OpenEventW")
+       procOpenMutexW                                           = modkernel32.NewProc("OpenMutexW")
+       procOpenProcess                                          = modkernel32.NewProc("OpenProcess")
+       procOpenThread                                           = modkernel32.NewProc("OpenThread")
+       procPostQueuedCompletionStatus                           = modkernel32.NewProc("PostQueuedCompletionStatus")
+       procProcess32FirstW                                      = modkernel32.NewProc("Process32FirstW")
+       procProcess32NextW                                       = modkernel32.NewProc("Process32NextW")
+       procProcessIdToSessionId                                 = modkernel32.NewProc("ProcessIdToSessionId")
+       procPulseEvent                                           = modkernel32.NewProc("PulseEvent")
        procQueryDosDeviceW                                      = modkernel32.NewProc("QueryDosDeviceW")
+       procQueryInformationJobObject                            = modkernel32.NewProc("QueryInformationJobObject")
+       procReadConsoleW                                         = modkernel32.NewProc("ReadConsoleW")
+       procReadDirectoryChangesW                                = modkernel32.NewProc("ReadDirectoryChangesW")
+       procReadFile                                             = modkernel32.NewProc("ReadFile")
+       procReleaseMutex                                         = modkernel32.NewProc("ReleaseMutex")
+       procRemoveDirectoryW                                     = modkernel32.NewProc("RemoveDirectoryW")
+       procResetEvent                                           = modkernel32.NewProc("ResetEvent")
+       procResumeThread                                         = modkernel32.NewProc("ResumeThread")
+       procSetConsoleCursorPosition                             = modkernel32.NewProc("SetConsoleCursorPosition")
+       procSetConsoleMode                                       = modkernel32.NewProc("SetConsoleMode")
+       procSetCurrentDirectoryW                                 = modkernel32.NewProc("SetCurrentDirectoryW")
+       procSetEndOfFile                                         = modkernel32.NewProc("SetEndOfFile")
+       procSetEnvironmentVariableW                              = modkernel32.NewProc("SetEnvironmentVariableW")
+       procSetErrorMode                                         = modkernel32.NewProc("SetErrorMode")
+       procSetEvent                                             = modkernel32.NewProc("SetEvent")
+       procSetFileAttributesW                                   = modkernel32.NewProc("SetFileAttributesW")
+       procSetFileCompletionNotificationModes                   = modkernel32.NewProc("SetFileCompletionNotificationModes")
+       procSetFilePointer                                       = modkernel32.NewProc("SetFilePointer")
+       procSetFileTime                                          = modkernel32.NewProc("SetFileTime")
+       procSetHandleInformation                                 = modkernel32.NewProc("SetHandleInformation")
+       procSetInformationJobObject                              = modkernel32.NewProc("SetInformationJobObject")
+       procSetPriorityClass                                     = modkernel32.NewProc("SetPriorityClass")
+       procSetProcessPriorityBoost                              = modkernel32.NewProc("SetProcessPriorityBoost")
+       procSetProcessShutdownParameters                         = modkernel32.NewProc("SetProcessShutdownParameters")
+       procSetProcessWorkingSetSizeEx                           = modkernel32.NewProc("SetProcessWorkingSetSizeEx")
+       procSetStdHandle                                         = modkernel32.NewProc("SetStdHandle")
        procSetVolumeLabelW                                      = modkernel32.NewProc("SetVolumeLabelW")
        procSetVolumeMountPointW                                 = modkernel32.NewProc("SetVolumeMountPointW")
-       procMessageBoxW                                          = moduser32.NewProc("MessageBoxW")
-       procExitWindowsEx                                        = moduser32.NewProc("ExitWindowsEx")
-       procInitiateSystemShutdownExW                            = modadvapi32.NewProc("InitiateSystemShutdownExW")
-       procSetProcessShutdownParameters                         = modkernel32.NewProc("SetProcessShutdownParameters")
-       procGetProcessShutdownParameters                         = modkernel32.NewProc("GetProcessShutdownParameters")
+       procSleepEx                                              = modkernel32.NewProc("SleepEx")
+       procTerminateJobObject                                   = modkernel32.NewProc("TerminateJobObject")
+       procTerminateProcess                                     = modkernel32.NewProc("TerminateProcess")
+       procThread32First                                        = modkernel32.NewProc("Thread32First")
+       procThread32Next                                         = modkernel32.NewProc("Thread32Next")
+       procUnlockFileEx                                         = modkernel32.NewProc("UnlockFileEx")
+       procUnmapViewOfFile                                      = modkernel32.NewProc("UnmapViewOfFile")
+       procVirtualAlloc                                         = modkernel32.NewProc("VirtualAlloc")
+       procVirtualFree                                          = modkernel32.NewProc("VirtualFree")
+       procVirtualLock                                          = modkernel32.NewProc("VirtualLock")
+       procVirtualProtect                                       = modkernel32.NewProc("VirtualProtect")
+       procVirtualUnlock                                        = modkernel32.NewProc("VirtualUnlock")
+       procWaitForMultipleObjects                               = modkernel32.NewProc("WaitForMultipleObjects")
+       procWaitForSingleObject                                  = modkernel32.NewProc("WaitForSingleObject")
+       procWriteConsoleW                                        = modkernel32.NewProc("WriteConsoleW")
+       procWriteFile                                            = modkernel32.NewProc("WriteFile")
+       procAcceptEx                                             = modmswsock.NewProc("AcceptEx")
+       procGetAcceptExSockaddrs                                 = modmswsock.NewProc("GetAcceptExSockaddrs")
+       procTransmitFile                                         = modmswsock.NewProc("TransmitFile")
+       procNetApiBufferFree                                     = modnetapi32.NewProc("NetApiBufferFree")
+       procNetGetJoinInformation                                = modnetapi32.NewProc("NetGetJoinInformation")
+       procNetUserGetInfo                                       = modnetapi32.NewProc("NetUserGetInfo")
+       procRtlGetNtVersionNumbers                               = modntdll.NewProc("RtlGetNtVersionNumbers")
+       procRtlGetVersion                                        = modntdll.NewProc("RtlGetVersion")
        procCLSIDFromString                                      = modole32.NewProc("CLSIDFromString")
-       procStringFromGUID2                                      = modole32.NewProc("StringFromGUID2")
        procCoCreateGuid                                         = modole32.NewProc("CoCreateGuid")
        procCoTaskMemFree                                        = modole32.NewProc("CoTaskMemFree")
-       procRtlGetVersion                                        = modntdll.NewProc("RtlGetVersion")
-       procRtlGetNtVersionNumbers                               = modntdll.NewProc("RtlGetNtVersionNumbers")
-       procGetProcessPreferredUILanguages                       = modkernel32.NewProc("GetProcessPreferredUILanguages")
-       procGetThreadPreferredUILanguages                        = modkernel32.NewProc("GetThreadPreferredUILanguages")
-       procGetUserPreferredUILanguages                          = modkernel32.NewProc("GetUserPreferredUILanguages")
-       procGetSystemPreferredUILanguages                        = modkernel32.NewProc("GetSystemPreferredUILanguages")
+       procStringFromGUID2                                      = modole32.NewProc("StringFromGUID2")
        procEnumProcesses                                        = modpsapi.NewProc("EnumProcesses")
-       procWSAStartup                                           = modws2_32.NewProc("WSAStartup")
+       procGetUserNameExW                                       = modsecur32.NewProc("GetUserNameExW")
+       procTranslateNameW                                       = modsecur32.NewProc("TranslateNameW")
+       procCommandLineToArgvW                                   = modshell32.NewProc("CommandLineToArgvW")
+       procSHGetKnownFolderPath                                 = modshell32.NewProc("SHGetKnownFolderPath")
+       procShellExecuteW                                        = modshell32.NewProc("ShellExecuteW")
+       procExitWindowsEx                                        = moduser32.NewProc("ExitWindowsEx")
+       procMessageBoxW                                          = moduser32.NewProc("MessageBoxW")
+       procCreateEnvironmentBlock                               = moduserenv.NewProc("CreateEnvironmentBlock")
+       procDestroyEnvironmentBlock                              = moduserenv.NewProc("DestroyEnvironmentBlock")
+       procGetUserProfileDirectoryW                             = moduserenv.NewProc("GetUserProfileDirectoryW")
+       procFreeAddrInfoW                                        = modws2_32.NewProc("FreeAddrInfoW")
+       procGetAddrInfoW                                         = modws2_32.NewProc("GetAddrInfoW")
        procWSACleanup                                           = modws2_32.NewProc("WSACleanup")
+       procWSAEnumProtocolsW                                    = modws2_32.NewProc("WSAEnumProtocolsW")
        procWSAIoctl                                             = modws2_32.NewProc("WSAIoctl")
-       procsocket                                               = modws2_32.NewProc("socket")
-       procsendto                                               = modws2_32.NewProc("sendto")
-       procrecvfrom                                             = modws2_32.NewProc("recvfrom")
-       procsetsockopt                                           = modws2_32.NewProc("setsockopt")
-       procgetsockopt                                           = modws2_32.NewProc("getsockopt")
-       procbind                                                 = modws2_32.NewProc("bind")
-       procconnect                                              = modws2_32.NewProc("connect")
-       procgetsockname                                          = modws2_32.NewProc("getsockname")
-       procgetpeername                                          = modws2_32.NewProc("getpeername")
-       proclisten                                               = modws2_32.NewProc("listen")
-       procshutdown                                             = modws2_32.NewProc("shutdown")
-       procclosesocket                                          = modws2_32.NewProc("closesocket")
-       procAcceptEx                                             = modmswsock.NewProc("AcceptEx")
-       procGetAcceptExSockaddrs                                 = modmswsock.NewProc("GetAcceptExSockaddrs")
        procWSARecv                                              = modws2_32.NewProc("WSARecv")
-       procWSASend                                              = modws2_32.NewProc("WSASend")
        procWSARecvFrom                                          = modws2_32.NewProc("WSARecvFrom")
+       procWSASend                                              = modws2_32.NewProc("WSASend")
        procWSASendTo                                            = modws2_32.NewProc("WSASendTo")
+       procWSAStartup                                           = modws2_32.NewProc("WSAStartup")
+       procbind                                                 = modws2_32.NewProc("bind")
+       procclosesocket                                          = modws2_32.NewProc("closesocket")
+       procconnect                                              = modws2_32.NewProc("connect")
        procgethostbyname                                        = modws2_32.NewProc("gethostbyname")
+       procgetpeername                                          = modws2_32.NewProc("getpeername")
+       procgetprotobyname                                       = modws2_32.NewProc("getprotobyname")
        procgetservbyname                                        = modws2_32.NewProc("getservbyname")
+       procgetsockname                                          = modws2_32.NewProc("getsockname")
+       procgetsockopt                                           = modws2_32.NewProc("getsockopt")
+       proclisten                                               = modws2_32.NewProc("listen")
        procntohs                                                = modws2_32.NewProc("ntohs")
-       procgetprotobyname                                       = modws2_32.NewProc("getprotobyname")
-       procDnsQuery_W                                           = moddnsapi.NewProc("DnsQuery_W")
-       procDnsRecordListFree                                    = moddnsapi.NewProc("DnsRecordListFree")
-       procDnsNameCompare_W                                     = moddnsapi.NewProc("DnsNameCompare_W")
-       procGetAddrInfoW                                         = modws2_32.NewProc("GetAddrInfoW")
-       procFreeAddrInfoW                                        = modws2_32.NewProc("FreeAddrInfoW")
-       procGetIfEntry                                           = modiphlpapi.NewProc("GetIfEntry")
-       procGetAdaptersInfo                                      = modiphlpapi.NewProc("GetAdaptersInfo")
-       procSetFileCompletionNotificationModes                   = modkernel32.NewProc("SetFileCompletionNotificationModes")
-       procWSAEnumProtocolsW                                    = modws2_32.NewProc("WSAEnumProtocolsW")
-       procGetAdaptersAddresses                                 = modiphlpapi.NewProc("GetAdaptersAddresses")
-       procGetACP                                               = modkernel32.NewProc("GetACP")
-       procMultiByteToWideChar                                  = modkernel32.NewProc("MultiByteToWideChar")
-       procTranslateNameW                                       = modsecur32.NewProc("TranslateNameW")
-       procGetUserNameExW                                       = modsecur32.NewProc("GetUserNameExW")
-       procNetUserGetInfo                                       = modnetapi32.NewProc("NetUserGetInfo")
-       procNetGetJoinInformation                                = modnetapi32.NewProc("NetGetJoinInformation")
-       procNetApiBufferFree                                     = modnetapi32.NewProc("NetApiBufferFree")
-       procLookupAccountSidW                                    = modadvapi32.NewProc("LookupAccountSidW")
-       procLookupAccountNameW                                   = modadvapi32.NewProc("LookupAccountNameW")
-       procConvertSidToStringSidW                               = modadvapi32.NewProc("ConvertSidToStringSidW")
-       procConvertStringSidToSidW                               = modadvapi32.NewProc("ConvertStringSidToSidW")
-       procGetLengthSid                                         = modadvapi32.NewProc("GetLengthSid")
-       procCopySid                                              = modadvapi32.NewProc("CopySid")
-       procAllocateAndInitializeSid                             = modadvapi32.NewProc("AllocateAndInitializeSid")
-       procCreateWellKnownSid                                   = modadvapi32.NewProc("CreateWellKnownSid")
-       procIsWellKnownSid                                       = modadvapi32.NewProc("IsWellKnownSid")
-       procFreeSid                                              = modadvapi32.NewProc("FreeSid")
-       procEqualSid                                             = modadvapi32.NewProc("EqualSid")
-       procGetSidIdentifierAuthority                            = modadvapi32.NewProc("GetSidIdentifierAuthority")
-       procGetSidSubAuthorityCount                              = modadvapi32.NewProc("GetSidSubAuthorityCount")
-       procGetSidSubAuthority                                   = modadvapi32.NewProc("GetSidSubAuthority")
-       procIsValidSid                                           = modadvapi32.NewProc("IsValidSid")
-       procCheckTokenMembership                                 = modadvapi32.NewProc("CheckTokenMembership")
-       procOpenProcessToken                                     = modadvapi32.NewProc("OpenProcessToken")
-       procOpenThreadToken                                      = modadvapi32.NewProc("OpenThreadToken")
-       procImpersonateSelf                                      = modadvapi32.NewProc("ImpersonateSelf")
-       procRevertToSelf                                         = modadvapi32.NewProc("RevertToSelf")
-       procSetThreadToken                                       = modadvapi32.NewProc("SetThreadToken")
-       procLookupPrivilegeValueW                                = modadvapi32.NewProc("LookupPrivilegeValueW")
-       procAdjustTokenPrivileges                                = modadvapi32.NewProc("AdjustTokenPrivileges")
-       procAdjustTokenGroups                                    = modadvapi32.NewProc("AdjustTokenGroups")
-       procGetTokenInformation                                  = modadvapi32.NewProc("GetTokenInformation")
-       procSetTokenInformation                                  = modadvapi32.NewProc("SetTokenInformation")
-       procDuplicateTokenEx                                     = modadvapi32.NewProc("DuplicateTokenEx")
-       procGetUserProfileDirectoryW                             = moduserenv.NewProc("GetUserProfileDirectoryW")
-       procGetSystemDirectoryW                                  = modkernel32.NewProc("GetSystemDirectoryW")
-       procGetWindowsDirectoryW                                 = modkernel32.NewProc("GetWindowsDirectoryW")
-       procGetSystemWindowsDirectoryW                           = modkernel32.NewProc("GetSystemWindowsDirectoryW")
-       procWTSQueryUserToken                                    = modwtsapi32.NewProc("WTSQueryUserToken")
+       procrecvfrom                                             = modws2_32.NewProc("recvfrom")
+       procsendto                                               = modws2_32.NewProc("sendto")
+       procsetsockopt                                           = modws2_32.NewProc("setsockopt")
+       procshutdown                                             = modws2_32.NewProc("shutdown")
+       procsocket                                               = modws2_32.NewProc("socket")
        procWTSEnumerateSessionsW                                = modwtsapi32.NewProc("WTSEnumerateSessionsW")
-       procWTSFreeMemory                                        = modwtsapi32.NewProc("WTSFreeMemory")
-       procGetSecurityInfo                                      = modadvapi32.NewProc("GetSecurityInfo")
-       procSetSecurityInfo                                      = modadvapi32.NewProc("SetSecurityInfo")
-       procGetNamedSecurityInfoW                                = modadvapi32.NewProc("GetNamedSecurityInfoW")
-       procSetNamedSecurityInfoW                                = modadvapi32.NewProc("SetNamedSecurityInfoW")
-       procBuildSecurityDescriptorW                             = modadvapi32.NewProc("BuildSecurityDescriptorW")
-       procInitializeSecurityDescriptor                         = modadvapi32.NewProc("InitializeSecurityDescriptor")
-       procGetSecurityDescriptorControl                         = modadvapi32.NewProc("GetSecurityDescriptorControl")
-       procGetSecurityDescriptorDacl                            = modadvapi32.NewProc("GetSecurityDescriptorDacl")
-       procGetSecurityDescriptorSacl                            = modadvapi32.NewProc("GetSecurityDescriptorSacl")
-       procGetSecurityDescriptorOwner                           = modadvapi32.NewProc("GetSecurityDescriptorOwner")
-       procGetSecurityDescriptorGroup                           = modadvapi32.NewProc("GetSecurityDescriptorGroup")
-       procGetSecurityDescriptorLength                          = modadvapi32.NewProc("GetSecurityDescriptorLength")
-       procGetSecurityDescriptorRMControl                       = modadvapi32.NewProc("GetSecurityDescriptorRMControl")
-       procIsValidSecurityDescriptor                            = modadvapi32.NewProc("IsValidSecurityDescriptor")
-       procSetSecurityDescriptorControl                         = modadvapi32.NewProc("SetSecurityDescriptorControl")
-       procSetSecurityDescriptorDacl                            = modadvapi32.NewProc("SetSecurityDescriptorDacl")
-       procSetSecurityDescriptorSacl                            = modadvapi32.NewProc("SetSecurityDescriptorSacl")
-       procSetSecurityDescriptorOwner                           = modadvapi32.NewProc("SetSecurityDescriptorOwner")
-       procSetSecurityDescriptorGroup                           = modadvapi32.NewProc("SetSecurityDescriptorGroup")
-       procSetSecurityDescriptorRMControl                       = modadvapi32.NewProc("SetSecurityDescriptorRMControl")
-       procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW")
-       procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc("ConvertSecurityDescriptorToStringSecurityDescriptorW")
-       procMakeAbsoluteSD                                       = modadvapi32.NewProc("MakeAbsoluteSD")
-       procMakeSelfRelativeSD                                   = modadvapi32.NewProc("MakeSelfRelativeSD")
-       procSetEntriesInAclW                                     = modadvapi32.NewProc("SetEntriesInAclW")
+       procWTSFreeMemory                                        = modwtsapi32.NewProc("WTSFreeMemory")
+       procWTSQueryUserToken                                    = modwtsapi32.NewProc("WTSQueryUserToken")
 )
 
-func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) {
+       var _p0 uint32
+       if resetToDefault {
+               _p0 = 1
+       }
+       r1, _, e1 := syscall.Syscall6(procAdjustTokenGroups.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func DeregisterEventSource(handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0)
+func AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) {
+       var _p0 uint32
+       if disableAllPrivileges {
+               _p0 = 1
+       }
+       r1, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {
-       r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData)))
+func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) {
+       r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) {
+       r0, _, _ := syscall.Syscall9(procBuildSecurityDescriptorW.Addr(), 9, uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor)))
+       if r0 != 0 {
+               ret = syscall.Errno(r0)
+       }
+       return
+}
+
+func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) {
+       r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info)))
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall12(procChangeServiceConfigW.Addr(), 11, uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) {
+       r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember)))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
@@ -412,169 +430,129 @@ func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (ha
 func CloseServiceHandle(handle Handle) (err error) {
        r1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) {
+       r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status)))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func DeleteService(service Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0)
+func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors)))
+func convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {
+       var _p0 *uint16
+       _p0, err = syscall.UTF16PtrFromString(str)
+       if err != nil {
+               return
+       }
+       return _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size)
+}
+
+func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) {
-       r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0)
+func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {
+       r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
+func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {
+       r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) {
-       r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status)))
+func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) {
-       r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0)
+func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0)
+func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {
+       r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall12(procChangeServiceConfigW.Addr(), 11, uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)), 0)
+func CryptReleaseContext(provhandle Handle, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
+func DeleteService(service Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) {
-       r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info)))
+func DeregisterEventSource(handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)
+func DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) {
+       r1, _, e1 := syscall.Syscall6(procDuplicateTokenEx.Addr(), 6, uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
@@ -582,1520 +560,1073 @@ func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize
 func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) {
        r1, _, e1 := syscall.Syscall12(procEnumServicesStatusExW.Addr(), 10, uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procQueryServiceStatusEx.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) {
+       r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0)
+       isEqual = r0 != 0
        return
 }
 
-func NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) {
-       r0, _, _ := syscall.Syscall(procNotifyServiceStatusChangeW.Addr(), 3, uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier)))
-       if r0 != 0 {
-               ret = syscall.Errno(r0)
+func FreeSid(sid *SID) (err error) {
+       r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
+       if r1 != 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetLastError() (lasterr error) {
-       r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
-       if r0 != 0 {
-               lasterr = syscall.Errno(r0)
-       }
+func GetLengthSid(sid *SID) (len uint32) {
+       r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
+       len = uint32(r0)
        return
 }
 
-func LoadLibrary(libname string) (handle Handle, err error) {
+func getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
        var _p0 *uint16
-       _p0, err = syscall.UTF16PtrFromString(libname)
-       if err != nil {
+       _p0, ret = syscall.UTF16PtrFromString(objectName)
+       if ret != nil {
                return
        }
-       return _LoadLibrary(_p0)
+       return _getNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl, sd)
 }
 
-func _LoadLibrary(libname *uint16) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
+       r0, _, _ := syscall.Syscall9(procGetNamedSecurityInfoW.Addr(), 8, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0)
+       if r0 != 0 {
+               ret = syscall.Errno(r0)
        }
        return
 }
 
-func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) {
-       var _p0 *uint16
-       _p0, err = syscall.UTF16PtrFromString(libname)
-       if err != nil {
-               return
+func getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision)))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
-       return _LoadLibraryEx(_p0, zero, flags)
+       return
 }
 
-func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) {
+       var _p0 uint32
+       if *daclPresent {
+               _p0 = 1
+       }
+       var _p1 uint32
+       if *daclDefaulted {
+               _p1 = 1
+       }
+       r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0)
+       *daclPresent = _p0 != 0
+       *daclDefaulted = _p1 != 0
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func FreeLibrary(handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0)
+func getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) {
+       var _p0 uint32
+       if *groupDefaulted {
+               _p0 = 1
+       }
+       r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0)))
+       *groupDefaulted = _p0 != 0
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetProcAddress(module Handle, procname string) (proc uintptr, err error) {
-       var _p0 *byte
-       _p0, err = syscall.BytePtrFromString(procname)
-       if err != nil {
-               return
-       }
-       return _GetProcAddress(module, _p0)
+func getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) {
+       r0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0)
+       len = uint32(r0)
+       return
 }
 
-func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {
-       r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0)
-       proc = uintptr(r0)
-       if proc == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) {
+       var _p0 uint32
+       if *ownerDefaulted {
+               _p0 = 1
+       }
+       r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0)))
+       *ownerDefaulted = _p0 != 0
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) {
+       r0, _, _ := syscall.Syscall(procGetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0)
+       if r0 != 0 {
+               ret = syscall.Errno(r0)
        }
        return
 }
 
-func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetModuleHandleExW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module)))
+func getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) {
+       var _p0 uint32
+       if *saclPresent {
+               _p0 = 1
+       }
+       var _p1 uint32
+       if *saclDefaulted {
+               _p1 = 1
+       }
+       r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0)
+       *saclPresent = _p0 != 0
+       *saclDefaulted = _p1 != 0
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetVersion() (ver uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0)
-       ver = uint32(r0)
-       if ver == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
+       r0, _, _ := syscall.Syscall9(procGetSecurityInfo.Addr(), 8, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0)
+       if r0 != 0 {
+               ret = syscall.Errno(r0)
        }
        return
 }
 
-func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {
-       var _p0 *uint16
-       if len(buf) > 0 {
-               _p0 = &buf[0]
-       }
-       r0, _, e1 := syscall.Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) {
+       r0, _, _ := syscall.Syscall(procGetSidIdentifierAuthority.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
+       authority = (*SidIdentifierAuthority)(unsafe.Pointer(r0))
        return
 }
 
-func ExitProcess(exitcode uint32) {
-       syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0)
+func getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) {
+       r0, _, _ := syscall.Syscall(procGetSidSubAuthority.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(index), 0)
+       subAuthority = (*uint32)(unsafe.Pointer(r0))
        return
 }
 
-func IsWow64Process(handle Handle, isWow64 *bool) (err error) {
-       var _p0 uint32
-       if *isWow64 {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall(procIsWow64Process.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(&_p0)), 0)
-       *isWow64 = _p0 != 0
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func getSidSubAuthorityCount(sid *SID) (count *uint8) {
+       r0, _, _ := syscall.Syscall(procGetSidSubAuthorityCount.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
+       count = (*uint8)(unsafe.Pointer(r0))
        return
 }
 
-func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0)
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
-       var _p0 *byte
-       if len(buf) > 0 {
-               _p0 = &buf[0]
-       }
-       r1, _, e1 := syscall.Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
+func ImpersonateSelf(impersonationlevel uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(impersonationlevel), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
-       var _p0 *byte
-       if len(buf) > 0 {
-               _p0 = &buf[0]
-       }
-       r1, _, e1 := syscall.Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
+func initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procInitializeSecurityDescriptor.Addr(), 2, uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) {
+func InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) {
        var _p0 uint32
-       if wait {
+       if forceAppsClosed {
                _p0 = 1
-       } else {
-               _p0 = 0
        }
-       r1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0), 0, 0)
+       var _p1 uint32
+       if rebootAfterShutdown {
+               _p1 = 1
+       }
+       r1, _, e1 := syscall.Syscall6(procInitiateSystemShutdownExW.Addr(), 6, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {
-       r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0)
-       newlowoffset = uint32(r0)
-       if newlowoffset == 0xffffffff {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) {
+       r0, _, _ := syscall.Syscall(procIsValidSecurityDescriptor.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0)
+       isValid = r0 != 0
        return
 }
 
-func CloseHandle(handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func isValidSid(sid *SID) (isValid bool) {
+       r0, _, _ := syscall.Syscall(procIsValidSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
+       isValid = r0 != 0
        return
 }
 
-func GetStdHandle(stdhandle uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0)
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) {
+       r0, _, _ := syscall.Syscall(procIsWellKnownSid.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(sidType), 0)
+       isWellKnown = r0 != 0
        return
 }
 
-func SetStdHandle(stdhandle uint32, handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0)
+func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func findNextFile1(handle Handle, data *win32finddata1) (err error) {
-       r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
+func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func FindClose(handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
+func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) {
+       r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
+func makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall12(procMakeAbsoluteSD.Addr(), 11, uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen), 0, 0)
+func makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procMakeSelfRelativeSD.Addr(), 3, uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) {
+       r0, _, _ := syscall.Syscall(procNotifyServiceStatusChangeW.Addr(), 3, uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier)))
+       if r0 != 0 {
+               ret = syscall.Errno(r0)
        }
        return
 }
 
-func SetCurrentDirectory(path *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
+func OpenProcessToken(process Handle, access uint32, token *Token) (err error) {
+       r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {
-       r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access))
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func RemoveDirectory(path *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access))
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func DeleteFile(path *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) {
+       var _p0 uint32
+       if openAsSelf {
+               _p0 = 1
        }
-       return
-}
-
-func MoveFile(from *uint16, to *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0)
+       r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
+func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {
-       r1, _, e1 := syscall.Syscall6(procLockFileEx.Addr(), 6, uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))
+func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {
-       r1, _, e1 := syscall.Syscall6(procUnlockFileEx.Addr(), 5, uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)), 0)
+func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetComputerName(buf *uint16, n *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0)
+func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) {
+       r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))
+func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procQueryServiceStatusEx.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetEndOfFile(handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func RegCloseKey(key Handle) (regerrno error) {
+       r0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0)
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
        }
        return
 }
 
-func GetSystemTimeAsFileTime(time *Filetime) {
-       syscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
-       return
-}
-
-func GetSystemTimePreciseAsFileTime(time *Filetime) {
-       syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
-       return
-}
-
-func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0)
-       rc = uint32(r0)
-       if rc == 0xffffffff {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {
+       r0, _, _ := syscall.Syscall9(procRegEnumKeyExW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)), 0)
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
        }
        return
 }
 
-func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {
+       r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0)
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
        }
        return
 }
 
-func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) {
+       r0, _, _ := syscall.Syscall12(procRegQueryInfoKeyW.Addr(), 12, uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime)))
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
        }
        return
 }
 
-func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) {
-       r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
+       r0, _, _ := syscall.Syscall6(procRegQueryValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)))
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
        }
        return
 }
 
-func CancelIo(s Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CancelIoEx(s Handle, o *Overlapped) (err error) {
-       r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0)
+func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {
+       r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
-       var _p0 uint32
-       if inheritHandles {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0)
+func RevertToSelf() (err error) {
+       r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) {
-       var _p0 uint32
-       if inheritHandle {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(processId))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) {
+       r0, _, _ := syscall.Syscall6(procSetEntriesInAclW.Addr(), 4, uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL)), 0, 0)
+       if r0 != 0 {
+               ret = syscall.Errno(r0)
        }
        return
 }
 
-func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procShellExecuteW.Addr(), 6, uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd))
-       if r1 <= 32 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {
+       var _p0 *uint16
+       _p0, ret = syscall.UTF16PtrFromString(objectName)
+       if ret != nil {
+               return
        }
-       return
+       return _SetNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl)
 }
 
-func shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) {
-       r0, _, _ := syscall.Syscall6(procSHGetKnownFolderPath.Addr(), 4, uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)), 0, 0)
+func _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {
+       r0, _, _ := syscall.Syscall9(procSetNamedSecurityInfoW.Addr(), 7, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0)
        if r0 != 0 {
                ret = syscall.Errno(r0)
        }
        return
 }
 
-func TerminateProcess(handle Handle, exitcode uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0)
+func setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) {
+       var _p0 uint32
+       if daclPresent {
+               _p0 = 1
        }
-       return
-}
-
-func GetStartupInfo(startupInfo *StartupInfo) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
+       var _p1 uint32
+       if daclDefaulted {
+               _p1 = 1
+       }
+       r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0)
+func setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) {
+       var _p0 uint32
+       if groupDefaulted {
+               _p0 = 1
+       }
+       r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {
+func setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) {
        var _p0 uint32
-       if bInheritHandle {
+       if ownerDefaulted {
                _p0 = 1
-       } else {
-               _p0 = 0
        }
-       r1, _, e1 := syscall.Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0)
+       r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0)
-       event = uint32(r0)
-       if event == 0xffffffff {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) {
+       syscall.Syscall(procSetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0)
        return
 }
 
-func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {
+func setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) {
        var _p0 uint32
-       if waitAll {
+       if saclPresent {
                _p0 = 1
-       } else {
-               _p0 = 0
        }
-       r0, _, e1 := syscall.Syscall6(procWaitForMultipleObjects.Addr(), 4, uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds), 0, 0)
-       event = uint32(r0)
-       if event == 0xffffffff {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+       var _p1 uint32
+       if saclDefaulted {
+               _p1 = 1
+       }
+       r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) {
+       syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0)
        return
 }
 
-func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0)
+func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetFileType(filehandle Handle) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func SetThreadToken(thread *Handle, token Token) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetThreadToken.Addr(), 2, uintptr(unsafe.Pointer(thread)), uintptr(token), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0)
+func SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CryptReleaseContext(provhandle Handle, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0)
+func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) {
+       r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {
-       r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))
+func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetEnvironmentStrings() (envs *uint16, err error) {
-       r0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0)
-       envs = (*uint16)(unsafe.Pointer(r0))
-       if envs == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {
+       r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func FreeEnvironmentStrings(envs *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0)
+func CertCloseStore(store Handle, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {
+       r0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))
+       context = (*CertContext)(unsafe.Pointer(r0))
+       if context == nil {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetEnvironmentVariable(name *uint16, value *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {
+       r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)
+       context = (*CertContext)(unsafe.Pointer(r0))
+       if context == nil {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) {
-       var _p0 uint32
-       if inheritExisting {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0))
+func CertFreeCertificateChain(ctx *CertChainContext) {
+       syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
+       return
+}
+
+func CertFreeCertificateContext(ctx *CertContext) (err error) {
+       r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func DestroyEnvironmentBlock(block *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0)
+func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {
+       r1, _, e1 := syscall.Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func getTickCount64() (ms uint64) {
-       r0, _, _ := syscall.Syscall(procGetTickCount64.Addr(), 0, 0, 0, 0)
-       ms = uint64(r0)
+func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {
-       r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0)
+       store = Handle(r0)
+       if store == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetFileAttributes(name *uint16) (attrs uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
-       attrs = uint32(r0)
-       if attrs == INVALID_FILE_ATTRIBUTES {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {
+       r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetFileAttributes(name *uint16, attrs uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {
+       r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)
+       same = r0 != 0
+       return
+}
+
+func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
+       var _p0 *uint16
+       _p0, status = syscall.UTF16PtrFromString(name)
+       if status != nil {
+               return
+       }
+       return _DnsQuery(_p0, qtype, options, extra, qrs, pr)
+}
+
+func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
+       r0, _, _ := syscall.Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr)))
+       if r0 != 0 {
+               status = syscall.Errno(r0)
        }
        return
 }
 
-func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func DnsRecordListFree(rl *DNSRecord, freetype uint32) {
+       syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0)
+       return
+}
+
+func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
+       r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
+       if r0 != 0 {
+               errcode = syscall.Errno(r0)
        }
        return
 }
 
-func GetCommandLine() (cmd *uint16) {
-       r0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0)
-       cmd = (*uint16)(unsafe.Pointer(r0))
+func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {
+       r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0)
+       if r0 != 0 {
+               errcode = syscall.Errno(r0)
+       }
        return
 }
 
-func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
-       r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
-       argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
-       if argv == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
+       r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
+       if r0 != 0 {
+               errcode = syscall.Errno(r0)
        }
        return
 }
 
-func LocalFree(hmem Handle) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0)
-       handle = Handle(r0)
-       if handle != 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func AssignProcessToJobObject(job Handle, process Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procAssignProcessToJobObject.Addr(), 2, uintptr(job), uintptr(process), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags))
+func CancelIo(s Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func FlushFileBuffers(handle Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0)
+func CancelIoEx(s Handle, o *Overlapped) (err error) {
+       r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CloseHandle(handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {
+       r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))
+func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0)
        handle = Handle(r0)
        if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) {
-       r0, _, e1 := syscall.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0)
-       addr = uintptr(r0)
-       if addr == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func UnmapViewOfFile(addr uintptr) (err error) {
-       r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0)
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               err = errnoErr(e1)
        }
        return
 }
 
-func FlushViewOfFile(addr uintptr, length uintptr) (err error) {
-       r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {
+       r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))
+       if r1&0xff == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func VirtualLock(addr uintptr, length uintptr) (err error) {
-       r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func VirtualUnlock(addr uintptr, length uintptr) (err error) {
-       r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procCreateJobObjectW.Addr(), 2, uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)), 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) {
-       r0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0)
-       value = uintptr(r0)
-       if value == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall6(procCreateMutexExW.Addr(), 4, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) {
+       var _p0 uint32
+       if initialOwner {
+               _p0 = 1
        }
-       return
-}
-
-func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+       r0, _, e1 := syscall.Syscall(procCreateMutexW.Addr(), 3, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name)))
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0)
+func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
+func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
        var _p0 uint32
-       if watchSubTree {
+       if inheritHandles {
                _p0 = 1
-       } else {
-               _p0 = 0
        }
-       r1, _, e1 := syscall.Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0)
+       r1, _, e1 := syscall.Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0)
-       store = Handle(r0)
-       if store == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))
+       if r1&0xff == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
+func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0)
        handle = Handle(r0)
        if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {
-       r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)
-       context = (*CertContext)(unsafe.Pointer(r0))
-       if context == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {
-       r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0)
+func DeleteFile(path *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertCloseStore(store Handle, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0)
+func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {
-       r1, _, e1 := syscall.Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0)
+func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {
+       r1, _, e1 := syscall.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertFreeCertificateChain(ctx *CertChainContext) {
-       syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
+func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {
+       var _p0 uint32
+       if bInheritHandle {
+               _p0 = 1
+       }
+       r1, _, e1 := syscall.Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {
-       r0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))
-       context = (*CertContext)(unsafe.Pointer(r0))
-       if context == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func ExitProcess(exitcode uint32) {
+       syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0)
        return
 }
 
-func CertFreeCertificateContext(ctx *CertContext) (err error) {
-       r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
+func FindClose(handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {
-       r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               err = errnoErr(e1)
        }
        return
 }
 
-func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {
-       r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0)
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
+func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               err = errnoErr(e1)
        }
        return
 }
 
-func RegCloseKey(key Handle) (regerrno error) {
-       r0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0)
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
+func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0)
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               err = errnoErr(e1)
        }
        return
 }
 
-func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) {
-       r0, _, _ := syscall.Syscall12(procRegQueryInfoKeyW.Addr(), 12, uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime)))
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
+func findNextFile1(handle Handle, data *win32finddata1) (err error) {
+       r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {
-       r0, _, _ := syscall.Syscall9(procRegEnumKeyExW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)), 0)
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
+func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
-       r0, _, _ := syscall.Syscall6(procRegQueryValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)))
-       if r0 != 0 {
-               regerrno = syscall.Errno(r0)
+func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetCurrentProcessId() (pid uint32) {
-       r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0)
-       pid = uint32(r0)
+func FindVolumeClose(findVolume Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func GetConsoleMode(console Handle, mode *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0)
+func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetConsoleMode(console Handle, mode uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0)
+func FlushFileBuffers(handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0)
+func FlushViewOfFile(addr uintptr, length uintptr) (err error) {
+       r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {
-       r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {
+       var _p0 *uint16
+       if len(buf) > 0 {
+               _p0 = &buf[0]
+       }
+       r0, _, e1 := syscall.Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0)
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {
-       r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0)
+func FreeEnvironmentStrings(envs *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0)
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func FreeLibrary(handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {
-       r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
+func GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGenerateConsoleCtrlEvent.Addr(), 2, uintptr(ctrlEvent), uintptr(processGroupID), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {
-       r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
+func GetACP() (acp uint32) {
+       r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0)
+       acp = uint32(r0)
+       return
+}
+
+func GetCommandLine() (cmd *uint16) {
+       r0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0)
+       cmd = (*uint16)(unsafe.Pointer(r0))
+       return
+}
+
+func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) {
-       r1, _, e1 := syscall.Syscall(procThread32First.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0)
+func GetComputerName(buf *uint16, n *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) {
-       r1, _, e1 := syscall.Syscall(procThread32Next.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0)
+func GetConsoleMode(console Handle, mode *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {
-       r1, _, e1 := syscall.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0)
+func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))
-       if r1&0xff == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {
-       r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))
-       if r1&0xff == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func GetCurrentProcessId() (pid uint32) {
+       r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0)
+       pid = uint32(r0)
        return
 }
 
@@ -2105,226 +1636,166 @@ func GetCurrentThreadId() (id uint32) {
        return
 }
 
-func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetDiskFreeSpaceExW.Addr(), 4, uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetDriveType(rootPathName *uint16) (driveType uint32) {
+       r0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0)
+       driveType = uint32(r0)
+       return
+}
+
+func GetEnvironmentStrings() (envs *uint16, err error) {
+       r0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0)
+       envs = (*uint16)(unsafe.Pointer(r0))
+       if envs == nil {
+               err = errnoErr(e1)
        }
        return
 }
 
-func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {
-       var _p0 uint32
-       if inheritHandle {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetEvent(event Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0)
+func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func ResetEvent(event Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0)
+func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func PulseEvent(event Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetFileAttributes(name *uint16) (attrs uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
+       attrs = uint32(r0)
+       if attrs == INVALID_FILE_ATTRIBUTES {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) {
-       var _p0 uint32
-       if initialOwner {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r0, _, e1 := syscall.Syscall(procCreateMutexW.Addr(), 3, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name)))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall6(procCreateMutexExW.Addr(), 4, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {
-       var _p0 uint32
-       if inheritHandle {
-               _p0 = 1
-       } else {
-               _p0 = 0
+func GetFileType(filehandle Handle) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0)
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
-       r0, _, e1 := syscall.Syscall(procOpenMutexW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+       return
+}
+
+func GetFinalPathNameByHandleW(file syscall.Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall6(procGetFinalPathNameByHandleW.Addr(), 4, uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags), 0, 0)
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func ReleaseMutex(mutex Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SleepEx(milliseconds uint32, alertable bool) (ret uint32) {
-       var _p0 uint32
-       if alertable {
-               _p0 = 1
-       } else {
-               _p0 = 0
+func GetLastError() (lasterr error) {
+       r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
+       if r0 != 0 {
+               lasterr = syscall.Errno(r0)
        }
-       r0, _, _ := syscall.Syscall(procSleepEx.Addr(), 2, uintptr(milliseconds), uintptr(_p0), 0)
-       ret = uint32(r0)
        return
 }
 
-func CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procCreateJobObjectW.Addr(), 2, uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)), 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0)
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func AssignProcessToJobObject(job Handle, process Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procAssignProcessToJobObject.Addr(), 2, uintptr(job), uintptr(process), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetLogicalDrives() (drivesBitMask uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0)
+       drivesBitMask = uint32(r0)
+       if drivesBitMask == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func TerminateJobObject(job Handle, exitCode uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procTerminateJobObject.Addr(), 2, uintptr(job), uintptr(exitCode), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetErrorMode(mode uint32) (ret uint32) {
-       r0, _, _ := syscall.Syscall(procSetErrorMode.Addr(), 1, uintptr(mode), 0, 0)
-       ret = uint32(r0)
+func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func ResumeThread(thread Handle) (ret uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0)
-       ret = uint32(r0)
-       if ret == 0xffffffff {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetModuleHandleExW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module)))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetPriorityClass(process Handle, priorityClass uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetPriorityClass.Addr(), 2, uintptr(process), uintptr(priorityClass), 0)
+func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) {
+       var _p0 uint32
+       if wait {
+               _p0 = 1
+       }
+       r1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
@@ -2333,48 +1804,25 @@ func GetPriorityClass(process Handle) (ret uint32, err error) {
        r0, _, e1 := syscall.Syscall(procGetPriorityClass.Addr(), 1, uintptr(process), 0, 0)
        ret = uint32(r0)
        if ret == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procQueryInformationJobObject.Addr(), 5, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), uintptr(unsafe.Pointer(retlen)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) {
-       r0, _, e1 := syscall.Syscall6(procSetInformationJobObject.Addr(), 4, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), 0, 0)
-       ret = int(r0)
-       if ret == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetProcAddress(module Handle, procname string) (proc uintptr, err error) {
+       var _p0 *byte
+       _p0, err = syscall.BytePtrFromString(procname)
+       if err != nil {
+               return
        }
-       return
+       return _GetProcAddress(module, _p0)
 }
 
-func GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGenerateConsoleCtrlEvent.Addr(), 2, uintptr(ctrlEvent), uintptr(processGroupID), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {
+       r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0)
+       proc = uintptr(r0)
+       if proc == 0 {
+               err = errnoErr(e1)
        }
        return
 }
@@ -2383,1701 +1831,1236 @@ func GetProcessId(process Handle) (id uint32, err error) {
        r0, _, e1 := syscall.Syscall(procGetProcessId.Addr(), 1, uintptr(process), 0, 0)
        id = uint32(r0)
        if id == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
-       return
-}
-
-func OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) {
-       var _p0 uint32
-       if inheritHandle {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r0, _, e1 := syscall.Syscall(procOpenThread.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(threadId))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetProcessPriorityBoost(process Handle, disable bool) (err error) {
-       var _p0 uint32
-       if disable {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall(procSetProcessPriorityBoost.Addr(), 2, uintptr(process), uintptr(_p0), 0)
+func getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetProcessPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) {
-       syscall.Syscall6(procGetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(unsafe.Pointer(lpMinimumWorkingSetSize)), uintptr(unsafe.Pointer(lpMaximumWorkingSetSize)), uintptr(unsafe.Pointer(flags)), 0, 0)
-       return
-}
-
-func SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procSetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(dwMinimumWorkingSetSize), uintptr(dwMaximumWorkingSetSize), uintptr(flags), 0, 0)
+func GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetProcessShutdownParameters.Addr(), 2, uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)))
+func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) {
+       syscall.Syscall6(procGetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(unsafe.Pointer(lpMinimumWorkingSetSize)), uintptr(unsafe.Pointer(lpMaximumWorkingSetSize)), uintptr(unsafe.Pointer(flags)), 0, 0)
        return
 }
 
-func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0)
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))
+func GetStartupInfo(startupInfo *StartupInfo) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetStdHandle(stdhandle uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0)
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               err = errnoErr(e1)
        }
        return
 }
 
-func FindVolumeClose(findVolume Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
+       len = uint32(r0)
+       if len == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0)
+func getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetSystemPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetDiskFreeSpaceExW.Addr(), 4, uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func GetSystemTimeAsFileTime(time *Filetime) {
+       syscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
        return
 }
 
-func GetDriveType(rootPathName *uint16) (driveType uint32) {
-       r0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0)
-       driveType = uint32(r0)
+func GetSystemTimePreciseAsFileTime(time *Filetime) {
+       syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
        return
 }
 
-func GetLogicalDrives() (drivesBitMask uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0)
-       drivesBitMask = uint32(r0)
-       if drivesBitMask == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetSystemWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
+       len = uint32(r0)
+       if len == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0)
+func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
        n = uint32(r0)
        if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {
-       r1, _, e1 := syscall.Syscall9(procGetVolumeInformationW.Addr(), 8, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0)
+func getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetThreadPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {
-       r1, _, e1 := syscall.Syscall9(procGetVolumeInformationByHandleW.Addr(), 8, uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func getTickCount64() (ms uint64) {
+       r0, _, _ := syscall.Syscall(procGetTickCount64.Addr(), 0, 0, 0, 0)
+       ms = uint64(r0)
+       return
+}
+
+func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0)
+       rc = uint32(r0)
+       if rc == 0xffffffff {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength))
+func getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetUserPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetVersion() (ver uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0)
+       ver = uint32(r0)
+       if ver == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0)
+func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {
+       r1, _, e1 := syscall.Syscall9(procGetVolumeInformationByHandleW.Addr(), 8, uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max))
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {
+       r1, _, e1 := syscall.Syscall9(procGetVolumeInformationW.Addr(), 8, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0)
+func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0)
+func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {
-       r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0)
-       ret = int32(r0)
-       if ret == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func ExitWindowsEx(flags uint32, reason uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procExitWindowsEx.Addr(), 2, uintptr(flags), uintptr(reason), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
+       len = uint32(r0)
+       if len == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) {
+func IsWow64Process(handle Handle, isWow64 *bool) (err error) {
        var _p0 uint32
-       if forceAppsClosed {
+       if *isWow64 {
                _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       var _p1 uint32
-       if rebootAfterShutdown {
-               _p1 = 1
-       } else {
-               _p1 = 0
        }
-       r1, _, e1 := syscall.Syscall6(procInitiateSystemShutdownExW.Addr(), 6, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason))
+       r1, _, e1 := syscall.Syscall(procIsWow64Process.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(&_p0)), 0)
+       *isWow64 = _p0 != 0
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetProcessShutdownParameters(level uint32, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetProcessShutdownParameters.Addr(), 2, uintptr(level), uintptr(flags), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) {
+       var _p0 *uint16
+       _p0, err = syscall.UTF16PtrFromString(libname)
+       if err != nil {
+               return
        }
-       return
+       return _LoadLibraryEx(_p0, zero, flags)
 }
 
-func GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetProcessShutdownParameters.Addr(), 2, uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags))
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) {
-       r0, _, _ := syscall.Syscall(procCLSIDFromString.Addr(), 2, uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)), 0)
-       if r0 != 0 {
-               ret = syscall.Errno(r0)
+func LoadLibrary(libname string) (handle Handle, err error) {
+       var _p0 *uint16
+       _p0, err = syscall.UTF16PtrFromString(libname)
+       if err != nil {
+               return
        }
-       return
-}
-
-func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) {
-       r0, _, _ := syscall.Syscall(procStringFromGUID2.Addr(), 3, uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax))
-       chars = int32(r0)
-       return
+       return _LoadLibrary(_p0)
 }
 
-func coCreateGuid(pguid *GUID) (ret error) {
-       r0, _, _ := syscall.Syscall(procCoCreateGuid.Addr(), 1, uintptr(unsafe.Pointer(pguid)), 0, 0)
-       if r0 != 0 {
-               ret = syscall.Errno(r0)
+func _LoadLibrary(libname *uint16) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CoTaskMemFree(address unsafe.Pointer) {
-       syscall.Syscall(procCoTaskMemFree.Addr(), 1, uintptr(address), 0, 0)
-       return
-}
-
-func rtlGetVersion(info *OsVersionInfoEx) (ret error) {
-       r0, _, _ := syscall.Syscall(procRtlGetVersion.Addr(), 1, uintptr(unsafe.Pointer(info)), 0, 0)
-       if r0 != 0 {
-               ret = syscall.Errno(r0)
+func LocalFree(hmem Handle) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0)
+       handle = Handle(r0)
+       if handle != 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) {
-       syscall.Syscall(procRtlGetNtVersionNumbers.Addr(), 3, uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber)))
-       return
-}
-
-func getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetProcessPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
+func LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {
+       r1, _, e1 := syscall.Syscall6(procLockFileEx.Addr(), 6, uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetThreadPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) {
+       r0, _, e1 := syscall.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0)
+       addr = uintptr(r0)
+       if addr == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetUserPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
+func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetSystemPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)
+func MoveFile(from *uint16, to *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) {
-       var _p0 *uint32
-       if len(processIds) > 0 {
-               _p0 = &processIds[0]
-       }
-       r1, _, e1 := syscall.Syscall(procEnumProcesses.Addr(), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(processIds)), uintptr(unsafe.Pointer(bytesReturned)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {
+       r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar))
+       nwrite = int32(r0)
+       if nwrite == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
-       r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
-       if r0 != 0 {
-               sockerr = syscall.Errno(r0)
+func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {
+       var _p0 uint32
+       if inheritHandle {
+               _p0 = 1
+       }
+       r0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func WSACleanup() (err error) {
-       r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {
+       var _p0 uint32
+       if inheritHandle {
+               _p0 = 1
+       }
+       r0, _, e1 := syscall.Syscall(procOpenMutexW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
-       r1, _, e1 := syscall.Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) {
+       var _p0 uint32
+       if inheritHandle {
+               _p0 = 1
+       }
+       r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(processId))
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func socket(af int32, typ int32, protocol int32) (handle Handle, err error) {
-       r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol))
+func OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) {
+       var _p0 uint32
+       if inheritHandle {
+               _p0 = 1
+       }
+       r0, _, e1 := syscall.Syscall(procOpenThread.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(threadId))
        handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) {
-       var _p0 *byte
-       if len(buf) > 0 {
-               _p0 = &buf[0]
-       }
-       r1, _, e1 := syscall.Syscall6(procsendto.Addr(), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(tolen))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) {
+       r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) {
-       var _p0 *byte
-       if len(buf) > 0 {
-               _p0 = &buf[0]
-       }
-       r0, _, e1 := syscall.Syscall6(procrecvfrom.Addr(), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-       n = int32(r0)
-       if n == -1 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {
+       r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {
+       r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procProcessIdToSessionId.Addr(), 2, uintptr(pid), uintptr(unsafe.Pointer(sessionid)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {
-       r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func PulseEvent(event Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {
-       r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max))
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
-       r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procQueryInformationJobObject.Addr(), 5, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), uintptr(unsafe.Pointer(retlen)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
-       r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {
+       r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func listen(s Handle, backlog int32) (err error) {
-       r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
+       var _p0 uint32
+       if watchSubTree {
+               _p0 = 1
+       }
+       r1, _, e1 := syscall.Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func shutdown(s Handle, how int32) (err error) {
-       r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
+       var _p0 *byte
+       if len(buf) > 0 {
+               _p0 = &buf[0]
+       }
+       r1, _, e1 := syscall.Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func Closesocket(s Handle) (err error) {
-       r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func ReleaseMutex(mutex Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
-       r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0)
+func RemoveDirectory(path *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {
-       syscall.Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0)
+func ResetEvent(event Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {
-       r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func ResumeThread(thread Handle) (ret uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0)
+       ret = uint32(r0)
+       if ret == 0xffffffff {
+               err = errnoErr(e1)
        }
        return
 }
 
-func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {
-       r1, _, e1 := syscall.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func SetConsoleCursorPosition(console Handle, position Coord) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetConsoleCursorPosition.Addr(), 2, uintptr(console), uintptr(*((*uint32)(unsafe.Pointer(&position)))), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {
-       r1, _, e1 := syscall.Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func SetConsoleMode(console Handle, mode uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {
-       r1, _, e1 := syscall.Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func SetCurrentDirectory(path *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetHostByName(name string) (h *Hostent, err error) {
-       var _p0 *byte
-       _p0, err = syscall.BytePtrFromString(name)
-       if err != nil {
-               return
+func SetEndOfFile(handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
-       return _GetHostByName(_p0)
+       return
 }
 
-func _GetHostByName(name *byte) (h *Hostent, err error) {
-       r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
-       h = (*Hostent)(unsafe.Pointer(r0))
-       if h == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func SetEnvironmentVariable(name *uint16, value *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetServByName(name string, proto string) (s *Servent, err error) {
-       var _p0 *byte
-       _p0, err = syscall.BytePtrFromString(name)
-       if err != nil {
-               return
-       }
-       var _p1 *byte
-       _p1, err = syscall.BytePtrFromString(proto)
-       if err != nil {
-               return
+func SetErrorMode(mode uint32) (ret uint32) {
+       r0, _, _ := syscall.Syscall(procSetErrorMode.Addr(), 1, uintptr(mode), 0, 0)
+       ret = uint32(r0)
+       return
+}
+
+func SetEvent(event Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
-       return _GetServByName(_p0, _p1)
+       return
 }
 
-func _GetServByName(name *byte, proto *byte) (s *Servent, err error) {
-       r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0)
-       s = (*Servent)(unsafe.Pointer(r0))
-       if s == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func SetFileAttributes(name *uint16, attrs uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func Ntohs(netshort uint16) (u uint16) {
-       r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0)
-       u = uint16(r0)
+func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func GetProtoByName(name string) (p *Protoent, err error) {
-       var _p0 *byte
-       _p0, err = syscall.BytePtrFromString(name)
-       if err != nil {
-               return
+func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {
+       r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0)
+       newlowoffset = uint32(r0)
+       if newlowoffset == 0xffffffff {
+               err = errnoErr(e1)
        }
-       return _GetProtoByName(_p0)
+       return
 }
 
-func _GetProtoByName(name *byte) (p *Protoent, err error) {
-       r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
-       p = (*Protoent)(unsafe.Pointer(r0))
-       if p == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {
+       r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
-       var _p0 *uint16
-       _p0, status = syscall.UTF16PtrFromString(name)
-       if status != nil {
-               return
+func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
-       return _DnsQuery(_p0, qtype, options, extra, qrs, pr)
+       return
 }
 
-func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
-       r0, _, _ := syscall.Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr)))
-       if r0 != 0 {
-               status = syscall.Errno(r0)
+func SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) {
+       r0, _, e1 := syscall.Syscall6(procSetInformationJobObject.Addr(), 4, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), 0, 0)
+       ret = int(r0)
+       if ret == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func DnsRecordListFree(rl *DNSRecord, freetype uint32) {
-       syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0)
+func SetPriorityClass(process Handle, priorityClass uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetPriorityClass.Addr(), 2, uintptr(process), uintptr(priorityClass), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {
-       r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)
-       same = r0 != 0
+func SetProcessPriorityBoost(process Handle, disable bool) (err error) {
+       var _p0 uint32
+       if disable {
+               _p0 = 1
+       }
+       r1, _, e1 := syscall.Syscall(procSetProcessPriorityBoost.Addr(), 2, uintptr(process), uintptr(_p0), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {
-       r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)
-       if r0 != 0 {
-               sockerr = syscall.Errno(r0)
+func SetProcessShutdownParameters(level uint32, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetProcessShutdownParameters.Addr(), 2, uintptr(level), uintptr(flags), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func FreeAddrInfoW(addrinfo *AddrinfoW) {
-       syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
+func SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procSetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(dwMinimumWorkingSetSize), uintptr(dwMaximumWorkingSetSize), uintptr(flags), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
-       r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
-       if r0 != 0 {
-               errcode = syscall.Errno(r0)
+func SetStdHandle(stdhandle uint32, handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {
-       r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0)
-       if r0 != 0 {
-               errcode = syscall.Errno(r0)
+func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0)
+func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {
-       r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))
-       n = int32(r0)
-       if n == -1 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func SleepEx(milliseconds uint32, alertable bool) (ret uint32) {
+       var _p0 uint32
+       if alertable {
+               _p0 = 1
        }
+       r0, _, _ := syscall.Syscall(procSleepEx.Addr(), 2, uintptr(milliseconds), uintptr(_p0), 0)
+       ret = uint32(r0)
        return
 }
 
-func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
-       r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
-       if r0 != 0 {
-               errcode = syscall.Errno(r0)
+func TerminateJobObject(job Handle, exitCode uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procTerminateJobObject.Addr(), 2, uintptr(job), uintptr(exitCode), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetACP() (acp uint32) {
-       r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0)
-       acp = uint32(r0)
+func TerminateProcess(handle Handle, exitcode uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {
-       r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar))
-       nwrite = int32(r0)
-       if nwrite == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) {
+       r1, _, e1 := syscall.Syscall(procThread32First.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0)
-       if r1&0xff == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) {
+       r1, _, e1 := syscall.Syscall(procThread32Next.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))
-       if r1&0xff == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {
+       r1, _, e1 := syscall.Syscall6(procUnlockFileEx.Addr(), 5, uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {
-       r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0)
-       if r0 != 0 {
-               neterr = syscall.Errno(r0)
+func UnmapViewOfFile(addr uintptr) (err error) {
+       r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {
-       r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))
-       if r0 != 0 {
-               neterr = syscall.Errno(r0)
+func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) {
+       r0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0)
+       value = uintptr(r0)
+       if value == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func NetApiBufferFree(buf *byte) (neterr error) {
-       r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0)
-       if r0 != 0 {
-               neterr = syscall.Errno(r0)
+func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
+func VirtualLock(addr uintptr, length uintptr) (err error) {
+       r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
+func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0)
+func VirtualUnlock(addr uintptr, length uintptr) (err error) {
+       r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {
-       r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {
+       var _p0 uint32
+       if waitAll {
+               _p0 = 1
+       }
+       r0, _, e1 := syscall.Syscall6(procWaitForMultipleObjects.Addr(), 4, uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds), 0, 0)
+       event = uint32(r0)
+       if event == 0xffffffff {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetLengthSid(sid *SID) (len uint32) {
-       r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
-       len = uint32(r0)
+func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0)
+       event = uint32(r0)
+       if event == 0xffffffff {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {
-       r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))
+func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {
+       r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) {
-       r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0)
+func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
+       var _p0 *byte
+       if len(buf) > 0 {
+               _p0 = &buf[0]
+       }
+       r1, _, e1 := syscall.Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0)
+func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
+       r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) {
-       r0, _, _ := syscall.Syscall(procIsWellKnownSid.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(sidType), 0)
-       isWellKnown = r0 != 0
+func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {
+       syscall.Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0)
        return
 }
 
-func FreeSid(sid *SID) (err error) {
-       r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
-       if r1 != 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) {
-       r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0)
-       isEqual = r0 != 0
+func NetApiBufferFree(buf *byte) (neterr error) {
+       r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0)
+       if r0 != 0 {
+               neterr = syscall.Errno(r0)
+       }
        return
 }
 
-func getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) {
-       r0, _, _ := syscall.Syscall(procGetSidIdentifierAuthority.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
-       authority = (*SidIdentifierAuthority)(unsafe.Pointer(r0))
+func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {
+       r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))
+       if r0 != 0 {
+               neterr = syscall.Errno(r0)
+       }
        return
 }
 
-func getSidSubAuthorityCount(sid *SID) (count *uint8) {
-       r0, _, _ := syscall.Syscall(procGetSidSubAuthorityCount.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
-       count = (*uint8)(unsafe.Pointer(r0))
+func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {
+       r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0)
+       if r0 != 0 {
+               neterr = syscall.Errno(r0)
+       }
        return
 }
 
-func getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) {
-       r0, _, _ := syscall.Syscall(procGetSidSubAuthority.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(index), 0)
-       subAuthority = (*uint32)(unsafe.Pointer(r0))
+func rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) {
+       syscall.Syscall(procRtlGetNtVersionNumbers.Addr(), 3, uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber)))
        return
 }
 
-func isValidSid(sid *SID) (isValid bool) {
-       r0, _, _ := syscall.Syscall(procIsValidSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
-       isValid = r0 != 0
+func rtlGetVersion(info *OsVersionInfoEx) (ret error) {
+       r0, _, _ := syscall.Syscall(procRtlGetVersion.Addr(), 1, uintptr(unsafe.Pointer(info)), 0, 0)
+       if r0 != 0 {
+               ret = syscall.Errno(r0)
+       }
        return
 }
 
-func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) {
-       r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) {
+       r0, _, _ := syscall.Syscall(procCLSIDFromString.Addr(), 2, uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)), 0)
+       if r0 != 0 {
+               ret = syscall.Errno(r0)
        }
        return
 }
 
-func OpenProcessToken(process Handle, access uint32, token *Token) (err error) {
-       r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func coCreateGuid(pguid *GUID) (ret error) {
+       r0, _, _ := syscall.Syscall(procCoCreateGuid.Addr(), 1, uintptr(unsafe.Pointer(pguid)), 0, 0)
+       if r0 != 0 {
+               ret = syscall.Errno(r0)
        }
        return
 }
 
-func OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) {
-       var _p0 uint32
-       if openAsSelf {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func CoTaskMemFree(address unsafe.Pointer) {
+       syscall.Syscall(procCoTaskMemFree.Addr(), 1, uintptr(address), 0, 0)
        return
 }
 
-func ImpersonateSelf(impersonationlevel uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(impersonationlevel), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) {
+       r0, _, _ := syscall.Syscall(procStringFromGUID2.Addr(), 3, uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax))
+       chars = int32(r0)
        return
 }
 
-func RevertToSelf() (err error) {
-       r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0)
+func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) {
+       var _p0 *uint32
+       if len(processIds) > 0 {
+               _p0 = &processIds[0]
+       }
+       r1, _, e1 := syscall.Syscall(procEnumProcesses.Addr(), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(processIds)), uintptr(unsafe.Pointer(bytesReturned)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetThreadToken(thread *Handle, token Token) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetThreadToken.Addr(), 2, uintptr(unsafe.Pointer(thread)), uintptr(token), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))
+       if r1&0xff == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) {
-       r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0)
+       if r1&0xff == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) {
-       var _p0 uint32
-       if disableAllPrivileges {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
+       r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
+       argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
+       if argv == nil {
+               err = errnoErr(e1)
        }
        return
 }
 
-func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) {
-       var _p0 uint32
-       if resetToDefault {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall6(procAdjustTokenGroups.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) {
+       r0, _, _ := syscall.Syscall6(procSHGetKnownFolderPath.Addr(), 4, uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)), 0, 0)
+       if r0 != 0 {
+               ret = syscall.Errno(r0)
        }
        return
 }
 
-func GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procShellExecuteW.Addr(), 6, uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd))
+       if r1 <= 32 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), 0, 0)
+func ExitWindowsEx(flags uint32, reason uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procExitWindowsEx.Addr(), 2, uintptr(flags), uintptr(reason), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) {
-       r1, _, e1 := syscall.Syscall6(procDuplicateTokenEx.Addr(), 6, uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {
+       r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0)
+       ret = int32(r0)
+       if ret == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))
+func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) {
+       var _p0 uint32
+       if inheritExisting {
+               _p0 = 1
+       }
+       r1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
-       len = uint32(r0)
-       if len == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func DestroyEnvironmentBlock(block *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
-       len = uint32(r0)
-       if len == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetSystemWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
-       len = uint32(r0)
-       if len == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func FreeAddrInfoW(addrinfo *AddrinfoW) {
+       syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
        return
 }
 
-func WTSQueryUserToken(session uint32, token *Token) (err error) {
-       r1, _, e1 := syscall.Syscall(procWTSQueryUserToken.Addr(), 2, uintptr(session), uintptr(unsafe.Pointer(token)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {
+       r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)
+       if r0 != 0 {
+               sockerr = syscall.Errno(r0)
        }
        return
 }
 
-func WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procWTSEnumerateSessionsW.Addr(), 5, uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func WSACleanup() (err error) {
+       r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0)
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func WTSFreeMemory(ptr uintptr) {
-       syscall.Syscall(procWTSFreeMemory.Addr(), 1, uintptr(ptr), 0, 0)
+func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {
+       r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))
+       n = int32(r0)
+       if n == -1 {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
-       r0, _, _ := syscall.Syscall9(procGetSecurityInfo.Addr(), 8, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0)
-       if r0 != 0 {
-               ret = syscall.Errno(r0)
+func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
+       r1, _, e1 := syscall.Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) {
-       syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0)
+func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {
+       r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
+       if r1 == socket_error {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
-       var _p0 *uint16
-       _p0, ret = syscall.UTF16PtrFromString(objectName)
-       if ret != nil {
-               return
+func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {
+       r1, _, e1 := syscall.Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
-       return _getNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl, sd)
+       return
 }
 
-func _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
-       r0, _, _ := syscall.Syscall9(procGetNamedSecurityInfoW.Addr(), 8, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0)
-       if r0 != 0 {
-               ret = syscall.Errno(r0)
+func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {
+       r1, _, e1 := syscall.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {
-       var _p0 *uint16
-       _p0, ret = syscall.UTF16PtrFromString(objectName)
-       if ret != nil {
-               return
+func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {
+       r1, _, e1 := syscall.Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
-       return _SetNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl)
+       return
 }
 
-func _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {
-       r0, _, _ := syscall.Syscall9(procSetNamedSecurityInfoW.Addr(), 7, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0)
+func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
+       r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
        if r0 != 0 {
-               ret = syscall.Errno(r0)
+               sockerr = syscall.Errno(r0)
        }
        return
 }
 
-func buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) {
-       r0, _, _ := syscall.Syscall9(procBuildSecurityDescriptorW.Addr(), 9, uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor)))
-       if r0 != 0 {
-               ret = syscall.Errno(r0)
+func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {
+       r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procInitializeSecurityDescriptor.Addr(), 2, uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func Closesocket(s Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0)
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {
+       r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) {
-       var _p0 uint32
-       if *daclPresent {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       var _p1 uint32
-       if *daclDefaulted {
-               _p1 = 1
-       } else {
-               _p1 = 0
-       }
-       r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0)
-       *daclPresent = _p0 != 0
-       *daclDefaulted = _p1 != 0
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetHostByName(name string) (h *Hostent, err error) {
+       var _p0 *byte
+       _p0, err = syscall.BytePtrFromString(name)
+       if err != nil {
+               return
        }
-       return
+       return _GetHostByName(_p0)
 }
 
-func getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) {
-       var _p0 uint32
-       if *saclPresent {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       var _p1 uint32
-       if *saclDefaulted {
-               _p1 = 1
-       } else {
-               _p1 = 0
-       }
-       r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0)
-       *saclPresent = _p0 != 0
-       *saclDefaulted = _p1 != 0
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func _GetHostByName(name *byte) (h *Hostent, err error) {
+       r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
+       h = (*Hostent)(unsafe.Pointer(r0))
+       if h == nil {
+               err = errnoErr(e1)
        }
        return
 }
 
-func getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) {
-       var _p0 uint32
-       if *ownerDefaulted {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0)))
-       *ownerDefaulted = _p0 != 0
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
+       r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) {
-       var _p0 uint32
-       if *groupDefaulted {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0)))
-       *groupDefaulted = _p0 != 0
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetProtoByName(name string) (p *Protoent, err error) {
+       var _p0 *byte
+       _p0, err = syscall.BytePtrFromString(name)
+       if err != nil {
+               return
        }
-       return
+       return _GetProtoByName(_p0)
 }
 
-func getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) {
-       r0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0)
-       len = uint32(r0)
+func _GetProtoByName(name *byte) (p *Protoent, err error) {
+       r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
+       p = (*Protoent)(unsafe.Pointer(r0))
+       if p == nil {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) {
-       r0, _, _ := syscall.Syscall(procGetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0)
-       if r0 != 0 {
-               ret = syscall.Errno(r0)
+func GetServByName(name string, proto string) (s *Servent, err error) {
+       var _p0 *byte
+       _p0, err = syscall.BytePtrFromString(name)
+       if err != nil {
+               return
        }
-       return
+       var _p1 *byte
+       _p1, err = syscall.BytePtrFromString(proto)
+       if err != nil {
+               return
+       }
+       return _GetServByName(_p0, _p1)
 }
 
-func isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) {
-       r0, _, _ := syscall.Syscall(procIsValidSecurityDescriptor.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0)
-       isValid = r0 != 0
+func _GetServByName(name *byte, proto *byte) (s *Servent, err error) {
+       r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0)
+       s = (*Servent)(unsafe.Pointer(r0))
+       if s == nil {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) {
-       r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
+       r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) {
-       var _p0 uint32
-       if daclPresent {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       var _p1 uint32
-       if daclDefaulted {
-               _p1 = 1
-       } else {
-               _p1 = 0
-       }
-       r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0)
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) {
-       var _p0 uint32
-       if saclPresent {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       var _p1 uint32
-       if saclDefaulted {
-               _p1 = 1
-       } else {
-               _p1 = 0
-       }
-       r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func listen(s Handle, backlog int32) (err error) {
+       r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0)
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) {
-       var _p0 uint32
-       if ownerDefaulted {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func Ntohs(netshort uint16) (u uint16) {
+       r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0)
+       u = uint16(r0)
        return
 }
 
-func setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) {
-       var _p0 uint32
-       if groupDefaulted {
-               _p0 = 1
-       } else {
-               _p0 = 0
+func recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) {
+       var _p0 *byte
+       if len(buf) > 0 {
+               _p0 = &buf[0]
        }
-       r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+       r0, _, e1 := syscall.Syscall6(procrecvfrom.Addr(), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+       n = int32(r0)
+       if n == -1 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) {
-       syscall.Syscall(procSetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0)
+func sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) {
+       var _p0 *byte
+       if len(buf) > 0 {
+               _p0 = &buf[0]
+       }
+       r1, _, e1 := syscall.Syscall6(procsendto.Addr(), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(tolen))
+       if r1 == socket_error {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {
-       var _p0 *uint16
-       _p0, err = syscall.UTF16PtrFromString(str)
-       if err != nil {
-               return
+func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0)
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
-       return _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size)
+       return
 }
 
-func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func shutdown(s Handle, how int32) (err error) {
+       r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0)
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func socket(af int32, typ int32, protocol int32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol))
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               err = errnoErr(e1)
        }
        return
 }
 
-func makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall12(procMakeAbsoluteSD.Addr(), 11, uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize)), 0)
+func WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procWTSEnumerateSessionsW.Addr(), 5, uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procMakeSelfRelativeSD.Addr(), 3, uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func WTSFreeMemory(ptr uintptr) {
+       syscall.Syscall(procWTSFreeMemory.Addr(), 1, uintptr(ptr), 0, 0)
        return
 }
 
-func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) {
-       r0, _, _ := syscall.Syscall6(procSetEntriesInAclW.Addr(), 4, uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL)), 0, 0)
-       if r0 != 0 {
-               ret = syscall.Errno(r0)
+func WTSQueryUserToken(session uint32, token *Token) (err error) {
+       r1, _, e1 := syscall.Syscall(procWTSQueryUserToken.Addr(), 2, uintptr(session), uintptr(unsafe.Pointer(token)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
index 4be3a2b68000ceda5e1984d814164636ffd1faed..906a19e02bfe36af6fba4dddd765088504eebfd0 100644 (file)
@@ -40,7 +40,7 @@ golang.org/x/mod/sumdb/dirhash
 golang.org/x/mod/sumdb/note
 golang.org/x/mod/sumdb/tlog
 golang.org/x/mod/zip
-# golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d
+# golang.org/x/sys v0.0.0-20201101102859-da207088b7d1
 ## explicit
 golang.org/x/sys/internal/unsafeheader
 golang.org/x/sys/unix
@@ -72,6 +72,7 @@ golang.org/x/tools/go/analysis/passes/shift
 golang.org/x/tools/go/analysis/passes/stdmethods
 golang.org/x/tools/go/analysis/passes/stringintconv
 golang.org/x/tools/go/analysis/passes/structtag
+golang.org/x/tools/go/analysis/passes/testinggoroutine
 golang.org/x/tools/go/analysis/passes/tests
 golang.org/x/tools/go/analysis/passes/unmarshal
 golang.org/x/tools/go/analysis/passes/unreachable
index 3bdfbef052c0b72fadb60d132ffd2f27649632d7..a56c61606fc3141bbc555f8d3028def61fd0b3f9 100644 (file)
@@ -5,6 +5,6 @@ go 1.16
 require (
        golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a
        golang.org/x/net v0.0.0-20200927032502-5d4f70055728
-       golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d // indirect
+       golang.org/x/sys v0.0.0-20201101102859-da207088b7d1 // indirect
        golang.org/x/text v0.3.4-0.20200826142016-a8b467125457 // indirect
 )
index 6a0388740998de5796a813f45b43ccd121ec7284..391e47740f69f63d1a330cf6e592e9c8db7df268 100644 (file)
@@ -8,8 +8,8 @@ golang.org/x/net v0.0.0-20200927032502-5d4f70055728/go.mod h1:/O7V0waA8r7cgGh81R
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d h1:L/IKR6COd7ubZrs2oTnTi73IhgqJ71c9s80WsQnh0Es=
-golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201101102859-da207088b7d1 h1:a/mKvvZr9Jcc8oKfcmgzyp7OwF73JPWsQLvH1z2Kxck=
+golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.4-0.20200826142016-a8b467125457 h1:K2Vq+FTHFbV5auJiAahir8LO9HUqufuVbQYSNzZopos=
 golang.org/x/text v0.3.4-0.20200826142016-a8b467125457/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
index c3f3a8a2154196891818b8a1195a87b14178a8a3..cab13193749c1b446d15f3155bb3c6937329e8e5 100644 (file)
@@ -18,6 +18,7 @@ const (
 
 var (
        errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
+       errERROR_EINVAL     error = syscall.EINVAL
 )
 
 // errnoErr returns common boxed Errno values, to prevent
@@ -25,7 +26,7 @@ var (
 func errnoErr(e syscall.Errno) error {
        switch e {
        case 0:
-               return nil
+               return errERROR_EINVAL
        case errnoERROR_IO_PENDING:
                return errERROR_IO_PENDING
        }
@@ -41,10 +42,10 @@ var (
 
        procRegCreateKeyExW           = modadvapi32.NewProc("RegCreateKeyExW")
        procRegDeleteKeyW             = modadvapi32.NewProc("RegDeleteKeyW")
-       procRegSetValueExW            = modadvapi32.NewProc("RegSetValueExW")
-       procRegEnumValueW             = modadvapi32.NewProc("RegEnumValueW")
        procRegDeleteValueW           = modadvapi32.NewProc("RegDeleteValueW")
+       procRegEnumValueW             = modadvapi32.NewProc("RegEnumValueW")
        procRegLoadMUIStringW         = modadvapi32.NewProc("RegLoadMUIStringW")
+       procRegSetValueExW            = modadvapi32.NewProc("RegSetValueExW")
        procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW")
 )
 
@@ -64,8 +65,8 @@ func regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) {
        return
 }
 
-func regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) {
-       r0, _, _ := syscall.Syscall6(procRegSetValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(valueName)), uintptr(reserved), uintptr(vtype), uintptr(unsafe.Pointer(buf)), uintptr(bufsize))
+func regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) {
+       r0, _, _ := syscall.Syscall(procRegDeleteValueW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(name)), 0)
        if r0 != 0 {
                regerrno = syscall.Errno(r0)
        }
@@ -80,16 +81,16 @@ func regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint3
        return
 }
 
-func regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) {
-       r0, _, _ := syscall.Syscall(procRegDeleteValueW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(name)), 0)
+func regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) {
+       r0, _, _ := syscall.Syscall9(procRegLoadMUIStringW.Addr(), 7, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(unsafe.Pointer(buflenCopied)), uintptr(flags), uintptr(unsafe.Pointer(dir)), 0, 0)
        if r0 != 0 {
                regerrno = syscall.Errno(r0)
        }
        return
 }
 
-func regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) {
-       r0, _, _ := syscall.Syscall9(procRegLoadMUIStringW.Addr(), 7, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(unsafe.Pointer(buflenCopied)), uintptr(flags), uintptr(unsafe.Pointer(dir)), 0, 0)
+func regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) {
+       r0, _, _ := syscall.Syscall6(procRegSetValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(valueName)), uintptr(reserved), uintptr(vtype), uintptr(unsafe.Pointer(buf)), uintptr(bufsize))
        if r0 != 0 {
                regerrno = syscall.Errno(r0)
        }
@@ -100,11 +101,7 @@ func expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32,
        r0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size))
        n = uint32(r0)
        if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
index 1eb8c2dfd21c02ad116014949a02cdbd02357d9a..170b239486d4246c7d3aa451a4dc61f621863631 100644 (file)
@@ -18,6 +18,7 @@ const (
 
 var (
        errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
+       errERROR_EINVAL     error = syscall.EINVAL
 )
 
 // errnoErr returns common boxed Errno values, to prevent
@@ -25,7 +26,7 @@ var (
 func errnoErr(e syscall.Errno) error {
        switch e {
        case 0:
-               return nil
+               return errERROR_EINVAL
        case errnoERROR_IO_PENDING:
                return errERROR_IO_PENDING
        }
@@ -36,134 +37,113 @@ func errnoErr(e syscall.Errno) error {
 }
 
 var (
+       modadvapi32 = syscall.NewLazyDLL(sysdll.Add("advapi32.dll"))
        modiphlpapi = syscall.NewLazyDLL(sysdll.Add("iphlpapi.dll"))
        modkernel32 = syscall.NewLazyDLL(sysdll.Add("kernel32.dll"))
-       modws2_32   = syscall.NewLazyDLL(sysdll.Add("ws2_32.dll"))
        modnetapi32 = syscall.NewLazyDLL(sysdll.Add("netapi32.dll"))
-       moduserenv  = syscall.NewLazyDLL(sysdll.Add("userenv.dll"))
-       modadvapi32 = syscall.NewLazyDLL(sysdll.Add("advapi32.dll"))
        modpsapi    = syscall.NewLazyDLL(sysdll.Add("psapi.dll"))
+       moduserenv  = syscall.NewLazyDLL(sysdll.Add("userenv.dll"))
+       modws2_32   = syscall.NewLazyDLL(sysdll.Add("ws2_32.dll"))
 
+       procAdjustTokenPrivileges        = modadvapi32.NewProc("AdjustTokenPrivileges")
+       procDuplicateTokenEx             = modadvapi32.NewProc("DuplicateTokenEx")
+       procImpersonateSelf              = modadvapi32.NewProc("ImpersonateSelf")
+       procLookupPrivilegeValueW        = modadvapi32.NewProc("LookupPrivilegeValueW")
+       procOpenThreadToken              = modadvapi32.NewProc("OpenThreadToken")
+       procRevertToSelf                 = modadvapi32.NewProc("RevertToSelf")
+       procSetTokenInformation          = modadvapi32.NewProc("SetTokenInformation")
        procGetAdaptersAddresses         = modiphlpapi.NewProc("GetAdaptersAddresses")
+       procGetACP                       = modkernel32.NewProc("GetACP")
        procGetComputerNameExW           = modkernel32.NewProc("GetComputerNameExW")
-       procMoveFileExW                  = modkernel32.NewProc("MoveFileExW")
+       procGetConsoleCP                 = modkernel32.NewProc("GetConsoleCP")
+       procGetCurrentThread             = modkernel32.NewProc("GetCurrentThread")
+       procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx")
+       procGetFinalPathNameByHandleW    = modkernel32.NewProc("GetFinalPathNameByHandleW")
        procGetModuleFileNameW           = modkernel32.NewProc("GetModuleFileNameW")
-       procSetFileInformationByHandle   = modkernel32.NewProc("SetFileInformationByHandle")
-       procWSASocketW                   = modws2_32.NewProc("WSASocketW")
        procLockFileEx                   = modkernel32.NewProc("LockFileEx")
-       procUnlockFileEx                 = modkernel32.NewProc("UnlockFileEx")
-       procGetACP                       = modkernel32.NewProc("GetACP")
-       procGetConsoleCP                 = modkernel32.NewProc("GetConsoleCP")
+       procMoveFileExW                  = modkernel32.NewProc("MoveFileExW")
        procMultiByteToWideChar          = modkernel32.NewProc("MultiByteToWideChar")
-       procGetCurrentThread             = modkernel32.NewProc("GetCurrentThread")
+       procSetFileInformationByHandle   = modkernel32.NewProc("SetFileInformationByHandle")
+       procUnlockFileEx                 = modkernel32.NewProc("UnlockFileEx")
        procNetShareAdd                  = modnetapi32.NewProc("NetShareAdd")
        procNetShareDel                  = modnetapi32.NewProc("NetShareDel")
-       procGetFinalPathNameByHandleW    = modkernel32.NewProc("GetFinalPathNameByHandleW")
+       procNetUserGetLocalGroups        = modnetapi32.NewProc("NetUserGetLocalGroups")
+       procGetProcessMemoryInfo         = modpsapi.NewProc("GetProcessMemoryInfo")
        procCreateEnvironmentBlock       = moduserenv.NewProc("CreateEnvironmentBlock")
        procDestroyEnvironmentBlock      = moduserenv.NewProc("DestroyEnvironmentBlock")
-       procImpersonateSelf              = modadvapi32.NewProc("ImpersonateSelf")
-       procRevertToSelf                 = modadvapi32.NewProc("RevertToSelf")
-       procOpenThreadToken              = modadvapi32.NewProc("OpenThreadToken")
-       procLookupPrivilegeValueW        = modadvapi32.NewProc("LookupPrivilegeValueW")
-       procAdjustTokenPrivileges        = modadvapi32.NewProc("AdjustTokenPrivileges")
-       procDuplicateTokenEx             = modadvapi32.NewProc("DuplicateTokenEx")
-       procSetTokenInformation          = modadvapi32.NewProc("SetTokenInformation")
        procGetProfilesDirectoryW        = moduserenv.NewProc("GetProfilesDirectoryW")
-       procNetUserGetLocalGroups        = modnetapi32.NewProc("NetUserGetLocalGroups")
-       procGetProcessMemoryInfo         = modpsapi.NewProc("GetProcessMemoryInfo")
-       procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx")
+       procWSASocketW                   = modws2_32.NewProc("WSASocketW")
 )
 
-func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
-       r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
-       if r0 != 0 {
-               errcode = syscall.Errno(r0)
+func adjustTokenPrivileges(token syscall.Token, disableAllPrivileges bool, newstate *TOKEN_PRIVILEGES, buflen uint32, prevstate *TOKEN_PRIVILEGES, returnlen *uint32) (ret uint32, err error) {
+       var _p0 uint32
+       if disableAllPrivileges {
+               _p0 = 1
+       }
+       r0, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))
+       ret = uint32(r0)
+       if true {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetComputerNameEx(nameformat uint32, buf *uint16, n *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nameformat), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))
+func DuplicateTokenEx(hExistingToken syscall.Token, dwDesiredAccess uint32, lpTokenAttributes *syscall.SecurityAttributes, impersonationLevel uint32, tokenType TokenType, phNewToken *syscall.Token) (err error) {
+       r1, _, e1 := syscall.Syscall6(procDuplicateTokenEx.Addr(), 6, uintptr(hExistingToken), uintptr(dwDesiredAccess), uintptr(unsafe.Pointer(lpTokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(phNewToken)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
+func ImpersonateSelf(impersonationlevel uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(impersonationlevel), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetModuleFileName(module syscall.Handle, fn *uint16, len uint32) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(fn)), uintptr(len))
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) {
+       r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetFileInformationByHandle(handle syscall.Handle, fileInformationClass uint32, buf uintptr, bufsize uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(handle), uintptr(fileInformationClass), uintptr(buf), uintptr(bufsize), 0, 0)
+func OpenThreadToken(h syscall.Handle, access uint32, openasself bool, token *syscall.Token) (err error) {
+       var _p0 uint32
+       if openasself {
+               _p0 = 1
+       }
+       r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(h), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func WSASocket(af int32, typ int32, protocol int32, protinfo *syscall.WSAProtocolInfo, group uint32, flags uint32) (handle syscall.Handle, err error) {
-       r0, _, e1 := syscall.Syscall6(procWSASocketW.Addr(), 6, uintptr(af), uintptr(typ), uintptr(protocol), uintptr(unsafe.Pointer(protinfo)), uintptr(group), uintptr(flags))
-       handle = syscall.Handle(r0)
-       if handle == syscall.InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func RevertToSelf() (err error) {
+       r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func LockFileEx(file syscall.Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *syscall.Overlapped) (err error) {
-       r1, _, e1 := syscall.Syscall6(procLockFileEx.Addr(), 6, uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))
+func SetTokenInformation(tokenHandle syscall.Token, tokenInformationClass uint32, tokenInformation uintptr, tokenInformationLength uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(tokenHandle), uintptr(tokenInformationClass), uintptr(tokenInformation), uintptr(tokenInformationLength), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func UnlockFileEx(file syscall.Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *syscall.Overlapped) (err error) {
-       r1, _, e1 := syscall.Syscall6(procUnlockFileEx.Addr(), 5, uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
+       r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
+       if r0 != 0 {
+               errcode = syscall.Errno(r0)
        }
        return
 }
@@ -174,22 +154,17 @@ func GetACP() (acp uint32) {
        return
 }
 
-func GetConsoleCP() (ccp uint32) {
-       r0, _, _ := syscall.Syscall(procGetConsoleCP.Addr(), 0, 0, 0, 0)
-       ccp = uint32(r0)
+func GetComputerNameEx(nameformat uint32, buf *uint16, n *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nameformat), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {
-       r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar))
-       nwrite = int32(r0)
-       if nwrite == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
-       }
+func GetConsoleCP() (ccp uint32) {
+       r0, _, _ := syscall.Syscall(procGetConsoleCP.Addr(), 0, 0, 0, 0)
+       ccp = uint32(r0)
        return
 }
 
@@ -197,211 +172,143 @@ func GetCurrentThread() (pseudoHandle syscall.Handle, err error) {
        r0, _, e1 := syscall.Syscall(procGetCurrentThread.Addr(), 0, 0, 0, 0)
        pseudoHandle = syscall.Handle(r0)
        if pseudoHandle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func NetShareAdd(serverName *uint16, level uint32, buf *byte, parmErr *uint16) (neterr error) {
-       r0, _, _ := syscall.Syscall6(procNetShareAdd.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(level), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(parmErr)), 0, 0)
-       if r0 != 0 {
-               neterr = syscall.Errno(r0)
+func GetFileInformationByHandleEx(handle syscall.Handle, class uint32, info *byte, bufsize uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(info)), uintptr(bufsize), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func NetShareDel(serverName *uint16, netName *uint16, reserved uint32) (neterr error) {
-       r0, _, _ := syscall.Syscall(procNetShareDel.Addr(), 3, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(netName)), uintptr(reserved))
-       if r0 != 0 {
-               neterr = syscall.Errno(r0)
+func GetFinalPathNameByHandle(file syscall.Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall6(procGetFinalPathNameByHandleW.Addr(), 4, uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags), 0, 0)
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetFinalPathNameByHandle(file syscall.Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) {
-       r0, _, e1 := syscall.Syscall6(procGetFinalPathNameByHandleW.Addr(), 4, uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags), 0, 0)
+func GetModuleFileName(module syscall.Handle, fn *uint16, len uint32) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(fn)), uintptr(len))
        n = uint32(r0)
        if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateEnvironmentBlock(block **uint16, token syscall.Token, inheritExisting bool) (err error) {
-       var _p0 uint32
-       if inheritExisting {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0))
+func LockFileEx(file syscall.Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *syscall.Overlapped) (err error) {
+       r1, _, e1 := syscall.Syscall6(procLockFileEx.Addr(), 6, uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func DestroyEnvironmentBlock(block *uint16) (err error) {
-       r1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0)
+func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func ImpersonateSelf(impersonationlevel uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(impersonationlevel), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {
+       r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar))
+       nwrite = int32(r0)
+       if nwrite == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func RevertToSelf() (err error) {
-       r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0)
+func SetFileInformationByHandle(handle syscall.Handle, fileInformationClass uint32, buf uintptr, bufsize uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(handle), uintptr(fileInformationClass), uintptr(buf), uintptr(bufsize), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func OpenThreadToken(h syscall.Handle, access uint32, openasself bool, token *syscall.Token) (err error) {
-       var _p0 uint32
-       if openasself {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(h), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0)
+func UnlockFileEx(file syscall.Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *syscall.Overlapped) (err error) {
+       r1, _, e1 := syscall.Syscall6(procUnlockFileEx.Addr(), 5, uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) {
-       r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func NetShareAdd(serverName *uint16, level uint32, buf *byte, parmErr *uint16) (neterr error) {
+       r0, _, _ := syscall.Syscall6(procNetShareAdd.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(level), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(parmErr)), 0, 0)
+       if r0 != 0 {
+               neterr = syscall.Errno(r0)
        }
        return
 }
 
-func adjustTokenPrivileges(token syscall.Token, disableAllPrivileges bool, newstate *TOKEN_PRIVILEGES, buflen uint32, prevstate *TOKEN_PRIVILEGES, returnlen *uint32) (ret uint32, err error) {
-       var _p0 uint32
-       if disableAllPrivileges {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r0, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))
-       ret = uint32(r0)
-       if true {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func NetShareDel(serverName *uint16, netName *uint16, reserved uint32) (neterr error) {
+       r0, _, _ := syscall.Syscall(procNetShareDel.Addr(), 3, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(netName)), uintptr(reserved))
+       if r0 != 0 {
+               neterr = syscall.Errno(r0)
        }
        return
 }
 
-func DuplicateTokenEx(hExistingToken syscall.Token, dwDesiredAccess uint32, lpTokenAttributes *syscall.SecurityAttributes, impersonationLevel uint32, tokenType TokenType, phNewToken *syscall.Token) (err error) {
-       r1, _, e1 := syscall.Syscall6(procDuplicateTokenEx.Addr(), 6, uintptr(hExistingToken), uintptr(dwDesiredAccess), uintptr(unsafe.Pointer(lpTokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(phNewToken)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func NetUserGetLocalGroups(serverName *uint16, userName *uint16, level uint32, flags uint32, buf **byte, prefMaxLen uint32, entriesRead *uint32, totalEntries *uint32) (neterr error) {
+       r0, _, _ := syscall.Syscall9(procNetUserGetLocalGroups.Addr(), 8, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(flags), uintptr(unsafe.Pointer(buf)), uintptr(prefMaxLen), uintptr(unsafe.Pointer(entriesRead)), uintptr(unsafe.Pointer(totalEntries)), 0)
+       if r0 != 0 {
+               neterr = syscall.Errno(r0)
        }
        return
 }
 
-func SetTokenInformation(tokenHandle syscall.Token, tokenInformationClass uint32, tokenInformation uintptr, tokenInformationLength uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(tokenHandle), uintptr(tokenInformationClass), uintptr(tokenInformation), uintptr(tokenInformationLength), 0, 0)
+func GetProcessMemoryInfo(handle syscall.Handle, memCounters *PROCESS_MEMORY_COUNTERS, cb uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetProcessMemoryInfo.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(memCounters)), uintptr(cb))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetProfilesDirectory(dir *uint16, dirLen *uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetProfilesDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)), 0)
+func CreateEnvironmentBlock(block **uint16, token syscall.Token, inheritExisting bool) (err error) {
+       var _p0 uint32
+       if inheritExisting {
+               _p0 = 1
+       }
+       r1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func NetUserGetLocalGroups(serverName *uint16, userName *uint16, level uint32, flags uint32, buf **byte, prefMaxLen uint32, entriesRead *uint32, totalEntries *uint32) (neterr error) {
-       r0, _, _ := syscall.Syscall9(procNetUserGetLocalGroups.Addr(), 8, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(flags), uintptr(unsafe.Pointer(buf)), uintptr(prefMaxLen), uintptr(unsafe.Pointer(entriesRead)), uintptr(unsafe.Pointer(totalEntries)), 0)
-       if r0 != 0 {
-               neterr = syscall.Errno(r0)
+func DestroyEnvironmentBlock(block *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetProcessMemoryInfo(handle syscall.Handle, memCounters *PROCESS_MEMORY_COUNTERS, cb uint32) (err error) {
-       r1, _, e1 := syscall.Syscall(procGetProcessMemoryInfo.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(memCounters)), uintptr(cb))
+func GetProfilesDirectory(dir *uint16, dirLen *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetProfilesDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetFileInformationByHandleEx(handle syscall.Handle, class uint32, info *byte, bufsize uint32) (err error) {
-       r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(info)), uintptr(bufsize), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = syscall.EINVAL
-               }
+func WSASocket(af int32, typ int32, protocol int32, protinfo *syscall.WSAProtocolInfo, group uint32, flags uint32) (handle syscall.Handle, err error) {
+       r0, _, e1 := syscall.Syscall6(procWSASocketW.Addr(), 6, uintptr(af), uintptr(typ), uintptr(protocol), uintptr(unsafe.Pointer(protinfo)), uintptr(group), uintptr(flags))
+       handle = syscall.Handle(r0)
+       if handle == syscall.InvalidHandle {
+               err = errnoErr(e1)
        }
        return
 }
index b4222f0528bc1fad855781dad523f292e835d538..5d03ca9de9b9d5eb8608de149ec0dddcab9d903d 100644 (file)
@@ -17,6 +17,7 @@ const (
 
 var (
        errERROR_IO_PENDING error = Errno(errnoERROR_IO_PENDING)
+       errERROR_EINVAL     error = EINVAL
 )
 
 // errnoErr returns common boxed Errno values, to prevent
@@ -24,7 +25,7 @@ var (
 func errnoErr(e Errno) error {
        switch e {
        case 0:
-               return nil
+               return errERROR_EINVAL
        case errnoERROR_IO_PENDING:
                return errERROR_IO_PENDING
        }
@@ -35,318 +36,448 @@ func errnoErr(e Errno) error {
 }
 
 var (
-       modkernel32 = NewLazyDLL(sysdll.Add("kernel32.dll"))
        modadvapi32 = NewLazyDLL(sysdll.Add("advapi32.dll"))
-       modshell32  = NewLazyDLL(sysdll.Add("shell32.dll"))
-       modmswsock  = NewLazyDLL(sysdll.Add("mswsock.dll"))
        modcrypt32  = NewLazyDLL(sysdll.Add("crypt32.dll"))
-       modws2_32   = NewLazyDLL(sysdll.Add("ws2_32.dll"))
        moddnsapi   = NewLazyDLL(sysdll.Add("dnsapi.dll"))
        modiphlpapi = NewLazyDLL(sysdll.Add("iphlpapi.dll"))
-       modsecur32  = NewLazyDLL(sysdll.Add("secur32.dll"))
+       modkernel32 = NewLazyDLL(sysdll.Add("kernel32.dll"))
+       modmswsock  = NewLazyDLL(sysdll.Add("mswsock.dll"))
        modnetapi32 = NewLazyDLL(sysdll.Add("netapi32.dll"))
+       modsecur32  = NewLazyDLL(sysdll.Add("secur32.dll"))
+       modshell32  = NewLazyDLL(sysdll.Add("shell32.dll"))
        moduserenv  = NewLazyDLL(sysdll.Add("userenv.dll"))
+       modws2_32   = NewLazyDLL(sysdll.Add("ws2_32.dll"))
 
-       procGetLastError                       = modkernel32.NewProc("GetLastError")
-       procLoadLibraryW                       = modkernel32.NewProc("LoadLibraryW")
-       procFreeLibrary                        = modkernel32.NewProc("FreeLibrary")
-       procGetProcAddress                     = modkernel32.NewProc("GetProcAddress")
-       procGetVersion                         = modkernel32.NewProc("GetVersion")
-       procFormatMessageW                     = modkernel32.NewProc("FormatMessageW")
-       procExitProcess                        = modkernel32.NewProc("ExitProcess")
-       procCreateFileW                        = modkernel32.NewProc("CreateFileW")
-       procReadFile                           = modkernel32.NewProc("ReadFile")
-       procWriteFile                          = modkernel32.NewProc("WriteFile")
-       procSetFilePointer                     = modkernel32.NewProc("SetFilePointer")
+       procConvertSidToStringSidW             = modadvapi32.NewProc("ConvertSidToStringSidW")
+       procConvertStringSidToSidW             = modadvapi32.NewProc("ConvertStringSidToSidW")
+       procCopySid                            = modadvapi32.NewProc("CopySid")
+       procCreateProcessAsUserW               = modadvapi32.NewProc("CreateProcessAsUserW")
+       procCryptAcquireContextW               = modadvapi32.NewProc("CryptAcquireContextW")
+       procCryptGenRandom                     = modadvapi32.NewProc("CryptGenRandom")
+       procCryptReleaseContext                = modadvapi32.NewProc("CryptReleaseContext")
+       procGetLengthSid                       = modadvapi32.NewProc("GetLengthSid")
+       procGetTokenInformation                = modadvapi32.NewProc("GetTokenInformation")
+       procLookupAccountNameW                 = modadvapi32.NewProc("LookupAccountNameW")
+       procLookupAccountSidW                  = modadvapi32.NewProc("LookupAccountSidW")
+       procOpenProcessToken                   = modadvapi32.NewProc("OpenProcessToken")
+       procRegCloseKey                        = modadvapi32.NewProc("RegCloseKey")
+       procRegEnumKeyExW                      = modadvapi32.NewProc("RegEnumKeyExW")
+       procRegOpenKeyExW                      = modadvapi32.NewProc("RegOpenKeyExW")
+       procRegQueryInfoKeyW                   = modadvapi32.NewProc("RegQueryInfoKeyW")
+       procRegQueryValueExW                   = modadvapi32.NewProc("RegQueryValueExW")
+       procSystemFunction036                  = modadvapi32.NewProc("SystemFunction036")
+       procCertAddCertificateContextToStore   = modcrypt32.NewProc("CertAddCertificateContextToStore")
+       procCertCloseStore                     = modcrypt32.NewProc("CertCloseStore")
+       procCertCreateCertificateContext       = modcrypt32.NewProc("CertCreateCertificateContext")
+       procCertEnumCertificatesInStore        = modcrypt32.NewProc("CertEnumCertificatesInStore")
+       procCertFreeCertificateChain           = modcrypt32.NewProc("CertFreeCertificateChain")
+       procCertFreeCertificateContext         = modcrypt32.NewProc("CertFreeCertificateContext")
+       procCertGetCertificateChain            = modcrypt32.NewProc("CertGetCertificateChain")
+       procCertOpenStore                      = modcrypt32.NewProc("CertOpenStore")
+       procCertOpenSystemStoreW               = modcrypt32.NewProc("CertOpenSystemStoreW")
+       procCertVerifyCertificateChainPolicy   = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
+       procDnsNameCompare_W                   = moddnsapi.NewProc("DnsNameCompare_W")
+       procDnsQuery_W                         = moddnsapi.NewProc("DnsQuery_W")
+       procDnsRecordListFree                  = moddnsapi.NewProc("DnsRecordListFree")
+       procGetAdaptersInfo                    = modiphlpapi.NewProc("GetAdaptersInfo")
+       procGetIfEntry                         = modiphlpapi.NewProc("GetIfEntry")
+       procCancelIo                           = modkernel32.NewProc("CancelIo")
+       procCancelIoEx                         = modkernel32.NewProc("CancelIoEx")
        procCloseHandle                        = modkernel32.NewProc("CloseHandle")
-       procGetStdHandle                       = modkernel32.NewProc("GetStdHandle")
-       procFindFirstFileW                     = modkernel32.NewProc("FindFirstFileW")
-       procFindNextFileW                      = modkernel32.NewProc("FindNextFileW")
-       procFindClose                          = modkernel32.NewProc("FindClose")
-       procGetFileInformationByHandle         = modkernel32.NewProc("GetFileInformationByHandle")
-       procGetCurrentDirectoryW               = modkernel32.NewProc("GetCurrentDirectoryW")
-       procSetCurrentDirectoryW               = modkernel32.NewProc("SetCurrentDirectoryW")
        procCreateDirectoryW                   = modkernel32.NewProc("CreateDirectoryW")
-       procRemoveDirectoryW                   = modkernel32.NewProc("RemoveDirectoryW")
-       procDeleteFileW                        = modkernel32.NewProc("DeleteFileW")
-       procMoveFileW                          = modkernel32.NewProc("MoveFileW")
-       procGetComputerNameW                   = modkernel32.NewProc("GetComputerNameW")
-       procSetEndOfFile                       = modkernel32.NewProc("SetEndOfFile")
-       procGetSystemTimeAsFileTime            = modkernel32.NewProc("GetSystemTimeAsFileTime")
-       procGetTimeZoneInformation             = modkernel32.NewProc("GetTimeZoneInformation")
+       procCreateFileMappingW                 = modkernel32.NewProc("CreateFileMappingW")
+       procCreateFileW                        = modkernel32.NewProc("CreateFileW")
+       procCreateHardLinkW                    = modkernel32.NewProc("CreateHardLinkW")
        procCreateIoCompletionPort             = modkernel32.NewProc("CreateIoCompletionPort")
-       procGetQueuedCompletionStatus          = modkernel32.NewProc("GetQueuedCompletionStatus")
-       procPostQueuedCompletionStatus         = modkernel32.NewProc("PostQueuedCompletionStatus")
-       procCancelIo                           = modkernel32.NewProc("CancelIo")
-       procCancelIoEx                         = modkernel32.NewProc("CancelIoEx")
+       procCreatePipe                         = modkernel32.NewProc("CreatePipe")
        procCreateProcessW                     = modkernel32.NewProc("CreateProcessW")
-       procCreateProcessAsUserW               = modadvapi32.NewProc("CreateProcessAsUserW")
-       procOpenProcess                        = modkernel32.NewProc("OpenProcess")
-       procTerminateProcess                   = modkernel32.NewProc("TerminateProcess")
-       procGetExitCodeProcess                 = modkernel32.NewProc("GetExitCodeProcess")
-       procGetStartupInfoW                    = modkernel32.NewProc("GetStartupInfoW")
-       procGetCurrentProcess                  = modkernel32.NewProc("GetCurrentProcess")
-       procGetProcessTimes                    = modkernel32.NewProc("GetProcessTimes")
+       procCreateSymbolicLinkW                = modkernel32.NewProc("CreateSymbolicLinkW")
+       procCreateToolhelp32Snapshot           = modkernel32.NewProc("CreateToolhelp32Snapshot")
+       procDeleteFileW                        = modkernel32.NewProc("DeleteFileW")
+       procDeviceIoControl                    = modkernel32.NewProc("DeviceIoControl")
        procDuplicateHandle                    = modkernel32.NewProc("DuplicateHandle")
-       procWaitForSingleObject                = modkernel32.NewProc("WaitForSingleObject")
-       procGetTempPathW                       = modkernel32.NewProc("GetTempPathW")
-       procCreatePipe                         = modkernel32.NewProc("CreatePipe")
-       procGetFileType                        = modkernel32.NewProc("GetFileType")
-       procCryptAcquireContextW               = modadvapi32.NewProc("CryptAcquireContextW")
-       procCryptReleaseContext                = modadvapi32.NewProc("CryptReleaseContext")
-       procCryptGenRandom                     = modadvapi32.NewProc("CryptGenRandom")
-       procSystemFunction036                  = modadvapi32.NewProc("SystemFunction036")
-       procGetEnvironmentStringsW             = modkernel32.NewProc("GetEnvironmentStringsW")
+       procExitProcess                        = modkernel32.NewProc("ExitProcess")
+       procFindClose                          = modkernel32.NewProc("FindClose")
+       procFindFirstFileW                     = modkernel32.NewProc("FindFirstFileW")
+       procFindNextFileW                      = modkernel32.NewProc("FindNextFileW")
+       procFlushFileBuffers                   = modkernel32.NewProc("FlushFileBuffers")
+       procFlushViewOfFile                    = modkernel32.NewProc("FlushViewOfFile")
+       procFormatMessageW                     = modkernel32.NewProc("FormatMessageW")
        procFreeEnvironmentStringsW            = modkernel32.NewProc("FreeEnvironmentStringsW")
+       procFreeLibrary                        = modkernel32.NewProc("FreeLibrary")
+       procGetCommandLineW                    = modkernel32.NewProc("GetCommandLineW")
+       procGetComputerNameW                   = modkernel32.NewProc("GetComputerNameW")
+       procGetConsoleMode                     = modkernel32.NewProc("GetConsoleMode")
+       procGetCurrentDirectoryW               = modkernel32.NewProc("GetCurrentDirectoryW")
+       procGetCurrentProcess                  = modkernel32.NewProc("GetCurrentProcess")
+       procGetCurrentProcessId                = modkernel32.NewProc("GetCurrentProcessId")
+       procGetEnvironmentStringsW             = modkernel32.NewProc("GetEnvironmentStringsW")
        procGetEnvironmentVariableW            = modkernel32.NewProc("GetEnvironmentVariableW")
-       procSetEnvironmentVariableW            = modkernel32.NewProc("SetEnvironmentVariableW")
-       procSetFileTime                        = modkernel32.NewProc("SetFileTime")
-       procGetFileAttributesW                 = modkernel32.NewProc("GetFileAttributesW")
-       procSetFileAttributesW                 = modkernel32.NewProc("SetFileAttributesW")
+       procGetExitCodeProcess                 = modkernel32.NewProc("GetExitCodeProcess")
        procGetFileAttributesExW               = modkernel32.NewProc("GetFileAttributesExW")
-       procGetCommandLineW                    = modkernel32.NewProc("GetCommandLineW")
-       procCommandLineToArgvW                 = modshell32.NewProc("CommandLineToArgvW")
-       procLocalFree                          = modkernel32.NewProc("LocalFree")
-       procSetHandleInformation               = modkernel32.NewProc("SetHandleInformation")
-       procFlushFileBuffers                   = modkernel32.NewProc("FlushFileBuffers")
+       procGetFileAttributesW                 = modkernel32.NewProc("GetFileAttributesW")
+       procGetFileInformationByHandle         = modkernel32.NewProc("GetFileInformationByHandle")
+       procGetFileType                        = modkernel32.NewProc("GetFileType")
        procGetFullPathNameW                   = modkernel32.NewProc("GetFullPathNameW")
+       procGetLastError                       = modkernel32.NewProc("GetLastError")
        procGetLongPathNameW                   = modkernel32.NewProc("GetLongPathNameW")
+       procGetProcAddress                     = modkernel32.NewProc("GetProcAddress")
+       procGetProcessTimes                    = modkernel32.NewProc("GetProcessTimes")
+       procGetQueuedCompletionStatus          = modkernel32.NewProc("GetQueuedCompletionStatus")
        procGetShortPathNameW                  = modkernel32.NewProc("GetShortPathNameW")
-       procCreateFileMappingW                 = modkernel32.NewProc("CreateFileMappingW")
+       procGetStartupInfoW                    = modkernel32.NewProc("GetStartupInfoW")
+       procGetStdHandle                       = modkernel32.NewProc("GetStdHandle")
+       procGetSystemDirectoryW                = modkernel32.NewProc("GetSystemDirectoryW")
+       procGetSystemTimeAsFileTime            = modkernel32.NewProc("GetSystemTimeAsFileTime")
+       procGetTempPathW                       = modkernel32.NewProc("GetTempPathW")
+       procGetTimeZoneInformation             = modkernel32.NewProc("GetTimeZoneInformation")
+       procGetVersion                         = modkernel32.NewProc("GetVersion")
+       procLoadLibraryW                       = modkernel32.NewProc("LoadLibraryW")
+       procLocalFree                          = modkernel32.NewProc("LocalFree")
        procMapViewOfFile                      = modkernel32.NewProc("MapViewOfFile")
+       procMoveFileW                          = modkernel32.NewProc("MoveFileW")
+       procOpenProcess                        = modkernel32.NewProc("OpenProcess")
+       procPostQueuedCompletionStatus         = modkernel32.NewProc("PostQueuedCompletionStatus")
+       procProcess32FirstW                    = modkernel32.NewProc("Process32FirstW")
+       procProcess32NextW                     = modkernel32.NewProc("Process32NextW")
+       procReadConsoleW                       = modkernel32.NewProc("ReadConsoleW")
+       procReadDirectoryChangesW              = modkernel32.NewProc("ReadDirectoryChangesW")
+       procReadFile                           = modkernel32.NewProc("ReadFile")
+       procRemoveDirectoryW                   = modkernel32.NewProc("RemoveDirectoryW")
+       procSetCurrentDirectoryW               = modkernel32.NewProc("SetCurrentDirectoryW")
+       procSetEndOfFile                       = modkernel32.NewProc("SetEndOfFile")
+       procSetEnvironmentVariableW            = modkernel32.NewProc("SetEnvironmentVariableW")
+       procSetFileAttributesW                 = modkernel32.NewProc("SetFileAttributesW")
+       procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes")
+       procSetFilePointer                     = modkernel32.NewProc("SetFilePointer")
+       procSetFileTime                        = modkernel32.NewProc("SetFileTime")
+       procSetHandleInformation               = modkernel32.NewProc("SetHandleInformation")
+       procTerminateProcess                   = modkernel32.NewProc("TerminateProcess")
        procUnmapViewOfFile                    = modkernel32.NewProc("UnmapViewOfFile")
-       procFlushViewOfFile                    = modkernel32.NewProc("FlushViewOfFile")
        procVirtualLock                        = modkernel32.NewProc("VirtualLock")
        procVirtualUnlock                      = modkernel32.NewProc("VirtualUnlock")
-       procTransmitFile                       = modmswsock.NewProc("TransmitFile")
-       procReadDirectoryChangesW              = modkernel32.NewProc("ReadDirectoryChangesW")
-       procCertOpenSystemStoreW               = modcrypt32.NewProc("CertOpenSystemStoreW")
-       procCertOpenStore                      = modcrypt32.NewProc("CertOpenStore")
-       procCertEnumCertificatesInStore        = modcrypt32.NewProc("CertEnumCertificatesInStore")
-       procCertAddCertificateContextToStore   = modcrypt32.NewProc("CertAddCertificateContextToStore")
-       procCertCloseStore                     = modcrypt32.NewProc("CertCloseStore")
-       procCertGetCertificateChain            = modcrypt32.NewProc("CertGetCertificateChain")
-       procCertFreeCertificateChain           = modcrypt32.NewProc("CertFreeCertificateChain")
-       procCertCreateCertificateContext       = modcrypt32.NewProc("CertCreateCertificateContext")
-       procCertFreeCertificateContext         = modcrypt32.NewProc("CertFreeCertificateContext")
-       procCertVerifyCertificateChainPolicy   = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
-       procRegOpenKeyExW                      = modadvapi32.NewProc("RegOpenKeyExW")
-       procRegCloseKey                        = modadvapi32.NewProc("RegCloseKey")
-       procRegQueryInfoKeyW                   = modadvapi32.NewProc("RegQueryInfoKeyW")
-       procRegEnumKeyExW                      = modadvapi32.NewProc("RegEnumKeyExW")
-       procRegQueryValueExW                   = modadvapi32.NewProc("RegQueryValueExW")
-       procGetCurrentProcessId                = modkernel32.NewProc("GetCurrentProcessId")
-       procGetConsoleMode                     = modkernel32.NewProc("GetConsoleMode")
+       procWaitForSingleObject                = modkernel32.NewProc("WaitForSingleObject")
        procWriteConsoleW                      = modkernel32.NewProc("WriteConsoleW")
-       procReadConsoleW                       = modkernel32.NewProc("ReadConsoleW")
-       procCreateToolhelp32Snapshot           = modkernel32.NewProc("CreateToolhelp32Snapshot")
-       procProcess32FirstW                    = modkernel32.NewProc("Process32FirstW")
-       procProcess32NextW                     = modkernel32.NewProc("Process32NextW")
-       procDeviceIoControl                    = modkernel32.NewProc("DeviceIoControl")
-       procCreateSymbolicLinkW                = modkernel32.NewProc("CreateSymbolicLinkW")
-       procCreateHardLinkW                    = modkernel32.NewProc("CreateHardLinkW")
-       procWSAStartup                         = modws2_32.NewProc("WSAStartup")
-       procWSACleanup                         = modws2_32.NewProc("WSACleanup")
-       procWSAIoctl                           = modws2_32.NewProc("WSAIoctl")
-       procsocket                             = modws2_32.NewProc("socket")
-       procsetsockopt                         = modws2_32.NewProc("setsockopt")
-       procgetsockopt                         = modws2_32.NewProc("getsockopt")
-       procbind                               = modws2_32.NewProc("bind")
-       procconnect                            = modws2_32.NewProc("connect")
-       procgetsockname                        = modws2_32.NewProc("getsockname")
-       procgetpeername                        = modws2_32.NewProc("getpeername")
-       proclisten                             = modws2_32.NewProc("listen")
-       procshutdown                           = modws2_32.NewProc("shutdown")
-       procclosesocket                        = modws2_32.NewProc("closesocket")
+       procWriteFile                          = modkernel32.NewProc("WriteFile")
        procAcceptEx                           = modmswsock.NewProc("AcceptEx")
        procGetAcceptExSockaddrs               = modmswsock.NewProc("GetAcceptExSockaddrs")
+       procTransmitFile                       = modmswsock.NewProc("TransmitFile")
+       procNetApiBufferFree                   = modnetapi32.NewProc("NetApiBufferFree")
+       procNetGetJoinInformation              = modnetapi32.NewProc("NetGetJoinInformation")
+       procNetUserGetInfo                     = modnetapi32.NewProc("NetUserGetInfo")
+       procGetUserNameExW                     = modsecur32.NewProc("GetUserNameExW")
+       procTranslateNameW                     = modsecur32.NewProc("TranslateNameW")
+       procCommandLineToArgvW                 = modshell32.NewProc("CommandLineToArgvW")
+       procGetUserProfileDirectoryW           = moduserenv.NewProc("GetUserProfileDirectoryW")
+       procFreeAddrInfoW                      = modws2_32.NewProc("FreeAddrInfoW")
+       procGetAddrInfoW                       = modws2_32.NewProc("GetAddrInfoW")
+       procWSACleanup                         = modws2_32.NewProc("WSACleanup")
+       procWSAEnumProtocolsW                  = modws2_32.NewProc("WSAEnumProtocolsW")
+       procWSAIoctl                           = modws2_32.NewProc("WSAIoctl")
        procWSARecv                            = modws2_32.NewProc("WSARecv")
-       procWSASend                            = modws2_32.NewProc("WSASend")
        procWSARecvFrom                        = modws2_32.NewProc("WSARecvFrom")
+       procWSASend                            = modws2_32.NewProc("WSASend")
        procWSASendTo                          = modws2_32.NewProc("WSASendTo")
+       procWSAStartup                         = modws2_32.NewProc("WSAStartup")
+       procbind                               = modws2_32.NewProc("bind")
+       procclosesocket                        = modws2_32.NewProc("closesocket")
+       procconnect                            = modws2_32.NewProc("connect")
        procgethostbyname                      = modws2_32.NewProc("gethostbyname")
+       procgetpeername                        = modws2_32.NewProc("getpeername")
+       procgetprotobyname                     = modws2_32.NewProc("getprotobyname")
        procgetservbyname                      = modws2_32.NewProc("getservbyname")
+       procgetsockname                        = modws2_32.NewProc("getsockname")
+       procgetsockopt                         = modws2_32.NewProc("getsockopt")
+       proclisten                             = modws2_32.NewProc("listen")
        procntohs                              = modws2_32.NewProc("ntohs")
-       procgetprotobyname                     = modws2_32.NewProc("getprotobyname")
-       procDnsQuery_W                         = moddnsapi.NewProc("DnsQuery_W")
-       procDnsRecordListFree                  = moddnsapi.NewProc("DnsRecordListFree")
-       procDnsNameCompare_W                   = moddnsapi.NewProc("DnsNameCompare_W")
-       procGetAddrInfoW                       = modws2_32.NewProc("GetAddrInfoW")
-       procFreeAddrInfoW                      = modws2_32.NewProc("FreeAddrInfoW")
-       procGetIfEntry                         = modiphlpapi.NewProc("GetIfEntry")
-       procGetAdaptersInfo                    = modiphlpapi.NewProc("GetAdaptersInfo")
-       procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes")
-       procWSAEnumProtocolsW                  = modws2_32.NewProc("WSAEnumProtocolsW")
-       procTranslateNameW                     = modsecur32.NewProc("TranslateNameW")
-       procGetUserNameExW                     = modsecur32.NewProc("GetUserNameExW")
-       procNetUserGetInfo                     = modnetapi32.NewProc("NetUserGetInfo")
-       procNetGetJoinInformation              = modnetapi32.NewProc("NetGetJoinInformation")
-       procNetApiBufferFree                   = modnetapi32.NewProc("NetApiBufferFree")
-       procLookupAccountSidW                  = modadvapi32.NewProc("LookupAccountSidW")
-       procLookupAccountNameW                 = modadvapi32.NewProc("LookupAccountNameW")
-       procConvertSidToStringSidW             = modadvapi32.NewProc("ConvertSidToStringSidW")
-       procConvertStringSidToSidW             = modadvapi32.NewProc("ConvertStringSidToSidW")
-       procGetLengthSid                       = modadvapi32.NewProc("GetLengthSid")
-       procCopySid                            = modadvapi32.NewProc("CopySid")
-       procOpenProcessToken                   = modadvapi32.NewProc("OpenProcessToken")
-       procGetTokenInformation                = modadvapi32.NewProc("GetTokenInformation")
-       procGetUserProfileDirectoryW           = moduserenv.NewProc("GetUserProfileDirectoryW")
-       procGetSystemDirectoryW                = modkernel32.NewProc("GetSystemDirectoryW")
+       procsetsockopt                         = modws2_32.NewProc("setsockopt")
+       procshutdown                           = modws2_32.NewProc("shutdown")
+       procsocket                             = modws2_32.NewProc("socket")
 )
 
-func GetLastError() (lasterr error) {
-       r0, _, _ := Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
+func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {
+       r1, _, e1 := Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {
+       r1, _, e1 := Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {
+       r1, _, e1 := Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
+       var _p0 uint32
+       if inheritHandles {
+               _p0 = 1
+       }
+       r1, _, e1 := Syscall12(procCreateProcessAsUserW.Addr(), 11, uintptr(token), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {
+       r1, _, e1 := Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {
+       r1, _, e1 := Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func CryptReleaseContext(provhandle Handle, flags uint32) (err error) {
+       r1, _, e1 := Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func GetLengthSid(sid *SID) (len uint32) {
+       r0, _, _ := Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
+       len = uint32(r0)
+       return
+}
+
+func GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {
+       r1, _, e1 := Syscall6(procGetTokenInformation.Addr(), 5, uintptr(t), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
+       r1, _, e1 := Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
+       r1, _, e1 := Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func OpenProcessToken(h Handle, access uint32, token *Token) (err error) {
+       r1, _, e1 := Syscall(procOpenProcessToken.Addr(), 3, uintptr(h), uintptr(access), uintptr(unsafe.Pointer(token)))
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func RegCloseKey(key Handle) (regerrno error) {
+       r0, _, _ := Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0)
        if r0 != 0 {
-               lasterr = Errno(r0)
+               regerrno = Errno(r0)
        }
        return
 }
 
-func LoadLibrary(libname string) (handle Handle, err error) {
-       var _p0 *uint16
-       _p0, err = UTF16PtrFromString(libname)
-       if err != nil {
-               return
+func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {
+       r0, _, _ := Syscall9(procRegEnumKeyExW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)), 0)
+       if r0 != 0 {
+               regerrno = Errno(r0)
        }
-       return _LoadLibrary(_p0)
+       return
 }
 
-func _LoadLibrary(libname *uint16) (handle Handle, err error) {
-       r0, _, e1 := Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0)
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {
+       r0, _, _ := Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0)
+       if r0 != 0 {
+               regerrno = Errno(r0)
        }
        return
 }
 
-func FreeLibrary(handle Handle) (err error) {
-       r1, _, e1 := Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0)
+func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) {
+       r0, _, _ := Syscall12(procRegQueryInfoKeyW.Addr(), 12, uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime)))
+       if r0 != 0 {
+               regerrno = Errno(r0)
+       }
+       return
+}
+
+func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
+       r0, _, _ := Syscall6(procRegQueryValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)))
+       if r0 != 0 {
+               regerrno = Errno(r0)
+       }
+       return
+}
+
+func RtlGenRandom(buf *uint8, bytes uint32) (err error) {
+       r1, _, e1 := Syscall(procSystemFunction036.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(bytes), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetProcAddress(module Handle, procname string) (proc uintptr, err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(procname)
-       if err != nil {
-               return
+func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {
+       r1, _, e1 := Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
-       return _GetProcAddress(module, _p0)
+       return
 }
 
-func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {
-       r0, _, e1 := Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0)
-       proc = uintptr(r0)
-       if proc == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func CertCloseStore(store Handle, flags uint32) (err error) {
+       r1, _, e1 := Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetVersion() (ver uint32, err error) {
-       r0, _, e1 := Syscall(procGetVersion.Addr(), 0, 0, 0, 0)
-       ver = uint32(r0)
-       if ver == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {
+       r0, _, e1 := Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))
+       context = (*CertContext)(unsafe.Pointer(r0))
+       if context == nil {
+               err = errnoErr(e1)
        }
        return
 }
 
-func formatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {
-       var _p0 *uint16
-       if len(buf) > 0 {
-               _p0 = &buf[0]
+func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {
+       r0, _, e1 := Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)
+       context = (*CertContext)(unsafe.Pointer(r0))
+       if context == nil {
+               err = errnoErr(e1)
        }
-       r0, _, e1 := Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+       return
+}
+
+func CertFreeCertificateChain(ctx *CertChainContext) {
+       Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
+       return
+}
+
+func CertFreeCertificateContext(ctx *CertContext) (err error) {
+       r1, _, e1 := Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func ExitProcess(exitcode uint32) {
-       Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0)
+func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {
+       r1, _, e1 := Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) {
-       r0, _, e1 := Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0)
+func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
+       r0, _, e1 := Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
        handle = Handle(r0)
        if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
-       var _p0 *byte
-       if len(buf) > 0 {
-               _p0 = &buf[0]
+func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {
+       r0, _, e1 := Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0)
+       store = Handle(r0)
+       if store == 0 {
+               err = errnoErr(e1)
        }
-       r1, _, e1 := Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
+       return
+}
+
+func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {
+       r1, _, e1 := Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
-       var _p0 *byte
-       if len(buf) > 0 {
-               _p0 = &buf[0]
+func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {
+       r0, _, _ := Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)
+       same = r0 != 0
+       return
+}
+
+func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
+       var _p0 *uint16
+       _p0, status = UTF16PtrFromString(name)
+       if status != nil {
+               return
        }
-       r1, _, e1 := Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
+       return _DnsQuery(_p0, qtype, options, extra, qrs, pr)
+}
+
+func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
+       r0, _, _ := Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr)))
+       if r0 != 0 {
+               status = Errno(r0)
+       }
+       return
+}
+
+func DnsRecordListFree(rl *DNSRecord, freetype uint32) {
+       Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0)
+       return
+}
+
+func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {
+       r0, _, _ := Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0)
+       if r0 != 0 {
+               errcode = Errno(r0)
+       }
+       return
+}
+
+func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
+       r0, _, _ := Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
+       if r0 != 0 {
+               errcode = Errno(r0)
+       }
+       return
+}
+
+func CancelIo(s Handle) (err error) {
+       r1, _, e1 := Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {
-       r0, _, e1 := Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0)
-       newlowoffset = uint32(r0)
-       if newlowoffset == 0xffffffff {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func CancelIoEx(s Handle, o *Overlapped) (err error) {
+       r1, _, e1 := Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
@@ -354,122 +485,87 @@ func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence
 func CloseHandle(handle Handle) (err error) {
        r1, _, e1 := Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetStdHandle(stdhandle int) (handle Handle, err error) {
-       r0, _, e1 := Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0)
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {
+       r1, _, e1 := Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
-       r0, _, e1 := Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
+func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {
+       r0, _, e1 := Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))
        handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func findNextFile1(handle Handle, data *win32finddata1) (err error) {
-       r1, _, e1 := Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) {
+       r0, _, e1 := Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0)
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               err = errnoErr(e1)
        }
        return
 }
 
-func FindClose(handle Handle) (err error) {
-       r1, _, e1 := Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {
+       r1, _, e1 := Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))
+       if r1&0xff == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {
-       r1, _, e1 := Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) {
+       r0, _, e1 := Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {
-       r0, _, e1 := Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {
+       r1, _, e1 := Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetCurrentDirectory(path *uint16) (err error) {
-       r1, _, e1 := Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
+func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
+       var _p0 uint32
+       if inheritHandles {
+               _p0 = 1
+       }
+       r1, _, e1 := Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {
-       r1, _, e1 := Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {
+       r1, _, e1 := Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))
+       if r1&0xff == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func RemoveDirectory(path *uint16) (err error) {
-       r1, _, e1 := Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {
+       r0, _, e1 := Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0)
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               err = errnoErr(e1)
        }
        return
 }
@@ -477,217 +573,133 @@ func RemoveDirectory(path *uint16) (err error) {
 func DeleteFile(path *uint16) (err error) {
        r1, _, e1 := Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func MoveFile(from *uint16, to *uint16) (err error) {
-       r1, _, e1 := Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0)
+func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {
+       r1, _, e1 := Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetComputerName(buf *uint16, n *uint32) (err error) {
-       r1, _, e1 := Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {
+       var _p0 uint32
+       if bInheritHandle {
+               _p0 = 1
        }
-       return
-}
-
-func SetEndOfFile(handle Handle) (err error) {
-       r1, _, e1 := Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0)
+       r1, _, e1 := Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetSystemTimeAsFileTime(time *Filetime) {
-       Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
+func ExitProcess(exitcode uint32) {
+       Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0)
        return
 }
 
-func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {
-       r0, _, e1 := Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0)
-       rc = uint32(r0)
-       if rc == 0xffffffff {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func FindClose(handle Handle) (err error) {
+       r1, _, e1 := Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) {
-       r0, _, e1 := Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0)
+func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
+       r0, _, e1 := Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
        handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+       if handle == InvalidHandle {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) {
-       r1, _, e1 := Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0)
+func findNextFile1(handle Handle, data *win32finddata1) (err error) {
+       r1, _, e1 := Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) {
-       r1, _, e1 := Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0)
+func FlushFileBuffers(handle Handle) (err error) {
+       r1, _, e1 := Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CancelIo(s Handle) (err error) {
-       r1, _, e1 := Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0)
+func FlushViewOfFile(addr uintptr, length uintptr) (err error) {
+       r1, _, e1 := Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CancelIoEx(s Handle, o *Overlapped) (err error) {
-       r1, _, e1 := Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func formatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {
+       var _p0 *uint16
+       if len(buf) > 0 {
+               _p0 = &buf[0]
+       }
+       r0, _, e1 := Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0)
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
-       var _p0 uint32
-       if inheritHandles {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0)
+func FreeEnvironmentStrings(envs *uint16) (err error) {
+       r1, _, e1 := Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
-       var _p0 uint32
-       if inheritHandles {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := Syscall12(procCreateProcessAsUserW.Addr(), 11, uintptr(token), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0)
+func FreeLibrary(handle Handle) (err error) {
+       r1, _, e1 := Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) {
-       var _p0 uint32
-       if inheritHandle {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r0, _, e1 := Syscall(procOpenProcess.Addr(), 3, uintptr(da), uintptr(_p0), uintptr(pid))
-       handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
-       }
+func GetCommandLine() (cmd *uint16) {
+       r0, _, _ := Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0)
+       cmd = (*uint16)(unsafe.Pointer(r0))
        return
 }
 
-func TerminateProcess(handle Handle, exitcode uint32) (err error) {
-       r1, _, e1 := Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0)
+func GetComputerName(buf *uint16, n *uint32) (err error) {
+       r1, _, e1 := Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {
-       r1, _, e1 := Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0)
+func GetConsoleMode(console Handle, mode *uint32) (err error) {
+       r1, _, e1 := Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetStartupInfo(startupInfo *StartupInfo) (err error) {
-       r1, _, e1 := Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {
+       r0, _, e1 := Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
@@ -696,347 +708,227 @@ func GetCurrentProcess() (pseudoHandle Handle, err error) {
        r0, _, e1 := Syscall(procGetCurrentProcess.Addr(), 0, 0, 0, 0)
        pseudoHandle = Handle(r0)
        if pseudoHandle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
-       }
-       return
-}
-
-func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {
-       r1, _, e1 := Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {
-       var _p0 uint32
-       if bInheritHandle {
-               _p0 = 1
-       } else {
-               _p0 = 0
-       }
-       r1, _, e1 := Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
-       }
+func getCurrentProcessId() (pid uint32) {
+       r0, _, _ := Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0)
+       pid = uint32(r0)
        return
 }
 
-func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {
-       r0, _, e1 := Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0)
-       event = uint32(r0)
-       if event == 0xffffffff {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetEnvironmentStrings() (envs *uint16, err error) {
+       r0, _, e1 := Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0)
+       envs = (*uint16)(unsafe.Pointer(r0))
+       if envs == nil {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {
-       r0, _, e1 := Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
+func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {
+       r0, _, e1 := Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))
        n = uint32(r0)
        if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {
-       r1, _, e1 := Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0)
+func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {
+       r1, _, e1 := Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
-       }
-       return
-}
-
-func GetFileType(filehandle Handle) (n uint32, err error) {
-       r0, _, e1 := Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {
-       r1, _, e1 := Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0)
+func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {
+       r1, _, e1 := Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CryptReleaseContext(provhandle Handle, flags uint32) (err error) {
-       r1, _, e1 := Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetFileAttributes(name *uint16) (attrs uint32, err error) {
+       r0, _, e1 := Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
+       attrs = uint32(r0)
+       if attrs == INVALID_FILE_ATTRIBUTES {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {
-       r1, _, e1 := Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))
+func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {
+       r1, _, e1 := Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func RtlGenRandom(buf *uint8, bytes uint32) (err error) {
-       r1, _, e1 := Syscall(procSystemFunction036.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(bytes), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetFileType(filehandle Handle) (n uint32, err error) {
+       r0, _, e1 := Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0)
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetEnvironmentStrings() (envs *uint16, err error) {
-       r0, _, e1 := Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0)
-       envs = (*uint16)(unsafe.Pointer(r0))
-       if envs == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {
+       r0, _, e1 := Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func FreeEnvironmentStrings(envs *uint16) (err error) {
-       r1, _, e1 := Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetLastError() (lasterr error) {
+       r0, _, _ := Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
+       if r0 != 0 {
+               lasterr = Errno(r0)
        }
        return
 }
 
-func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {
-       r0, _, e1 := Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))
+func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {
+       r0, _, e1 := Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))
        n = uint32(r0)
        if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetEnvironmentVariable(name *uint16, value *uint16) (err error) {
-       r1, _, e1 := Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetProcAddress(module Handle, procname string) (proc uintptr, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(procname)
+       if err != nil {
+               return
+       }
+       return _GetProcAddress(module, _p0)
+}
+
+func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {
+       r0, _, e1 := Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0)
+       proc = uintptr(r0)
+       if proc == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {
-       r1, _, e1 := Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0)
+func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {
+       r1, _, e1 := Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetFileAttributes(name *uint16) (attrs uint32, err error) {
-       r0, _, e1 := Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
-       attrs = uint32(r0)
-       if attrs == INVALID_FILE_ATTRIBUTES {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) {
+       r1, _, e1 := Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func SetFileAttributes(name *uint16, attrs uint32) (err error) {
-       r1, _, e1 := Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {
+       r0, _, e1 := Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {
-       r1, _, e1 := Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))
+func GetStartupInfo(startupInfo *StartupInfo) (err error) {
+       r1, _, e1 := Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetCommandLine() (cmd *uint16) {
-       r0, _, _ := Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0)
-       cmd = (*uint16)(unsafe.Pointer(r0))
+func GetStdHandle(stdhandle int) (handle Handle, err error) {
+       r0, _, e1 := Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0)
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
-       r0, _, e1 := Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
-       argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
-       if argv == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
+       r0, _, e1 := Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
+       len = uint32(r0)
+       if len == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func LocalFree(hmem Handle) (handle Handle, err error) {
-       r0, _, e1 := Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0)
-       handle = Handle(r0)
-       if handle != 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
-       }
+func GetSystemTimeAsFileTime(time *Filetime) {
+       Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
        return
 }
 
-func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {
-       r1, _, e1 := Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {
+       r0, _, e1 := Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
+       n = uint32(r0)
+       if n == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func FlushFileBuffers(handle Handle) (err error) {
-       r1, _, e1 := Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {
+       r0, _, e1 := Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0)
+       rc = uint32(r0)
+       if rc == 0xffffffff {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {
-       r0, _, e1 := Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetVersion() (ver uint32, err error) {
+       r0, _, e1 := Syscall(procGetVersion.Addr(), 0, 0, 0, 0)
+       ver = uint32(r0)
+       if ver == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {
-       r0, _, e1 := Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func LoadLibrary(libname string) (handle Handle, err error) {
+       var _p0 *uint16
+       _p0, err = UTF16PtrFromString(libname)
+       if err != nil {
+               return
        }
-       return
+       return _LoadLibrary(_p0)
 }
 
-func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {
-       r0, _, e1 := Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))
-       n = uint32(r0)
-       if n == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func _LoadLibrary(libname *uint16) (handle Handle, err error) {
+       r0, _, e1 := Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {
-       r0, _, e1 := Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))
+func LocalFree(hmem Handle) (handle Handle, err error) {
+       r0, _, e1 := Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0)
        handle = Handle(r0)
-       if handle == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+       if handle != 0 {
+               err = errnoErr(e1)
        }
        return
 }
@@ -1045,71 +937,60 @@ func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow ui
        r0, _, e1 := Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0)
        addr = uintptr(r0)
        if addr == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func UnmapViewOfFile(addr uintptr) (err error) {
-       r1, _, e1 := Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0)
+func MoveFile(from *uint16, to *uint16) (err error) {
+       r1, _, e1 := Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func FlushViewOfFile(addr uintptr, length uintptr) (err error) {
-       r1, _, e1 := Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0)
+func OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) {
+       var _p0 uint32
+       if inheritHandle {
+               _p0 = 1
+       }
+       r0, _, e1 := Syscall(procOpenProcess.Addr(), 3, uintptr(da), uintptr(_p0), uintptr(pid))
+       handle = Handle(r0)
+       if handle == 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) {
+       r1, _, e1 := Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func VirtualLock(addr uintptr, length uintptr) (err error) {
-       r1, _, e1 := Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0)
+func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {
+       r1, _, e1 := Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func VirtualUnlock(addr uintptr, length uintptr) (err error) {
-       r1, _, e1 := Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
+func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {
+       r1, _, e1 := Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {
-       r1, _, e1 := Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0)
+func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {
+       r1, _, e1 := Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
@@ -1118,506 +999,336 @@ func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree
        var _p0 uint32
        if watchSubTree {
                _p0 = 1
-       } else {
-               _p0 = 0
        }
        r1, _, e1 := Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {
-       r0, _, e1 := Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0)
-       store = Handle(r0)
-       if store == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
-       }
-       return
-}
-
-func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
-       r0, _, e1 := Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
+       var _p0 *byte
+       if len(buf) > 0 {
+               _p0 = &buf[0]
        }
-       return
-}
-
-func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {
-       r0, _, e1 := Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)
-       context = (*CertContext)(unsafe.Pointer(r0))
-       if context == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+       r1, _, e1 := Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {
-       r1, _, e1 := Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0)
+func RemoveDirectory(path *uint16) (err error) {
+       r1, _, e1 := Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertCloseStore(store Handle, flags uint32) (err error) {
-       r1, _, e1 := Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0)
+func SetCurrentDirectory(path *uint16) (err error) {
+       r1, _, e1 := Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {
-       r1, _, e1 := Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0)
+func SetEndOfFile(handle Handle) (err error) {
+       r1, _, e1 := Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertFreeCertificateChain(ctx *CertChainContext) {
-       Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
-       return
-}
-
-func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {
-       r0, _, e1 := Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))
-       context = (*CertContext)(unsafe.Pointer(r0))
-       if context == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func SetEnvironmentVariable(name *uint16, value *uint16) (err error) {
+       r1, _, e1 := Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertFreeCertificateContext(ctx *CertContext) (err error) {
-       r1, _, e1 := Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
+func SetFileAttributes(name *uint16, attrs uint32) (err error) {
+       r1, _, e1 := Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {
-       r1, _, e1 := Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0)
+func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {
+       r1, _, e1 := Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {
-       r0, _, _ := Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0)
-       if r0 != 0 {
-               regerrno = Errno(r0)
+func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {
+       r0, _, e1 := Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0)
+       newlowoffset = uint32(r0)
+       if newlowoffset == 0xffffffff {
+               err = errnoErr(e1)
        }
        return
 }
 
-func RegCloseKey(key Handle) (regerrno error) {
-       r0, _, _ := Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0)
-       if r0 != 0 {
-               regerrno = Errno(r0)
+func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {
+       r1, _, e1 := Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) {
-       r0, _, _ := Syscall12(procRegQueryInfoKeyW.Addr(), 12, uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime)))
-       if r0 != 0 {
-               regerrno = Errno(r0)
+func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {
+       r1, _, e1 := Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {
-       r0, _, _ := Syscall9(procRegEnumKeyExW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)), 0)
-       if r0 != 0 {
-               regerrno = Errno(r0)
+func TerminateProcess(handle Handle, exitcode uint32) (err error) {
+       r1, _, e1 := Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
-       r0, _, _ := Syscall6(procRegQueryValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)))
-       if r0 != 0 {
-               regerrno = Errno(r0)
+func UnmapViewOfFile(addr uintptr) (err error) {
+       r1, _, e1 := Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func getCurrentProcessId() (pid uint32) {
-       r0, _, _ := Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0)
-       pid = uint32(r0)
-       return
-}
-
-func GetConsoleMode(console Handle, mode *uint32) (err error) {
-       r1, _, e1 := Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0)
+func VirtualLock(addr uintptr, length uintptr) (err error) {
+       r1, _, e1 := Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {
-       r1, _, e1 := Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0)
+func VirtualUnlock(addr uintptr, length uintptr) (err error) {
+       r1, _, e1 := Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {
-       r1, _, e1 := Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {
+       r0, _, e1 := Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0)
+       event = uint32(r0)
+       if event == 0xffffffff {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {
-       r0, _, e1 := Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0)
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {
+       r1, _, e1 := Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {
-       r1, _, e1 := Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
+func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
+       var _p0 *byte
+       if len(buf) > 0 {
+               _p0 = &buf[0]
+       }
+       r1, _, e1 := Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {
-       r1, _, e1 := Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
+func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
+       r1, _, e1 := Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0)
        if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {
-       r1, _, e1 := Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
-       }
+func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {
+       Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0)
        return
 }
 
-func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {
-       r1, _, e1 := Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))
-       if r1&0xff == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {
+       r1, _, e1 := Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0)
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {
-       r1, _, e1 := Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))
-       if r1&0xff == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func NetApiBufferFree(buf *byte) (neterr error) {
+       r0, _, _ := Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0)
+       if r0 != 0 {
+               neterr = Errno(r0)
        }
        return
 }
 
-func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
-       r0, _, _ := Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
+func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {
+       r0, _, _ := Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))
        if r0 != 0 {
-               sockerr = Errno(r0)
+               neterr = Errno(r0)
        }
        return
 }
 
-func WSACleanup() (err error) {
-       r1, _, e1 := Syscall(procWSACleanup.Addr(), 0, 0, 0, 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {
+       r0, _, _ := Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0)
+       if r0 != 0 {
+               neterr = Errno(r0)
        }
        return
 }
 
-func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
-       r1, _, e1 := Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {
+       r1, _, e1 := Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))
+       if r1&0xff == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func socket(af int32, typ int32, protocol int32) (handle Handle, err error) {
-       r0, _, e1 := Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol))
-       handle = Handle(r0)
-       if handle == InvalidHandle {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {
+       r1, _, e1 := Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0)
+       if r1&0xff == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {
-       r1, _, e1 := Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
+       r0, _, e1 := Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
+       argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
+       if argv == nil {
+               err = errnoErr(e1)
        }
        return
 }
 
-func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {
-       r1, _, e1 := Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
+       r1, _, e1 := Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))
+       if r1 == 0 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {
-       r1, _, e1 := Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
-       }
+func FreeAddrInfoW(addrinfo *AddrinfoW) {
+       Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
        return
 }
 
-func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {
-       r1, _, e1 := Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {
+       r0, _, _ := Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)
+       if r0 != 0 {
+               sockerr = Errno(r0)
        }
        return
 }
 
-func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
-       r1, _, e1 := Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+func WSACleanup() (err error) {
+       r1, _, e1 := Syscall(procWSACleanup.Addr(), 0, 0, 0, 0)
        if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
-       r1, _, e1 := Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {
+       r0, _, e1 := Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))
+       n = int32(r0)
+       if n == -1 {
+               err = errnoErr(e1)
        }
        return
 }
 
-func listen(s Handle, backlog int32) (err error) {
-       r1, _, e1 := Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0)
+func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
+       r1, _, e1 := Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))
        if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func shutdown(s Handle, how int32) (err error) {
-       r1, _, e1 := Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0)
+func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {
+       r1, _, e1 := Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
        if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func Closesocket(s Handle) (err error) {
-       r1, _, e1 := Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0)
+func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {
+       r1, _, e1 := Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
        if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
-       r1, _, e1 := Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {
+       r1, _, e1 := Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {
-       Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0)
+func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {
+       r1, _, e1 := Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
+       if r1 == socket_error {
+               err = errnoErr(e1)
+       }
        return
 }
 
-func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {
-       r1, _, e1 := Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
-       if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
+       r0, _, _ := Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
+       if r0 != 0 {
+               sockerr = Errno(r0)
        }
        return
 }
 
-func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {
-       r1, _, e1 := Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
+func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {
+       r1, _, e1 := Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
        if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {
-       r1, _, e1 := Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
+func Closesocket(s Handle) (err error) {
+       r1, _, e1 := Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0)
        if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {
-       r1, _, e1 := Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
+func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {
+       r1, _, e1 := Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
        if r1 == socket_error {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
@@ -1635,48 +1346,19 @@ func _GetHostByName(name *byte) (h *Hostent, err error) {
        r0, _, e1 := Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
        h = (*Hostent)(unsafe.Pointer(r0))
        if h == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetServByName(name string, proto string) (s *Servent, err error) {
-       var _p0 *byte
-       _p0, err = BytePtrFromString(name)
-       if err != nil {
-               return
-       }
-       var _p1 *byte
-       _p1, err = BytePtrFromString(proto)
-       if err != nil {
-               return
-       }
-       return _GetServByName(_p0, _p1)
-}
-
-func _GetServByName(name *byte, proto *byte) (s *Servent, err error) {
-       r0, _, e1 := Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0)
-       s = (*Servent)(unsafe.Pointer(r0))
-       if s == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
+       r1, _, e1 := Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func Ntohs(netshort uint16) (u uint16) {
-       r0, _, _ := Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0)
-       u = uint16(r0)
-       return
-}
-
 func GetProtoByName(name string) (p *Protoent, err error) {
        var _p0 *byte
        _p0, err = BytePtrFromString(name)
@@ -1690,256 +1372,85 @@ func _GetProtoByName(name *byte) (p *Protoent, err error) {
        r0, _, e1 := Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
        p = (*Protoent)(unsafe.Pointer(r0))
        if p == nil {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+               err = errnoErr(e1)
        }
        return
 }
 
-func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
-       var _p0 *uint16
-       _p0, status = UTF16PtrFromString(name)
-       if status != nil {
+func GetServByName(name string, proto string) (s *Servent, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
                return
        }
-       return _DnsQuery(_p0, qtype, options, extra, qrs, pr)
-}
-
-func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
-       r0, _, _ := Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr)))
-       if r0 != 0 {
-               status = Errno(r0)
-       }
-       return
-}
-
-func DnsRecordListFree(rl *DNSRecord, freetype uint32) {
-       Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0)
-       return
-}
-
-func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {
-       r0, _, _ := Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)
-       same = r0 != 0
-       return
-}
-
-func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {
-       r0, _, _ := Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)
-       if r0 != 0 {
-               sockerr = Errno(r0)
-       }
-       return
-}
-
-func FreeAddrInfoW(addrinfo *AddrinfoW) {
-       Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
-       return
-}
-
-func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
-       r0, _, _ := Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
-       if r0 != 0 {
-               errcode = Errno(r0)
-       }
-       return
-}
-
-func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {
-       r0, _, _ := Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0)
-       if r0 != 0 {
-               errcode = Errno(r0)
-       }
-       return
-}
-
-func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {
-       r1, _, e1 := Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
-       }
-       return
-}
-
-func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {
-       r0, _, e1 := Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))
-       n = int32(r0)
-       if n == -1 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
-       }
-       return
-}
-
-func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {
-       r1, _, e1 := Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0)
-       if r1&0xff == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
-       }
-       return
-}
-
-func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {
-       r1, _, e1 := Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))
-       if r1&0xff == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
-       }
-       return
-}
-
-func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {
-       r0, _, _ := Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0)
-       if r0 != 0 {
-               neterr = Errno(r0)
-       }
-       return
-}
-
-func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {
-       r0, _, _ := Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))
-       if r0 != 0 {
-               neterr = Errno(r0)
-       }
-       return
-}
-
-func NetApiBufferFree(buf *byte) (neterr error) {
-       r0, _, _ := Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0)
-       if r0 != 0 {
-               neterr = Errno(r0)
-       }
-       return
-}
-
-func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
-       r1, _, e1 := Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(proto)
+       if err != nil {
+               return
        }
-       return
+       return _GetServByName(_p0, _p1)
 }
 
-func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
-       r1, _, e1 := Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func _GetServByName(name *byte, proto *byte) (s *Servent, err error) {
+       r0, _, e1 := Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0)
+       s = (*Servent)(unsafe.Pointer(r0))
+       if s == nil {
+               err = errnoErr(e1)
        }
        return
 }
 
-func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {
-       r1, _, e1 := Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
+       r1, _, e1 := Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {
-       r1, _, e1 := Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {
+       r1, _, e1 := Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0)
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetLengthSid(sid *SID) (len uint32) {
-       r0, _, _ := Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
-       len = uint32(r0)
-       return
-}
-
-func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {
-       r1, _, e1 := Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func listen(s Handle, backlog int32) (err error) {
+       r1, _, e1 := Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0)
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func OpenProcessToken(h Handle, access uint32, token *Token) (err error) {
-       r1, _, e1 := Syscall(procOpenProcessToken.Addr(), 3, uintptr(h), uintptr(access), uintptr(unsafe.Pointer(token)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
-       }
+func Ntohs(netshort uint16) (u uint16) {
+       r0, _, _ := Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0)
+       u = uint16(r0)
        return
 }
 
-func GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {
-       r1, _, e1 := Syscall6(procGetTokenInformation.Addr(), 5, uintptr(t), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0)
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {
+       r1, _, e1 := Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0)
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
-       r1, _, e1 := Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))
-       if r1 == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func shutdown(s Handle, how int32) (err error) {
+       r1, _, e1 := Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0)
+       if r1 == socket_error {
+               err = errnoErr(e1)
        }
        return
 }
 
-func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {
-       r0, _, e1 := Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)
-       len = uint32(r0)
-       if len == 0 {
-               if e1 != 0 {
-                       err = errnoErr(e1)
-               } else {
-                       err = EINVAL
-               }
+func socket(af int32, typ int32, protocol int32) (handle Handle, err error) {
+       r0, _, e1 := Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol))
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               err = errnoErr(e1)
        }
        return
 }
index 5cce25ed9b6667c870ccd3dd3c15791afe81d64c..f77701fe86854828200db6d391769b50860fc195 100644 (file)
@@ -29,26 +29,46 @@ type CacheLinePad struct{ _ [cacheLineSize]byte }
 // and HasAVX2 are only set if the OS supports XMM and YMM
 // registers in addition to the CPUID feature bit being set.
 var X86 struct {
-       _            CacheLinePad
-       HasAES       bool // AES hardware implementation (AES NI)
-       HasADX       bool // Multi-precision add-carry instruction extensions
-       HasAVX       bool // Advanced vector extension
-       HasAVX2      bool // Advanced vector extension 2
-       HasBMI1      bool // Bit manipulation instruction set 1
-       HasBMI2      bool // Bit manipulation instruction set 2
-       HasERMS      bool // Enhanced REP for MOVSB and STOSB
-       HasFMA       bool // Fused-multiply-add instructions
-       HasOSXSAVE   bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers.
-       HasPCLMULQDQ bool // PCLMULQDQ instruction - most often used for AES-GCM
-       HasPOPCNT    bool // Hamming weight instruction POPCNT.
-       HasRDRAND    bool // RDRAND instruction (on-chip random number generator)
-       HasRDSEED    bool // RDSEED instruction (on-chip random number generator)
-       HasSSE2      bool // Streaming SIMD extension 2 (always available on amd64)
-       HasSSE3      bool // Streaming SIMD extension 3
-       HasSSSE3     bool // Supplemental streaming SIMD extension 3
-       HasSSE41     bool // Streaming SIMD extension 4 and 4.1
-       HasSSE42     bool // Streaming SIMD extension 4 and 4.2
-       _            CacheLinePad
+       _                   CacheLinePad
+       HasAES              bool // AES hardware implementation (AES NI)
+       HasADX              bool // Multi-precision add-carry instruction extensions
+       HasAVX              bool // Advanced vector extension
+       HasAVX2             bool // Advanced vector extension 2
+       HasAVX512           bool // Advanced vector extension 512
+       HasAVX512F          bool // Advanced vector extension 512 Foundation Instructions
+       HasAVX512CD         bool // Advanced vector extension 512 Conflict Detection Instructions
+       HasAVX512ER         bool // Advanced vector extension 512 Exponential and Reciprocal Instructions
+       HasAVX512PF         bool // Advanced vector extension 512 Prefetch Instructions Instructions
+       HasAVX512VL         bool // Advanced vector extension 512 Vector Length Extensions
+       HasAVX512BW         bool // Advanced vector extension 512 Byte and Word Instructions
+       HasAVX512DQ         bool // Advanced vector extension 512 Doubleword and Quadword Instructions
+       HasAVX512IFMA       bool // Advanced vector extension 512 Integer Fused Multiply Add
+       HasAVX512VBMI       bool // Advanced vector extension 512 Vector Byte Manipulation Instructions
+       HasAVX5124VNNIW     bool // Advanced vector extension 512 Vector Neural Network Instructions Word variable precision
+       HasAVX5124FMAPS     bool // Advanced vector extension 512 Fused Multiply Accumulation Packed Single precision
+       HasAVX512VPOPCNTDQ  bool // Advanced vector extension 512 Double and quad word population count instructions
+       HasAVX512VPCLMULQDQ bool // Advanced vector extension 512 Vector carry-less multiply operations
+       HasAVX512VNNI       bool // Advanced vector extension 512 Vector Neural Network Instructions
+       HasAVX512GFNI       bool // Advanced vector extension 512 Galois field New Instructions
+       HasAVX512VAES       bool // Advanced vector extension 512 Vector AES instructions
+       HasAVX512VBMI2      bool // Advanced vector extension 512 Vector Byte Manipulation Instructions 2
+       HasAVX512BITALG     bool // Advanced vector extension 512 Bit Algorithms
+       HasAVX512BF16       bool // Advanced vector extension 512 BFloat16 Instructions
+       HasBMI1             bool // Bit manipulation instruction set 1
+       HasBMI2             bool // Bit manipulation instruction set 2
+       HasERMS             bool // Enhanced REP for MOVSB and STOSB
+       HasFMA              bool // Fused-multiply-add instructions
+       HasOSXSAVE          bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers.
+       HasPCLMULQDQ        bool // PCLMULQDQ instruction - most often used for AES-GCM
+       HasPOPCNT           bool // Hamming weight instruction POPCNT.
+       HasRDRAND           bool // RDRAND instruction (on-chip random number generator)
+       HasRDSEED           bool // RDSEED instruction (on-chip random number generator)
+       HasSSE2             bool // Streaming SIMD extension 2 (always available on amd64)
+       HasSSE3             bool // Streaming SIMD extension 3
+       HasSSSE3            bool // Supplemental streaming SIMD extension 3
+       HasSSE41            bool // Streaming SIMD extension 4 and 4.1
+       HasSSE42            bool // Streaming SIMD extension 4 and 4.2
+       _                   CacheLinePad
 }
 
 // ARM64 contains the supported CPU features of the
index 951078f2e82e25bed31260e2b106a49319821707..87dd5e30215b16b13e7159b03f141c1911b45999 100644 (file)
@@ -39,31 +39,34 @@ func initOptions() {
 
 func archInit() {
        switch runtime.GOOS {
-       case "android", "darwin", "ios", "netbsd":
-               // Android and iOS don't seem to allow reading these registers.
-               //
-               // NetBSD:
-               // ID_AA64ISAR0_EL1 is a privileged register and cannot be read from EL0.
-               // It can be read via sysctl(3). Example for future implementers:
-               // https://nxr.netbsd.org/xref/src/usr.sbin/cpuctl/arch/aarch64.c
-               //
-               // Fake the minimal features expected by
-               // TestARM64minimalFeatures.
-               ARM64.HasASIMD = true
-               ARM64.HasFP = true
-       case "linux":
+       case "freebsd":
+               readARM64Registers()
+       case "linux", "netbsd":
                doinit()
        default:
-               readARM64Registers()
+               // Most platforms don't seem to allow reading these registers.
+               //
+               // OpenBSD:
+               // See https://golang.org/issue/31746
+               setMinimalFeatures()
        }
 }
 
+// setMinimalFeatures fakes the minimal ARM64 features expected by
+// TestARM64minimalFeatures.
+func setMinimalFeatures() {
+       ARM64.HasASIMD = true
+       ARM64.HasFP = true
+}
+
 func readARM64Registers() {
        Initialized = true
 
-       // ID_AA64ISAR0_EL1
-       isar0 := getisar0()
+       parseARM64SystemRegisters(getisar0(), getisar1(), getpfr0())
+}
 
+func parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) {
+       // ID_AA64ISAR0_EL1
        switch extractBits(isar0, 4, 7) {
        case 1:
                ARM64.HasAES = true
@@ -121,8 +124,6 @@ func readARM64Registers() {
        }
 
        // ID_AA64ISAR1_EL1
-       isar1 := getisar1()
-
        switch extractBits(isar1, 0, 3) {
        case 1:
                ARM64.HasDCPOP = true
@@ -144,8 +145,6 @@ func readARM64Registers() {
        }
 
        // ID_AA64PFR0_EL1
-       pfr0 := getpfr0()
-
        switch extractBits(pfr0, 16, 19) {
        case 0:
                ARM64.HasFP = true
index b88d6b8f662bd8d8968c64c5af1ae2cad5832ba6..1517ac61d31b5aef0d3e9d3d9df18ca199e4a580 100644 (file)
@@ -17,86 +17,7 @@ const (
        hwcap_VXE    = 8192
 )
 
-// bitIsSet reports whether the bit at index is set. The bit index
-// is in big endian order, so bit index 0 is the leftmost bit.
-func bitIsSet(bits []uint64, index uint) bool {
-       return bits[index/64]&((1<<63)>>(index%64)) != 0
-}
-
-// function is the code for the named cryptographic function.
-type function uint8
-
-const (
-       // KM{,A,C,CTR} function codes
-       aes128 function = 18 // AES-128
-       aes192 function = 19 // AES-192
-       aes256 function = 20 // AES-256
-
-       // K{I,L}MD function codes
-       sha1     function = 1  // SHA-1
-       sha256   function = 2  // SHA-256
-       sha512   function = 3  // SHA-512
-       sha3_224 function = 32 // SHA3-224
-       sha3_256 function = 33 // SHA3-256
-       sha3_384 function = 34 // SHA3-384
-       sha3_512 function = 35 // SHA3-512
-       shake128 function = 36 // SHAKE-128
-       shake256 function = 37 // SHAKE-256
-
-       // KLMD function codes
-       ghash function = 65 // GHASH
-)
-
-// queryResult contains the result of a Query function
-// call. Bits are numbered in big endian order so the
-// leftmost bit (the MSB) is at index 0.
-type queryResult struct {
-       bits [2]uint64
-}
-
-// Has reports whether the given functions are present.
-func (q *queryResult) Has(fns ...function) bool {
-       if len(fns) == 0 {
-               panic("no function codes provided")
-       }
-       for _, f := range fns {
-               if !bitIsSet(q.bits[:], uint(f)) {
-                       return false
-               }
-       }
-       return true
-}
-
-// facility is a bit index for the named facility.
-type facility uint8
-
-const (
-       // cryptography facilities
-       msa4 facility = 77  // message-security-assist extension 4
-       msa8 facility = 146 // message-security-assist extension 8
-)
-
-// facilityList contains the result of an STFLE call.
-// Bits are numbered in big endian order so the
-// leftmost bit (the MSB) is at index 0.
-type facilityList struct {
-       bits [4]uint64
-}
-
-// Has reports whether the given facilities are present.
-func (s *facilityList) Has(fs ...facility) bool {
-       if len(fs) == 0 {
-               panic("no facility bits provided")
-       }
-       for _, f := range fs {
-               if !bitIsSet(s.bits[:], uint(f)) {
-                       return false
-               }
-       }
-       return true
-}
-
-func doinit() {
+func initS390Xbase() {
        // test HWCAP bit vector
        has := func(featureMask uint) bool {
                return hwCap&featureMask == featureMask
@@ -116,44 +37,4 @@ func doinit() {
        if S390X.HasVX {
                S390X.HasVXE = has(hwcap_VXE)
        }
-
-       // We need implementations of stfle, km and so on
-       // to detect cryptographic features.
-       if !haveAsmFunctions() {
-               return
-       }
-
-       // optional cryptographic functions
-       if S390X.HasMSA {
-               aes := []function{aes128, aes192, aes256}
-
-               // cipher message
-               km, kmc := kmQuery(), kmcQuery()
-               S390X.HasAES = km.Has(aes...)
-               S390X.HasAESCBC = kmc.Has(aes...)
-               if S390X.HasSTFLE {
-                       facilities := stfle()
-                       if facilities.Has(msa4) {
-                               kmctr := kmctrQuery()
-                               S390X.HasAESCTR = kmctr.Has(aes...)
-                       }
-                       if facilities.Has(msa8) {
-                               kma := kmaQuery()
-                               S390X.HasAESGCM = kma.Has(aes...)
-                       }
-               }
-
-               // compute message digest
-               kimd := kimdQuery() // intermediate (no padding)
-               klmd := klmdQuery() // last (padding)
-               S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1)
-               S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256)
-               S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512)
-               S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist
-               sha3 := []function{
-                       sha3_224, sha3_256, sha3_384, sha3_512,
-                       shake128, shake256,
-               }
-               S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...)
-       }
 }
diff --git a/src/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go b/src/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go
new file mode 100644 (file)
index 0000000..ebfb3fc
--- /dev/null
@@ -0,0 +1,173 @@
+// Copyright 2020 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 cpu
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+// Minimal copy of functionality from x/sys/unix so the cpu package can call
+// sysctl without depending on x/sys/unix.
+
+const (
+       _CTL_QUERY = -2
+
+       _SYSCTL_VERS_1 = 0x1000000
+)
+
+var _zero uintptr
+
+func sysctl(mib []int32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+       var _p0 unsafe.Pointer
+       if len(mib) > 0 {
+               _p0 = unsafe.Pointer(&mib[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, errno := syscall.Syscall6(
+               syscall.SYS___SYSCTL,
+               uintptr(_p0),
+               uintptr(len(mib)),
+               uintptr(unsafe.Pointer(old)),
+               uintptr(unsafe.Pointer(oldlen)),
+               uintptr(unsafe.Pointer(new)),
+               uintptr(newlen))
+       if errno != 0 {
+               return errno
+       }
+       return nil
+}
+
+type sysctlNode struct {
+       Flags          uint32
+       Num            int32
+       Name           [32]int8
+       Ver            uint32
+       __rsvd         uint32
+       Un             [16]byte
+       _sysctl_size   [8]byte
+       _sysctl_func   [8]byte
+       _sysctl_parent [8]byte
+       _sysctl_desc   [8]byte
+}
+
+func sysctlNodes(mib []int32) ([]sysctlNode, error) {
+       var olen uintptr
+
+       // Get a list of all sysctl nodes below the given MIB by performing
+       // a sysctl for the given MIB with CTL_QUERY appended.
+       mib = append(mib, _CTL_QUERY)
+       qnode := sysctlNode{Flags: _SYSCTL_VERS_1}
+       qp := (*byte)(unsafe.Pointer(&qnode))
+       sz := unsafe.Sizeof(qnode)
+       if err := sysctl(mib, nil, &olen, qp, sz); err != nil {
+               return nil, err
+       }
+
+       // Now that we know the size, get the actual nodes.
+       nodes := make([]sysctlNode, olen/sz)
+       np := (*byte)(unsafe.Pointer(&nodes[0]))
+       if err := sysctl(mib, np, &olen, qp, sz); err != nil {
+               return nil, err
+       }
+
+       return nodes, nil
+}
+
+func nametomib(name string) ([]int32, error) {
+       // Split name into components.
+       var parts []string
+       last := 0
+       for i := 0; i < len(name); i++ {
+               if name[i] == '.' {
+                       parts = append(parts, name[last:i])
+                       last = i + 1
+               }
+       }
+       parts = append(parts, name[last:])
+
+       mib := []int32{}
+       // Discover the nodes and construct the MIB OID.
+       for partno, part := range parts {
+               nodes, err := sysctlNodes(mib)
+               if err != nil {
+                       return nil, err
+               }
+               for _, node := range nodes {
+                       n := make([]byte, 0)
+                       for i := range node.Name {
+                               if node.Name[i] != 0 {
+                                       n = append(n, byte(node.Name[i]))
+                               }
+                       }
+                       if string(n) == part {
+                               mib = append(mib, int32(node.Num))
+                               break
+                       }
+               }
+               if len(mib) != partno+1 {
+                       return nil, err
+               }
+       }
+
+       return mib, nil
+}
+
+// aarch64SysctlCPUID is struct aarch64_sysctl_cpu_id from NetBSD's <aarch64/armreg.h>
+type aarch64SysctlCPUID struct {
+       midr      uint64 /* Main ID Register */
+       revidr    uint64 /* Revision ID Register */
+       mpidr     uint64 /* Multiprocessor Affinity Register */
+       aa64dfr0  uint64 /* A64 Debug Feature Register 0 */
+       aa64dfr1  uint64 /* A64 Debug Feature Register 1 */
+       aa64isar0 uint64 /* A64 Instruction Set Attribute Register 0 */
+       aa64isar1 uint64 /* A64 Instruction Set Attribute Register 1 */
+       aa64mmfr0 uint64 /* A64 Memory Model Feature Register 0 */
+       aa64mmfr1 uint64 /* A64 Memory Model Feature Register 1 */
+       aa64mmfr2 uint64 /* A64 Memory Model Feature Register 2 */
+       aa64pfr0  uint64 /* A64 Processor Feature Register 0 */
+       aa64pfr1  uint64 /* A64 Processor Feature Register 1 */
+       aa64zfr0  uint64 /* A64 SVE Feature ID Register 0 */
+       mvfr0     uint32 /* Media and VFP Feature Register 0 */
+       mvfr1     uint32 /* Media and VFP Feature Register 1 */
+       mvfr2     uint32 /* Media and VFP Feature Register 2 */
+       pad       uint32
+       clidr     uint64 /* Cache Level ID Register */
+       ctr       uint64 /* Cache Type Register */
+}
+
+func sysctlCPUID(name string) (*aarch64SysctlCPUID, error) {
+       mib, err := nametomib(name)
+       if err != nil {
+               return nil, err
+       }
+
+       out := aarch64SysctlCPUID{}
+       n := unsafe.Sizeof(out)
+       _, _, errno := syscall.Syscall6(
+               syscall.SYS___SYSCTL,
+               uintptr(unsafe.Pointer(&mib[0])),
+               uintptr(len(mib)),
+               uintptr(unsafe.Pointer(&out)),
+               uintptr(unsafe.Pointer(&n)),
+               uintptr(0),
+               uintptr(0))
+       if errno != 0 {
+               return nil, errno
+       }
+       return &out, nil
+}
+
+func doinit() {
+       cpuid, err := sysctlCPUID("machdep.cpu0.cpu_id")
+       if err != nil {
+               setMinimalFeatures()
+               return
+       }
+       parseARM64SystemRegisters(cpuid.aa64isar0, cpuid.aa64isar1, cpuid.aa64pfr0)
+
+       Initialized = true
+}
index 3ffc4afa03ce2b25f53c3a1d7d75182adc17a2a1..16c1c4090ee2f1c7060d5d4d723c231fa6d2e6f2 100644 (file)
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !linux,arm64
+// +build !linux,!netbsd
+// +build arm64
 
 package cpu
 
diff --git a/src/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go b/src/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go
new file mode 100644 (file)
index 0000000..f49fad6
--- /dev/null
@@ -0,0 +1,12 @@
+// Copyright 2020 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.
+
+// +build !linux
+// +build mips64 mips64le
+
+package cpu
+
+func archInit() {
+       Initialized = true
+}
index 544cd621ceea46f37cbc384869e30f94addca6e9..5881b8833f5a5370d8d012796e49d995dbf54955 100644 (file)
@@ -8,10 +8,10 @@ const cacheLineSize = 256
 
 func initOptions() {
        options = []option{
-               {Name: "zarch", Feature: &S390X.HasZARCH},
-               {Name: "stfle", Feature: &S390X.HasSTFLE},
-               {Name: "ldisp", Feature: &S390X.HasLDISP},
-               {Name: "eimm", Feature: &S390X.HasEIMM},
+               {Name: "zarch", Feature: &S390X.HasZARCH, Required: true},
+               {Name: "stfle", Feature: &S390X.HasSTFLE, Required: true},
+               {Name: "ldisp", Feature: &S390X.HasLDISP, Required: true},
+               {Name: "eimm", Feature: &S390X.HasEIMM, Required: true},
                {Name: "dfp", Feature: &S390X.HasDFP},
                {Name: "etf3eh", Feature: &S390X.HasETF3EH},
                {Name: "msa", Feature: &S390X.HasMSA},
@@ -28,3 +28,145 @@ func initOptions() {
                {Name: "vxe", Feature: &S390X.HasVXE},
        }
 }
+
+// bitIsSet reports whether the bit at index is set. The bit index
+// is in big endian order, so bit index 0 is the leftmost bit.
+func bitIsSet(bits []uint64, index uint) bool {
+       return bits[index/64]&((1<<63)>>(index%64)) != 0
+}
+
+// facility is a bit index for the named facility.
+type facility uint8
+
+const (
+       // mandatory facilities
+       zarch  facility = 1  // z architecture mode is active
+       stflef facility = 7  // store-facility-list-extended
+       ldisp  facility = 18 // long-displacement
+       eimm   facility = 21 // extended-immediate
+
+       // miscellaneous facilities
+       dfp    facility = 42 // decimal-floating-point
+       etf3eh facility = 30 // extended-translation 3 enhancement
+
+       // cryptography facilities
+       msa  facility = 17  // message-security-assist
+       msa3 facility = 76  // message-security-assist extension 3
+       msa4 facility = 77  // message-security-assist extension 4
+       msa5 facility = 57  // message-security-assist extension 5
+       msa8 facility = 146 // message-security-assist extension 8
+       msa9 facility = 155 // message-security-assist extension 9
+
+       // vector facilities
+       vx   facility = 129 // vector facility
+       vxe  facility = 135 // vector-enhancements 1
+       vxe2 facility = 148 // vector-enhancements 2
+)
+
+// facilityList contains the result of an STFLE call.
+// Bits are numbered in big endian order so the
+// leftmost bit (the MSB) is at index 0.
+type facilityList struct {
+       bits [4]uint64
+}
+
+// Has reports whether the given facilities are present.
+func (s *facilityList) Has(fs ...facility) bool {
+       if len(fs) == 0 {
+               panic("no facility bits provided")
+       }
+       for _, f := range fs {
+               if !bitIsSet(s.bits[:], uint(f)) {
+                       return false
+               }
+       }
+       return true
+}
+
+// function is the code for the named cryptographic function.
+type function uint8
+
+const (
+       // KM{,A,C,CTR} function codes
+       aes128 function = 18 // AES-128
+       aes192 function = 19 // AES-192
+       aes256 function = 20 // AES-256
+
+       // K{I,L}MD function codes
+       sha1     function = 1  // SHA-1
+       sha256   function = 2  // SHA-256
+       sha512   function = 3  // SHA-512
+       sha3_224 function = 32 // SHA3-224
+       sha3_256 function = 33 // SHA3-256
+       sha3_384 function = 34 // SHA3-384
+       sha3_512 function = 35 // SHA3-512
+       shake128 function = 36 // SHAKE-128
+       shake256 function = 37 // SHAKE-256
+
+       // KLMD function codes
+       ghash function = 65 // GHASH
+)
+
+// queryResult contains the result of a Query function
+// call. Bits are numbered in big endian order so the
+// leftmost bit (the MSB) is at index 0.
+type queryResult struct {
+       bits [2]uint64
+}
+
+// Has reports whether the given functions are present.
+func (q *queryResult) Has(fns ...function) bool {
+       if len(fns) == 0 {
+               panic("no function codes provided")
+       }
+       for _, f := range fns {
+               if !bitIsSet(q.bits[:], uint(f)) {
+                       return false
+               }
+       }
+       return true
+}
+
+func doinit() {
+       initS390Xbase()
+
+       // We need implementations of stfle, km and so on
+       // to detect cryptographic features.
+       if !haveAsmFunctions() {
+               return
+       }
+
+       // optional cryptographic functions
+       if S390X.HasMSA {
+               aes := []function{aes128, aes192, aes256}
+
+               // cipher message
+               km, kmc := kmQuery(), kmcQuery()
+               S390X.HasAES = km.Has(aes...)
+               S390X.HasAESCBC = kmc.Has(aes...)
+               if S390X.HasSTFLE {
+                       facilities := stfle()
+                       if facilities.Has(msa4) {
+                               kmctr := kmctrQuery()
+                               S390X.HasAESCTR = kmctr.Has(aes...)
+                       }
+                       if facilities.Has(msa8) {
+                               kma := kmaQuery()
+                               S390X.HasAESGCM = kma.Has(aes...)
+                       }
+               }
+
+               // compute message digest
+               kimd := kimdQuery() // intermediate (no padding)
+               klmd := klmdQuery() // last (padding)
+               S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1)
+               S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256)
+               S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512)
+               S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist
+               sha3 := []function{
+                       sha3_224, sha3_256, sha3_384, sha3_512,
+                       shake128, shake256,
+               }
+               S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...)
+       }
+}
index 2ad039d40eb31a5588449f4bb11b5f7bae5cce5b..48d42933195f81f0ead4d83dd995e5ed7f320e37 100644 (file)
@@ -16,6 +16,26 @@ func initOptions() {
                {Name: "aes", Feature: &X86.HasAES},
                {Name: "avx", Feature: &X86.HasAVX},
                {Name: "avx2", Feature: &X86.HasAVX2},
+               {Name: "avx512", Feature: &X86.HasAVX512},
+               {Name: "avx512f", Feature: &X86.HasAVX512F},
+               {Name: "avx512cd", Feature: &X86.HasAVX512CD},
+               {Name: "avx512er", Feature: &X86.HasAVX512ER},
+               {Name: "avx512pf", Feature: &X86.HasAVX512PF},
+               {Name: "avx512vl", Feature: &X86.HasAVX512VL},
+               {Name: "avx512bw", Feature: &X86.HasAVX512BW},
+               {Name: "avx512dq", Feature: &X86.HasAVX512DQ},
+               {Name: "avx512ifma", Feature: &X86.HasAVX512IFMA},
+               {Name: "avx512vbmi", Feature: &X86.HasAVX512VBMI},
+               {Name: "avx512vnniw", Feature: &X86.HasAVX5124VNNIW},
+               {Name: "avx5124fmaps", Feature: &X86.HasAVX5124FMAPS},
+               {Name: "avx512vpopcntdq", Feature: &X86.HasAVX512VPOPCNTDQ},
+               {Name: "avx512vpclmulqdq", Feature: &X86.HasAVX512VPCLMULQDQ},
+               {Name: "avx512vnni", Feature: &X86.HasAVX512VNNI},
+               {Name: "avx512gfni", Feature: &X86.HasAVX512GFNI},
+               {Name: "avx512vaes", Feature: &X86.HasAVX512VAES},
+               {Name: "avx512vbmi2", Feature: &X86.HasAVX512VBMI2},
+               {Name: "avx512bitalg", Feature: &X86.HasAVX512BITALG},
+               {Name: "avx512bf16", Feature: &X86.HasAVX512BF16},
                {Name: "bmi1", Feature: &X86.HasBMI1},
                {Name: "bmi2", Feature: &X86.HasBMI2},
                {Name: "erms", Feature: &X86.HasERMS},
@@ -59,12 +79,15 @@ func archInit() {
        X86.HasOSXSAVE = isSet(27, ecx1)
        X86.HasRDRAND = isSet(30, ecx1)
 
-       osSupportsAVX := false
+       var osSupportsAVX, osSupportsAVX512 bool
        // For XGETBV, OSXSAVE bit is required and sufficient.
        if X86.HasOSXSAVE {
                eax, _ := xgetbv()
                // Check if XMM and YMM registers have OS support.
                osSupportsAVX = isSet(1, eax) && isSet(2, eax)
+
+               // Check if OPMASK and ZMM registers have OS support.
+               osSupportsAVX512 = osSupportsAVX && isSet(5, eax) && isSet(6, eax) && isSet(7, eax)
        }
 
        X86.HasAVX = isSet(28, ecx1) && osSupportsAVX
@@ -73,7 +96,7 @@ func archInit() {
                return
        }
 
-       _, ebx7, _, _ := cpuid(7, 0)
+       _, ebx7, ecx7, edx7 := cpuid(7, 0)
        X86.HasBMI1 = isSet(3, ebx7)
        X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX
        X86.HasBMI2 = isSet(8, ebx7)
@@ -81,6 +104,30 @@ func archInit() {
        X86.HasRDSEED = isSet(18, ebx7)
        X86.HasADX = isSet(19, ebx7)
 
+       X86.HasAVX512 = isSet(16, ebx7) && osSupportsAVX512 // Because avx-512 foundation is the core required extension
+       if X86.HasAVX512 {
+               X86.HasAVX512F = true
+               X86.HasAVX512CD = isSet(28, ebx7)
+               X86.HasAVX512ER = isSet(27, ebx7)
+               X86.HasAVX512PF = isSet(26, ebx7)
+               X86.HasAVX512VL = isSet(31, ebx7)
+               X86.HasAVX512BW = isSet(30, ebx7)
+               X86.HasAVX512DQ = isSet(17, ebx7)
+               X86.HasAVX512IFMA = isSet(21, ebx7)
+               X86.HasAVX512VBMI = isSet(1, ecx7)
+               X86.HasAVX5124VNNIW = isSet(2, edx7)
+               X86.HasAVX5124FMAPS = isSet(3, edx7)
+               X86.HasAVX512VPOPCNTDQ = isSet(14, ecx7)
+               X86.HasAVX512VPCLMULQDQ = isSet(10, ecx7)
+               X86.HasAVX512VNNI = isSet(11, ecx7)
+               X86.HasAVX512GFNI = isSet(8, ecx7)
+               X86.HasAVX512VAES = isSet(9, ecx7)
+               X86.HasAVX512VBMI2 = isSet(6, ecx7)
+               X86.HasAVX512BITALG = isSet(12, ecx7)
+
+               eax71, _, _, _ := cpuid(7, 1)
+               X86.HasAVX512BF16 = isSet(5, eax71)
+       }
 }
 
 func isSet(bitpos uint, value uint32) bool {
diff --git a/src/vendor/golang.org/x/sys/cpu/cpu_zos.go b/src/vendor/golang.org/x/sys/cpu/cpu_zos.go
new file mode 100644 (file)
index 0000000..5f54683
--- /dev/null
@@ -0,0 +1,10 @@
+// Copyright 2020 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 cpu
+
+func archInit() {
+       doinit()
+       Initialized = true
+}
diff --git a/src/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go b/src/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go
new file mode 100644 (file)
index 0000000..ccb1b70
--- /dev/null
@@ -0,0 +1,25 @@
+// Copyright 2020 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 cpu
+
+func initS390Xbase() {
+       // get the facilities list
+       facilities := stfle()
+
+       // mandatory
+       S390X.HasZARCH = facilities.Has(zarch)
+       S390X.HasSTFLE = facilities.Has(stflef)
+       S390X.HasLDISP = facilities.Has(ldisp)
+       S390X.HasEIMM = facilities.Has(eimm)
+
+       // optional
+       S390X.HasETF3EH = facilities.Has(etf3eh)
+       S390X.HasDFP = facilities.Has(dfp)
+       S390X.HasMSA = facilities.Has(msa)
+       S390X.HasVX = facilities.Has(vx)
+       if S390X.HasVX {
+               S390X.HasVXE = facilities.Has(vxe)
+       }
+}
index 36d76e77b5ea6a3c55a1d5210470c0cca0e33372..9c4f479c0d828513028d2b544b847a989bf9e58c 100644 (file)
@@ -18,7 +18,7 @@ golang.org/x/net/idna
 golang.org/x/net/lif
 golang.org/x/net/nettest
 golang.org/x/net/route
-# golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d
+# golang.org/x/sys v0.0.0-20201101102859-da207088b7d1
 ## explicit
 golang.org/x/sys/cpu
 # golang.org/x/text v0.3.4-0.20200826142016-a8b467125457