mirror of
https://github.com/golang/go
synced 2024-11-19 05:14:50 -07:00
syscall: add support for s390x
On s390x char is unsigned. We cannot force it to be signed using -fsigned-char (see arm64) because the s390x gccgo API is already public and we need to stick as closely as possible to it to avoid breaking existing projects. In order to match the gccgo API we also force the RawSockaddr.Data and RawSockaddrUnix.Path fields to be signed. This CL adds a post-processing pass (mkpost.go) to mkall.sh in order to export the types of fields in PtraceRegs on s390x without affecting the API on other platforms. The types of these fields match their counterparts in gccgo. mkpost.go also cleans up the Pad_cgo* fields and X_* fields (these fields are not exported by gccgo currently). It could be extended to add build tags on platforms that need them. Change-Id: I66bdf5b86ec98af70baf666989027bb354df9e3e Reviewed-on: https://go-review.googlesource.com/20961 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
fe5be5aced
commit
af74dca497
@ -207,6 +207,13 @@ linux_ppc64le)
|
||||
mksysnum="./mksysnum_linux.pl $unistd_h"
|
||||
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
||||
;;
|
||||
linux_s390x)
|
||||
GOOSARCH_in=syscall_linux_s390x.go
|
||||
unistd_h=/usr/include/asm/unistd.h
|
||||
mkerrors="$mkerrors -m64"
|
||||
mksysnum="./mksysnum_linux.pl $unistd_h"
|
||||
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
||||
;;
|
||||
nacl_386)
|
||||
mkerrors=""
|
||||
mksyscall="./mksyscall.pl -l32 -nacl"
|
||||
@ -288,5 +295,5 @@ esac
|
||||
if [ -n "$mksyscall" ]; then echo "$mksyscall $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; fi
|
||||
if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi
|
||||
if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi
|
||||
if [ -n "$mktypes" ]; then echo "$mktypes types_$GOOS.go |gofmt >ztypes_$GOOSARCH.go"; fi
|
||||
if [ -n "$mktypes" ]; then echo "$mktypes types_$GOOS.go |go run mkpost.go >ztypes_$GOOSARCH.go"; fi
|
||||
) | $run
|
||||
|
63
src/syscall/mkpost.go
Normal file
63
src/syscall/mkpost.go
Normal file
@ -0,0 +1,63 @@
|
||||
// Copyright 2016 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 ignore
|
||||
|
||||
// mkpost processes the output of cgo -godefs to
|
||||
// modify the generated types. It is used to clean up
|
||||
// the syscall API in an architecture specific manner.
|
||||
//
|
||||
// mkpost is run after cgo -godefs by mkall.sh.
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go/format"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
func main() {
|
||||
b, err := ioutil.ReadAll(os.Stdin)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
s := string(b)
|
||||
|
||||
goarch := os.Getenv("GOARCH")
|
||||
goos := os.Getenv("GOOS")
|
||||
if goarch == "s390x" && goos == "linux" {
|
||||
// Export the types of PtraceRegs fields.
|
||||
re := regexp.MustCompile("ptrace(Psw|Fpregs|Per)")
|
||||
s = re.ReplaceAllString(s, "Ptrace$1")
|
||||
|
||||
// Replace padding fields inserted by cgo with blank identifiers.
|
||||
re = regexp.MustCompile("Pad_cgo[A-Za-z0-9_]*")
|
||||
s = re.ReplaceAllString(s, "_")
|
||||
|
||||
// Replace other unwanted fields with blank identifiers.
|
||||
re = regexp.MustCompile("X_[A-Za-z0-9_]*")
|
||||
s = re.ReplaceAllString(s, "_")
|
||||
|
||||
// Force the type of RawSockaddr.Data to [14]int8 to match
|
||||
// the existing gccgo API.
|
||||
re = regexp.MustCompile("(Data\\s+\\[14\\])uint8")
|
||||
s = re.ReplaceAllString(s, "${1}int8")
|
||||
}
|
||||
|
||||
// gofmt
|
||||
b, err = format.Source([]byte(s))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// Append this command to the header to show where the new file
|
||||
// came from.
|
||||
re := regexp.MustCompile("(cgo -godefs [a-zA-Z0-9_]+\\.go.*)")
|
||||
s = re.ReplaceAllString(string(b), "$1 | go run mkpost.go")
|
||||
|
||||
fmt.Print(s)
|
||||
}
|
299
src/syscall/syscall_linux_s390x.go
Normal file
299
src/syscall/syscall_linux_s390x.go
Normal file
@ -0,0 +1,299 @@
|
||||
// Copyright 2016 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package syscall
|
||||
|
||||
import "unsafe"
|
||||
|
||||
const (
|
||||
_SYS_dup = SYS_DUP2
|
||||
_SYS_getdents = SYS_GETDENTS64
|
||||
)
|
||||
|
||||
//sys Dup2(oldfd int, newfd int) (err error)
|
||||
//sys Fchown(fd int, uid int, gid int) (err error)
|
||||
//sys Fstat(fd int, stat *Stat_t) (err error)
|
||||
//sys Fstatfs(fd int, buf *Statfs_t) (err error)
|
||||
//sys Ftruncate(fd int, length int64) (err error)
|
||||
//sysnb Getegid() (egid int)
|
||||
//sysnb Geteuid() (euid int)
|
||||
//sysnb Getgid() (gid int)
|
||||
//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = SYS_GETRLIMIT
|
||||
//sysnb Getuid() (uid int)
|
||||
//sysnb InotifyInit() (fd int, err error)
|
||||
//sys Lchown(path string, uid int, gid int) (err error)
|
||||
//sys Lstat(path string, stat *Stat_t) (err error)
|
||||
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
|
||||
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
|
||||
//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
|
||||
//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
|
||||
//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
|
||||
//sys Setfsgid(gid int) (err error)
|
||||
//sys Setfsuid(uid int) (err error)
|
||||
//sysnb Setregid(rgid int, egid int) (err error)
|
||||
//sysnb Setresgid(rgid int, egid int, sgid int) (err error)
|
||||
//sysnb Setresuid(ruid int, euid int, suid int) (err error)
|
||||
//sysnb Setrlimit(resource int, rlim *Rlimit) (err error)
|
||||
//sysnb Setreuid(ruid int, euid int) (err error)
|
||||
//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
|
||||
//sys Stat(path string, stat *Stat_t) (err error)
|
||||
//sys Statfs(path string, buf *Statfs_t) (err error)
|
||||
//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) = SYS_SYNC_FILE_RANGE
|
||||
//sys Truncate(path string, length int64) (err error)
|
||||
//sysnb getgroups(n int, list *_Gid_t) (nn int, err error)
|
||||
//sysnb setgroups(n int, list *_Gid_t) (err error)
|
||||
|
||||
func Getpagesize() int { return 4096 }
|
||||
|
||||
//sysnb Gettimeofday(tv *Timeval) (err error)
|
||||
|
||||
func Time(t *Time_t) (tt Time_t, err error) {
|
||||
var tv Timeval
|
||||
err = Gettimeofday(&tv)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if t != nil {
|
||||
*t = Time_t(tv.Sec)
|
||||
}
|
||||
return Time_t(tv.Sec), nil
|
||||
}
|
||||
|
||||
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
|
||||
|
||||
func NsecToTimespec(nsec int64) (ts Timespec) {
|
||||
ts.Sec = nsec / 1e9
|
||||
ts.Nsec = nsec % 1e9
|
||||
return
|
||||
}
|
||||
|
||||
func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
|
||||
|
||||
func NsecToTimeval(nsec int64) (tv Timeval) {
|
||||
nsec += 999 // round up to microsecond
|
||||
tv.Sec = nsec / 1e9
|
||||
tv.Usec = nsec % 1e9 / 1e3
|
||||
return
|
||||
}
|
||||
|
||||
func Pipe(p []int) (err error) {
|
||||
if len(p) != 2 {
|
||||
return EINVAL
|
||||
}
|
||||
var pp [2]_C_int
|
||||
err = pipe2(&pp, 0)
|
||||
p[0] = int(pp[0])
|
||||
p[1] = int(pp[1])
|
||||
return
|
||||
}
|
||||
|
||||
//sysnb pipe2(p *[2]_C_int, flags int) (err error)
|
||||
|
||||
func Pipe2(p []int, flags int) (err error) {
|
||||
if len(p) != 2 {
|
||||
return EINVAL
|
||||
}
|
||||
var pp [2]_C_int
|
||||
err = pipe2(&pp, flags)
|
||||
p[0] = int(pp[0])
|
||||
p[1] = int(pp[1])
|
||||
return
|
||||
}
|
||||
|
||||
// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct.
|
||||
// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in <asm/unistd.h>.
|
||||
func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
|
||||
mmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)}
|
||||
r0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0)
|
||||
use(unsafe.Pointer(&mmap_args[0]))
|
||||
xaddr = uintptr(r0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// On s390x Linux, all the socket calls go through an extra indirection.
|
||||
// The arguments to the underlying system call are the number below
|
||||
// and a pointer to an array of uintptr. We hide the pointer in the
|
||||
// socketcall assembly to avoid allocation on every system call.
|
||||
|
||||
const (
|
||||
// see linux/net.h
|
||||
_SOCKET = 1
|
||||
_BIND = 2
|
||||
_CONNECT = 3
|
||||
_LISTEN = 4
|
||||
_ACCEPT = 5
|
||||
_GETSOCKNAME = 6
|
||||
_GETPEERNAME = 7
|
||||
_SOCKETPAIR = 8
|
||||
_SEND = 9
|
||||
_RECV = 10
|
||||
_SENDTO = 11
|
||||
_RECVFROM = 12
|
||||
_SHUTDOWN = 13
|
||||
_SETSOCKOPT = 14
|
||||
_GETSOCKOPT = 15
|
||||
_SENDMSG = 16
|
||||
_RECVMSG = 17
|
||||
_ACCEPT4 = 18
|
||||
_RECVMMSG = 19
|
||||
_SENDMMSG = 20
|
||||
)
|
||||
|
||||
func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err Errno)
|
||||
func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err Errno)
|
||||
|
||||
func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
|
||||
fd, e := socketcall(_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
|
||||
fd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
|
||||
_, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
|
||||
_, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {
|
||||
_, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
|
||||
_, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
|
||||
_, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func socket(domain int, typ int, proto int) (fd int, err error) {
|
||||
fd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
|
||||
_, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
|
||||
_, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
|
||||
var base uintptr
|
||||
if len(p) > 0 {
|
||||
base = uintptr(unsafe.Pointer(&p[0]))
|
||||
}
|
||||
n, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
|
||||
var base uintptr
|
||||
if len(p) > 0 {
|
||||
base = uintptr(unsafe.Pointer(&p[0]))
|
||||
}
|
||||
_, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen))
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
|
||||
n, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
|
||||
n, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func Listen(s int, n int) (err error) {
|
||||
_, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func Shutdown(s, how int) (err error) {
|
||||
_, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0)
|
||||
if e != 0 {
|
||||
err = e
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (r *PtraceRegs) PC() uint64 { return r.Psw.Addr }
|
||||
|
||||
func (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = pc }
|
||||
|
||||
func (iov *Iovec) SetLen(length int) {
|
||||
iov.Len = uint64(length)
|
||||
}
|
||||
|
||||
func (msghdr *Msghdr) SetControllen(length int) {
|
||||
msghdr.Controllen = uint64(length)
|
||||
}
|
||||
|
||||
func (cmsg *Cmsghdr) SetLen(length int) {
|
||||
cmsg.Len = uint64(length)
|
||||
}
|
@ -77,8 +77,8 @@ struct sockaddr_any {
|
||||
// copied from /usr/include/linux/un.h
|
||||
struct my_sockaddr_un {
|
||||
sa_family_t sun_family;
|
||||
#if defined(__ARM_EABI__) || defined(__powerpc64__)
|
||||
// on ARM and PPC char is by default unsigned
|
||||
#if defined(__ARM_EABI__) || defined(__powerpc64__) || defined(__s390x__)
|
||||
// on ARM, PPC and s390x char is by default unsigned
|
||||
signed char sun_path[108];
|
||||
#else
|
||||
char sun_path[108];
|
||||
@ -93,10 +93,22 @@ typedef struct user_pt_regs PtraceRegs;
|
||||
typedef struct pt_regs PtraceRegs;
|
||||
#elif defined(__mips__)
|
||||
typedef struct user PtraceRegs;
|
||||
#elif defined(__s390x__)
|
||||
typedef struct _user_regs_struct PtraceRegs;
|
||||
#else
|
||||
typedef struct user_regs_struct PtraceRegs;
|
||||
#endif
|
||||
|
||||
#if defined(__s390x__)
|
||||
typedef struct _user_psw_struct ptracePsw;
|
||||
typedef struct _user_fpregs_struct ptraceFpregs;
|
||||
typedef struct _user_per_struct ptracePer;
|
||||
#else
|
||||
typedef struct {} ptracePsw;
|
||||
typedef struct {} ptraceFpregs;
|
||||
typedef struct {} ptracePer;
|
||||
#endif
|
||||
|
||||
// The real epoll_event is a union, and godefs doesn't handle it well.
|
||||
struct my_epoll_event {
|
||||
uint32_t events;
|
||||
@ -367,6 +379,13 @@ const SizeofInotifyEvent = C.sizeof_struct_inotify_event
|
||||
// Register structures
|
||||
type PtraceRegs C.PtraceRegs
|
||||
|
||||
// Structures contained in PtraceRegs on s390x (exported by post.go)
|
||||
type ptracePsw C.ptracePsw
|
||||
|
||||
type ptraceFpregs C.ptraceFpregs
|
||||
|
||||
type ptracePer C.ptracePer
|
||||
|
||||
// Misc
|
||||
|
||||
type FdSet C.fd_set
|
||||
|
1940
src/syscall/zerrors_linux_s390x.go
Normal file
1940
src/syscall/zerrors_linux_s390x.go
Normal file
File diff suppressed because it is too large
Load Diff
1576
src/syscall/zsyscall_linux_s390x.go
Normal file
1576
src/syscall/zsyscall_linux_s390x.go
Normal file
File diff suppressed because it is too large
Load Diff
326
src/syscall/zsysnum_linux_s390x.go
Normal file
326
src/syscall/zsysnum_linux_s390x.go
Normal file
@ -0,0 +1,326 @@
|
||||
// mksysnum_linux.pl /usr/include/asm/unistd.h
|
||||
// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
|
||||
|
||||
package syscall
|
||||
|
||||
const (
|
||||
SYS_EXIT = 1
|
||||
SYS_FORK = 2
|
||||
SYS_READ = 3
|
||||
SYS_WRITE = 4
|
||||
SYS_OPEN = 5
|
||||
SYS_CLOSE = 6
|
||||
SYS_RESTART_SYSCALL = 7
|
||||
SYS_CREAT = 8
|
||||
SYS_LINK = 9
|
||||
SYS_UNLINK = 10
|
||||
SYS_EXECVE = 11
|
||||
SYS_CHDIR = 12
|
||||
SYS_MKNOD = 14
|
||||
SYS_CHMOD = 15
|
||||
SYS_LSEEK = 19
|
||||
SYS_GETPID = 20
|
||||
SYS_MOUNT = 21
|
||||
SYS_UMOUNT = 22
|
||||
SYS_PTRACE = 26
|
||||
SYS_ALARM = 27
|
||||
SYS_PAUSE = 29
|
||||
SYS_UTIME = 30
|
||||
SYS_ACCESS = 33
|
||||
SYS_NICE = 34
|
||||
SYS_SYNC = 36
|
||||
SYS_KILL = 37
|
||||
SYS_RENAME = 38
|
||||
SYS_MKDIR = 39
|
||||
SYS_RMDIR = 40
|
||||
SYS_DUP = 41
|
||||
SYS_PIPE = 42
|
||||
SYS_TIMES = 43
|
||||
SYS_BRK = 45
|
||||
SYS_SIGNAL = 48
|
||||
SYS_ACCT = 51
|
||||
SYS_UMOUNT2 = 52
|
||||
SYS_IOCTL = 54
|
||||
SYS_FCNTL = 55
|
||||
SYS_SETPGID = 57
|
||||
SYS_UMASK = 60
|
||||
SYS_CHROOT = 61
|
||||
SYS_USTAT = 62
|
||||
SYS_DUP2 = 63
|
||||
SYS_GETPPID = 64
|
||||
SYS_GETPGRP = 65
|
||||
SYS_SETSID = 66
|
||||
SYS_SIGACTION = 67
|
||||
SYS_SIGSUSPEND = 72
|
||||
SYS_SIGPENDING = 73
|
||||
SYS_SETHOSTNAME = 74
|
||||
SYS_SETRLIMIT = 75
|
||||
SYS_GETRUSAGE = 77
|
||||
SYS_GETTIMEOFDAY = 78
|
||||
SYS_SETTIMEOFDAY = 79
|
||||
SYS_SYMLINK = 83
|
||||
SYS_READLINK = 85
|
||||
SYS_USELIB = 86
|
||||
SYS_SWAPON = 87
|
||||
SYS_REBOOT = 88
|
||||
SYS_READDIR = 89
|
||||
SYS_MMAP = 90
|
||||
SYS_MUNMAP = 91
|
||||
SYS_TRUNCATE = 92
|
||||
SYS_FTRUNCATE = 93
|
||||
SYS_FCHMOD = 94
|
||||
SYS_GETPRIORITY = 96
|
||||
SYS_SETPRIORITY = 97
|
||||
SYS_STATFS = 99
|
||||
SYS_FSTATFS = 100
|
||||
SYS_SOCKETCALL = 102
|
||||
SYS_SYSLOG = 103
|
||||
SYS_SETITIMER = 104
|
||||
SYS_GETITIMER = 105
|
||||
SYS_STAT = 106
|
||||
SYS_LSTAT = 107
|
||||
SYS_FSTAT = 108
|
||||
SYS_LOOKUP_DCOOKIE = 110
|
||||
SYS_VHANGUP = 111
|
||||
SYS_IDLE = 112
|
||||
SYS_WAIT4 = 114
|
||||
SYS_SWAPOFF = 115
|
||||
SYS_SYSINFO = 116
|
||||
SYS_IPC = 117
|
||||
SYS_FSYNC = 118
|
||||
SYS_SIGRETURN = 119
|
||||
SYS_CLONE = 120
|
||||
SYS_SETDOMAINNAME = 121
|
||||
SYS_UNAME = 122
|
||||
SYS_ADJTIMEX = 124
|
||||
SYS_MPROTECT = 125
|
||||
SYS_SIGPROCMASK = 126
|
||||
SYS_CREATE_MODULE = 127
|
||||
SYS_INIT_MODULE = 128
|
||||
SYS_DELETE_MODULE = 129
|
||||
SYS_GET_KERNEL_SYMS = 130
|
||||
SYS_QUOTACTL = 131
|
||||
SYS_GETPGID = 132
|
||||
SYS_FCHDIR = 133
|
||||
SYS_BDFLUSH = 134
|
||||
SYS_SYSFS = 135
|
||||
SYS_PERSONALITY = 136
|
||||
SYS_AFS_SYSCALL = 137
|
||||
SYS_GETDENTS = 141
|
||||
SYS_FLOCK = 143
|
||||
SYS_MSYNC = 144
|
||||
SYS_READV = 145
|
||||
SYS_WRITEV = 146
|
||||
SYS_GETSID = 147
|
||||
SYS_FDATASYNC = 148
|
||||
SYS__SYSCTL = 149
|
||||
SYS_MLOCK = 150
|
||||
SYS_MUNLOCK = 151
|
||||
SYS_MLOCKALL = 152
|
||||
SYS_MUNLOCKALL = 153
|
||||
SYS_SCHED_SETPARAM = 154
|
||||
SYS_SCHED_GETPARAM = 155
|
||||
SYS_SCHED_SETSCHEDULER = 156
|
||||
SYS_SCHED_GETSCHEDULER = 157
|
||||
SYS_SCHED_YIELD = 158
|
||||
SYS_SCHED_GET_PRIORITY_MAX = 159
|
||||
SYS_SCHED_GET_PRIORITY_MIN = 160
|
||||
SYS_SCHED_RR_GET_INTERVAL = 161
|
||||
SYS_NANOSLEEP = 162
|
||||
SYS_MREMAP = 163
|
||||
SYS_QUERY_MODULE = 167
|
||||
SYS_POLL = 168
|
||||
SYS_NFSSERVCTL = 169
|
||||
SYS_PRCTL = 172
|
||||
SYS_RT_SIGRETURN = 173
|
||||
SYS_RT_SIGACTION = 174
|
||||
SYS_RT_SIGPROCMASK = 175
|
||||
SYS_RT_SIGPENDING = 176
|
||||
SYS_RT_SIGTIMEDWAIT = 177
|
||||
SYS_RT_SIGQUEUEINFO = 178
|
||||
SYS_RT_SIGSUSPEND = 179
|
||||
SYS_PREAD64 = 180
|
||||
SYS_PWRITE64 = 181
|
||||
SYS_GETCWD = 183
|
||||
SYS_CAPGET = 184
|
||||
SYS_CAPSET = 185
|
||||
SYS_SIGALTSTACK = 186
|
||||
SYS_SENDFILE = 187
|
||||
SYS_GETPMSG = 188
|
||||
SYS_PUTPMSG = 189
|
||||
SYS_VFORK = 190
|
||||
SYS_PIVOT_ROOT = 217
|
||||
SYS_MINCORE = 218
|
||||
SYS_MADVISE = 219
|
||||
SYS_GETDENTS64 = 220
|
||||
SYS_READAHEAD = 222
|
||||
SYS_SETXATTR = 224
|
||||
SYS_LSETXATTR = 225
|
||||
SYS_FSETXATTR = 226
|
||||
SYS_GETXATTR = 227
|
||||
SYS_LGETXATTR = 228
|
||||
SYS_FGETXATTR = 229
|
||||
SYS_LISTXATTR = 230
|
||||
SYS_LLISTXATTR = 231
|
||||
SYS_FLISTXATTR = 232
|
||||
SYS_REMOVEXATTR = 233
|
||||
SYS_LREMOVEXATTR = 234
|
||||
SYS_FREMOVEXATTR = 235
|
||||
SYS_GETTID = 236
|
||||
SYS_TKILL = 237
|
||||
SYS_FUTEX = 238
|
||||
SYS_SCHED_SETAFFINITY = 239
|
||||
SYS_SCHED_GETAFFINITY = 240
|
||||
SYS_TGKILL = 241
|
||||
SYS_IO_SETUP = 243
|
||||
SYS_IO_DESTROY = 244
|
||||
SYS_IO_GETEVENTS = 245
|
||||
SYS_IO_SUBMIT = 246
|
||||
SYS_IO_CANCEL = 247
|
||||
SYS_EXIT_GROUP = 248
|
||||
SYS_EPOLL_CREATE = 249
|
||||
SYS_EPOLL_CTL = 250
|
||||
SYS_EPOLL_WAIT = 251
|
||||
SYS_SET_TID_ADDRESS = 252
|
||||
SYS_FADVISE64 = 253
|
||||
SYS_TIMER_CREATE = 254
|
||||
SYS_TIMER_SETTIME = 255
|
||||
SYS_TIMER_GETTIME = 256
|
||||
SYS_TIMER_GETOVERRUN = 257
|
||||
SYS_TIMER_DELETE = 258
|
||||
SYS_CLOCK_SETTIME = 259
|
||||
SYS_CLOCK_GETTIME = 260
|
||||
SYS_CLOCK_GETRES = 261
|
||||
SYS_CLOCK_NANOSLEEP = 262
|
||||
SYS_STATFS64 = 265
|
||||
SYS_FSTATFS64 = 266
|
||||
SYS_REMAP_FILE_PAGES = 267
|
||||
SYS_MBIND = 268
|
||||
SYS_GET_MEMPOLICY = 269
|
||||
SYS_SET_MEMPOLICY = 270
|
||||
SYS_MQ_OPEN = 271
|
||||
SYS_MQ_UNLINK = 272
|
||||
SYS_MQ_TIMEDSEND = 273
|
||||
SYS_MQ_TIMEDRECEIVE = 274
|
||||
SYS_MQ_NOTIFY = 275
|
||||
SYS_MQ_GETSETATTR = 276
|
||||
SYS_KEXEC_LOAD = 277
|
||||
SYS_ADD_KEY = 278
|
||||
SYS_REQUEST_KEY = 279
|
||||
SYS_KEYCTL = 280
|
||||
SYS_WAITID = 281
|
||||
SYS_IOPRIO_SET = 282
|
||||
SYS_IOPRIO_GET = 283
|
||||
SYS_INOTIFY_INIT = 284
|
||||
SYS_INOTIFY_ADD_WATCH = 285
|
||||
SYS_INOTIFY_RM_WATCH = 286
|
||||
SYS_MIGRATE_PAGES = 287
|
||||
SYS_OPENAT = 288
|
||||
SYS_MKDIRAT = 289
|
||||
SYS_MKNODAT = 290
|
||||
SYS_FCHOWNAT = 291
|
||||
SYS_FUTIMESAT = 292
|
||||
SYS_UNLINKAT = 294
|
||||
SYS_RENAMEAT = 295
|
||||
SYS_LINKAT = 296
|
||||
SYS_SYMLINKAT = 297
|
||||
SYS_READLINKAT = 298
|
||||
SYS_FCHMODAT = 299
|
||||
SYS_FACCESSAT = 300
|
||||
SYS_PSELECT6 = 301
|
||||
SYS_PPOLL = 302
|
||||
SYS_UNSHARE = 303
|
||||
SYS_SET_ROBUST_LIST = 304
|
||||
SYS_GET_ROBUST_LIST = 305
|
||||
SYS_SPLICE = 306
|
||||
SYS_SYNC_FILE_RANGE = 307
|
||||
SYS_TEE = 308
|
||||
SYS_VMSPLICE = 309
|
||||
SYS_MOVE_PAGES = 310
|
||||
SYS_GETCPU = 311
|
||||
SYS_EPOLL_PWAIT = 312
|
||||
SYS_UTIMES = 313
|
||||
SYS_FALLOCATE = 314
|
||||
SYS_UTIMENSAT = 315
|
||||
SYS_SIGNALFD = 316
|
||||
SYS_TIMERFD = 317
|
||||
SYS_EVENTFD = 318
|
||||
SYS_TIMERFD_CREATE = 319
|
||||
SYS_TIMERFD_SETTIME = 320
|
||||
SYS_TIMERFD_GETTIME = 321
|
||||
SYS_SIGNALFD4 = 322
|
||||
SYS_EVENTFD2 = 323
|
||||
SYS_INOTIFY_INIT1 = 324
|
||||
SYS_PIPE2 = 325
|
||||
SYS_DUP3 = 326
|
||||
SYS_EPOLL_CREATE1 = 327
|
||||
SYS_PREADV = 328
|
||||
SYS_PWRITEV = 329
|
||||
SYS_RT_TGSIGQUEUEINFO = 330
|
||||
SYS_PERF_EVENT_OPEN = 331
|
||||
SYS_FANOTIFY_INIT = 332
|
||||
SYS_FANOTIFY_MARK = 333
|
||||
SYS_PRLIMIT64 = 334
|
||||
SYS_NAME_TO_HANDLE_AT = 335
|
||||
SYS_OPEN_BY_HANDLE_AT = 336
|
||||
SYS_CLOCK_ADJTIME = 337
|
||||
SYS_SYNCFS = 338
|
||||
SYS_SETNS = 339
|
||||
SYS_PROCESS_VM_READV = 340
|
||||
SYS_PROCESS_VM_WRITEV = 341
|
||||
SYS_S390_RUNTIME_INSTR = 342
|
||||
SYS_KCMP = 343
|
||||
SYS_FINIT_MODULE = 344
|
||||
SYS_SCHED_SETATTR = 345
|
||||
SYS_SCHED_GETATTR = 346
|
||||
SYS_RENAMEAT2 = 347
|
||||
SYS_SECCOMP = 348
|
||||
SYS_GETRANDOM = 349
|
||||
SYS_MEMFD_CREATE = 350
|
||||
SYS_BPF = 351
|
||||
SYS_S390_PCI_MMIO_WRITE = 352
|
||||
SYS_S390_PCI_MMIO_READ = 353
|
||||
SYS_EXECVEAT = 354
|
||||
SYS_USERFAULTFD = 355
|
||||
SYS_MEMBARRIER = 356
|
||||
SYS_RECVMMSG = 357
|
||||
SYS_SENDMMSG = 358
|
||||
SYS_SOCKET = 359
|
||||
SYS_SOCKETPAIR = 360
|
||||
SYS_BIND = 361
|
||||
SYS_CONNECT = 362
|
||||
SYS_LISTEN = 363
|
||||
SYS_ACCEPT4 = 364
|
||||
SYS_GETSOCKOPT = 365
|
||||
SYS_SETSOCKOPT = 366
|
||||
SYS_GETSOCKNAME = 367
|
||||
SYS_GETPEERNAME = 368
|
||||
SYS_SENDTO = 369
|
||||
SYS_SENDMSG = 370
|
||||
SYS_RECVFROM = 371
|
||||
SYS_RECVMSG = 372
|
||||
SYS_SHUTDOWN = 373
|
||||
SYS_MLOCK2 = 374
|
||||
SYS_SELECT = 142
|
||||
SYS_GETRLIMIT = 191
|
||||
SYS_LCHOWN = 198
|
||||
SYS_GETUID = 199
|
||||
SYS_GETGID = 200
|
||||
SYS_GETEUID = 201
|
||||
SYS_GETEGID = 202
|
||||
SYS_SETREUID = 203
|
||||
SYS_SETREGID = 204
|
||||
SYS_GETGROUPS = 205
|
||||
SYS_SETGROUPS = 206
|
||||
SYS_FCHOWN = 207
|
||||
SYS_SETRESUID = 208
|
||||
SYS_GETRESUID = 209
|
||||
SYS_SETRESGID = 210
|
||||
SYS_GETRESGID = 211
|
||||
SYS_CHOWN = 212
|
||||
SYS_SETUID = 213
|
||||
SYS_SETGID = 214
|
||||
SYS_SETFSUID = 215
|
||||
SYS_SETFSGID = 216
|
||||
SYS_NEWFSTATAT = 293
|
||||
)
|
619
src/syscall/ztypes_linux_s390x.go
Normal file
619
src/syscall/ztypes_linux_s390x.go
Normal file
@ -0,0 +1,619 @@
|
||||
// Created by cgo -godefs - DO NOT EDIT
|
||||
// cgo -godefs types_linux.go | go run mkpost.go
|
||||
|
||||
package syscall
|
||||
|
||||
const (
|
||||
sizeofPtr = 0x8
|
||||
sizeofShort = 0x2
|
||||
sizeofInt = 0x4
|
||||
sizeofLong = 0x8
|
||||
sizeofLongLong = 0x8
|
||||
PathMax = 0x1000
|
||||
)
|
||||
|
||||
type (
|
||||
_C_short int16
|
||||
_C_int int32
|
||||
_C_long int64
|
||||
_C_long_long int64
|
||||
)
|
||||
|
||||
type Timespec struct {
|
||||
Sec int64
|
||||
Nsec int64
|
||||
}
|
||||
|
||||
type Timeval struct {
|
||||
Sec int64
|
||||
Usec int64
|
||||
}
|
||||
|
||||
type Timex struct {
|
||||
Modes uint32
|
||||
_ [4]byte
|
||||
Offset int64
|
||||
Freq int64
|
||||
Maxerror int64
|
||||
Esterror int64
|
||||
Status int32
|
||||
_ [4]byte
|
||||
Constant int64
|
||||
Precision int64
|
||||
Tolerance int64
|
||||
Time Timeval
|
||||
Tick int64
|
||||
Ppsfreq int64
|
||||
Jitter int64
|
||||
Shift int32
|
||||
_ [4]byte
|
||||
Stabil int64
|
||||
Jitcnt int64
|
||||
Calcnt int64
|
||||
Errcnt int64
|
||||
Stbcnt int64
|
||||
Tai int32
|
||||
_ [44]byte
|
||||
}
|
||||
|
||||
type Time_t int64
|
||||
|
||||
type Tms struct {
|
||||
Utime int64
|
||||
Stime int64
|
||||
Cutime int64
|
||||
Cstime int64
|
||||
}
|
||||
|
||||
type Utimbuf struct {
|
||||
Actime int64
|
||||
Modtime int64
|
||||
}
|
||||
|
||||
type Rusage struct {
|
||||
Utime Timeval
|
||||
Stime Timeval
|
||||
Maxrss int64
|
||||
Ixrss int64
|
||||
Idrss int64
|
||||
Isrss int64
|
||||
Minflt int64
|
||||
Majflt int64
|
||||
Nswap int64
|
||||
Inblock int64
|
||||
Oublock int64
|
||||
Msgsnd int64
|
||||
Msgrcv int64
|
||||
Nsignals int64
|
||||
Nvcsw int64
|
||||
Nivcsw int64
|
||||
}
|
||||
|
||||
type Rlimit struct {
|
||||
Cur uint64
|
||||
Max uint64
|
||||
}
|
||||
|
||||
type _Gid_t uint32
|
||||
|
||||
type Stat_t struct {
|
||||
Dev uint64
|
||||
Ino uint64
|
||||
Nlink uint64
|
||||
Mode uint32
|
||||
Uid uint32
|
||||
Gid uint32
|
||||
_ int32
|
||||
Rdev uint64
|
||||
Size int64
|
||||
Atim Timespec
|
||||
Mtim Timespec
|
||||
Ctim Timespec
|
||||
Blksize int64
|
||||
Blocks int64
|
||||
_ [3]int64
|
||||
}
|
||||
|
||||
type Statfs_t struct {
|
||||
Type uint32
|
||||
Bsize uint32
|
||||
Blocks uint64
|
||||
Bfree uint64
|
||||
Bavail uint64
|
||||
Files uint64
|
||||
Ffree uint64
|
||||
Fsid Fsid
|
||||
Namelen uint32
|
||||
Frsize uint32
|
||||
Flags uint32
|
||||
Spare [4]uint32
|
||||
_ [4]byte
|
||||
}
|
||||
|
||||
type Dirent struct {
|
||||
Ino uint64
|
||||
Off int64
|
||||
Reclen uint16
|
||||
Type uint8
|
||||
Name [256]uint8
|
||||
_ [5]byte
|
||||
}
|
||||
|
||||
type Fsid struct {
|
||||
_ [2]int32
|
||||
}
|
||||
|
||||
type Flock_t struct {
|
||||
Type int16
|
||||
Whence int16
|
||||
_ [4]byte
|
||||
Start int64
|
||||
Len int64
|
||||
Pid int32
|
||||
_ [4]byte
|
||||
}
|
||||
|
||||
type RawSockaddrInet4 struct {
|
||||
Family uint16
|
||||
Port uint16
|
||||
Addr [4]byte /* in_addr */
|
||||
Zero [8]uint8
|
||||
}
|
||||
|
||||
type RawSockaddrInet6 struct {
|
||||
Family uint16
|
||||
Port uint16
|
||||
Flowinfo uint32
|
||||
Addr [16]byte /* in6_addr */
|
||||
Scope_id uint32
|
||||
}
|
||||
|
||||
type RawSockaddrUnix struct {
|
||||
Family uint16
|
||||
Path [108]int8
|
||||
}
|
||||
|
||||
type RawSockaddrLinklayer struct {
|
||||
Family uint16
|
||||
Protocol uint16
|
||||
Ifindex int32
|
||||
Hatype uint16
|
||||
Pkttype uint8
|
||||
Halen uint8
|
||||
Addr [8]uint8
|
||||
}
|
||||
|
||||
type RawSockaddrNetlink struct {
|
||||
Family uint16
|
||||
Pad uint16
|
||||
Pid uint32
|
||||
Groups uint32
|
||||
}
|
||||
|
||||
type RawSockaddr struct {
|
||||
Family uint16
|
||||
Data [14]int8
|
||||
}
|
||||
|
||||
type RawSockaddrAny struct {
|
||||
Addr RawSockaddr
|
||||
Pad [96]uint8
|
||||
}
|
||||
|
||||
type _Socklen uint32
|
||||
|
||||
type Linger struct {
|
||||
Onoff int32
|
||||
Linger int32
|
||||
}
|
||||
|
||||
type Iovec struct {
|
||||
Base *byte
|
||||
Len uint64
|
||||
}
|
||||
|
||||
type IPMreq struct {
|
||||
Multiaddr [4]byte /* in_addr */
|
||||
Interface [4]byte /* in_addr */
|
||||
}
|
||||
|
||||
type IPMreqn struct {
|
||||
Multiaddr [4]byte /* in_addr */
|
||||
Address [4]byte /* in_addr */
|
||||
Ifindex int32
|
||||
}
|
||||
|
||||
type IPv6Mreq struct {
|
||||
Multiaddr [16]byte /* in6_addr */
|
||||
Interface uint32
|
||||
}
|
||||
|
||||
type Msghdr struct {
|
||||
Name *byte
|
||||
Namelen uint32
|
||||
_ [4]byte
|
||||
Iov *Iovec
|
||||
Iovlen uint64
|
||||
Control *byte
|
||||
Controllen uint64
|
||||
Flags int32
|
||||
_ [4]byte
|
||||
}
|
||||
|
||||
type Cmsghdr struct {
|
||||
Len uint64
|
||||
Level int32
|
||||
Type int32
|
||||
}
|
||||
|
||||
type Inet4Pktinfo struct {
|
||||
Ifindex int32
|
||||
Spec_dst [4]byte /* in_addr */
|
||||
Addr [4]byte /* in_addr */
|
||||
}
|
||||
|
||||
type Inet6Pktinfo struct {
|
||||
Addr [16]byte /* in6_addr */
|
||||
Ifindex uint32
|
||||
}
|
||||
|
||||
type IPv6MTUInfo struct {
|
||||
Addr RawSockaddrInet6
|
||||
Mtu uint32
|
||||
}
|
||||
|
||||
type ICMPv6Filter struct {
|
||||
Data [8]uint32
|
||||
}
|
||||
|
||||
type Ucred struct {
|
||||
Pid int32
|
||||
Uid uint32
|
||||
Gid uint32
|
||||
}
|
||||
|
||||
type TCPInfo struct {
|
||||
State uint8
|
||||
Ca_state uint8
|
||||
Retransmits uint8
|
||||
Probes uint8
|
||||
Backoff uint8
|
||||
Options uint8
|
||||
_ [2]byte
|
||||
Rto uint32
|
||||
Ato uint32
|
||||
Snd_mss uint32
|
||||
Rcv_mss uint32
|
||||
Unacked uint32
|
||||
Sacked uint32
|
||||
Lost uint32
|
||||
Retrans uint32
|
||||
Fackets uint32
|
||||
Last_data_sent uint32
|
||||
Last_ack_sent uint32
|
||||
Last_data_recv uint32
|
||||
Last_ack_recv uint32
|
||||
Pmtu uint32
|
||||
Rcv_ssthresh uint32
|
||||
Rtt uint32
|
||||
Rttvar uint32
|
||||
Snd_ssthresh uint32
|
||||
Snd_cwnd uint32
|
||||
Advmss uint32
|
||||
Reordering uint32
|
||||
Rcv_rtt uint32
|
||||
Rcv_space uint32
|
||||
Total_retrans uint32
|
||||
}
|
||||
|
||||
const (
|
||||
SizeofSockaddrInet4 = 0x10
|
||||
SizeofSockaddrInet6 = 0x1c
|
||||
SizeofSockaddrAny = 0x70
|
||||
SizeofSockaddrUnix = 0x6e
|
||||
SizeofSockaddrLinklayer = 0x14
|
||||
SizeofSockaddrNetlink = 0xc
|
||||
SizeofLinger = 0x8
|
||||
SizeofIPMreq = 0x8
|
||||
SizeofIPMreqn = 0xc
|
||||
SizeofIPv6Mreq = 0x14
|
||||
SizeofMsghdr = 0x38
|
||||
SizeofCmsghdr = 0x10
|
||||
SizeofInet4Pktinfo = 0xc
|
||||
SizeofInet6Pktinfo = 0x14
|
||||
SizeofIPv6MTUInfo = 0x20
|
||||
SizeofICMPv6Filter = 0x20
|
||||
SizeofUcred = 0xc
|
||||
SizeofTCPInfo = 0x68
|
||||
)
|
||||
|
||||
const (
|
||||
IFA_UNSPEC = 0x0
|
||||
IFA_ADDRESS = 0x1
|
||||
IFA_LOCAL = 0x2
|
||||
IFA_LABEL = 0x3
|
||||
IFA_BROADCAST = 0x4
|
||||
IFA_ANYCAST = 0x5
|
||||
IFA_CACHEINFO = 0x6
|
||||
IFA_MULTICAST = 0x7
|
||||
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_MAX = 0x27
|
||||
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
|
||||
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
|
||||
RTNLGRP_NONE = 0x0
|
||||
RTNLGRP_LINK = 0x1
|
||||
RTNLGRP_NOTIFY = 0x2
|
||||
RTNLGRP_NEIGH = 0x3
|
||||
RTNLGRP_TC = 0x4
|
||||
RTNLGRP_IPV4_IFADDR = 0x5
|
||||
RTNLGRP_IPV4_MROUTE = 0x6
|
||||
RTNLGRP_IPV4_ROUTE = 0x7
|
||||
RTNLGRP_IPV4_RULE = 0x8
|
||||
RTNLGRP_IPV6_IFADDR = 0x9
|
||||
RTNLGRP_IPV6_MROUTE = 0xa
|
||||
RTNLGRP_IPV6_ROUTE = 0xb
|
||||
RTNLGRP_IPV6_IFINFO = 0xc
|
||||
RTNLGRP_IPV6_PREFIX = 0x12
|
||||
RTNLGRP_IPV6_RULE = 0x13
|
||||
RTNLGRP_ND_USEROPT = 0x14
|
||||
SizeofNlMsghdr = 0x10
|
||||
SizeofNlMsgerr = 0x14
|
||||
SizeofRtGenmsg = 0x1
|
||||
SizeofNlAttr = 0x4
|
||||
SizeofRtAttr = 0x4
|
||||
SizeofIfInfomsg = 0x10
|
||||
SizeofIfAddrmsg = 0x8
|
||||
SizeofRtMsg = 0xc
|
||||
SizeofRtNexthop = 0x8
|
||||
)
|
||||
|
||||
type NlMsghdr struct {
|
||||
Len uint32
|
||||
Type uint16
|
||||
Flags uint16
|
||||
Seq uint32
|
||||
Pid uint32
|
||||
}
|
||||
|
||||
type NlMsgerr struct {
|
||||
Error int32
|
||||
Msg NlMsghdr
|
||||
}
|
||||
|
||||
type RtGenmsg struct {
|
||||
Family uint8
|
||||
}
|
||||
|
||||
type NlAttr struct {
|
||||
Len uint16
|
||||
Type uint16
|
||||
}
|
||||
|
||||
type RtAttr struct {
|
||||
Len uint16
|
||||
Type uint16
|
||||
}
|
||||
|
||||
type IfInfomsg struct {
|
||||
Family uint8
|
||||
_ uint8
|
||||
Type uint16
|
||||
Index int32
|
||||
Flags uint32
|
||||
Change uint32
|
||||
}
|
||||
|
||||
type IfAddrmsg struct {
|
||||
Family uint8
|
||||
Prefixlen uint8
|
||||
Flags uint8
|
||||
Scope uint8
|
||||
Index uint32
|
||||
}
|
||||
|
||||
type RtMsg struct {
|
||||
Family uint8
|
||||
Dst_len uint8
|
||||
Src_len uint8
|
||||
Tos uint8
|
||||
Table uint8
|
||||
Protocol uint8
|
||||
Scope uint8
|
||||
Type uint8
|
||||
Flags uint32
|
||||
}
|
||||
|
||||
type RtNexthop struct {
|
||||
Len uint16
|
||||
Flags uint8
|
||||
Hops uint8
|
||||
Ifindex int32
|
||||
}
|
||||
|
||||
const (
|
||||
SizeofSockFilter = 0x8
|
||||
SizeofSockFprog = 0x10
|
||||
)
|
||||
|
||||
type SockFilter struct {
|
||||
Code uint16
|
||||
Jt uint8
|
||||
Jf uint8
|
||||
K uint32
|
||||
}
|
||||
|
||||
type SockFprog struct {
|
||||
Len uint16
|
||||
_ [6]byte
|
||||
Filter *SockFilter
|
||||
}
|
||||
|
||||
type InotifyEvent struct {
|
||||
Wd int32
|
||||
Mask uint32
|
||||
Cookie uint32
|
||||
Len uint32
|
||||
}
|
||||
|
||||
const SizeofInotifyEvent = 0x10
|
||||
|
||||
type PtraceRegs struct {
|
||||
Psw PtracePsw
|
||||
Gprs [16]uint64
|
||||
Acrs [16]uint32
|
||||
Orig_gpr2 uint64
|
||||
Fp_regs PtraceFpregs
|
||||
Per_info PtracePer
|
||||
Ieee_instruction_pointer uint64
|
||||
}
|
||||
|
||||
type PtracePsw struct {
|
||||
Mask uint64
|
||||
Addr uint64
|
||||
}
|
||||
|
||||
type PtraceFpregs struct {
|
||||
Fpc uint32
|
||||
_ [4]byte
|
||||
Fprs [16]float64
|
||||
}
|
||||
|
||||
type PtracePer struct {
|
||||
Control_regs [0]uint64
|
||||
_ [24]byte
|
||||
_ [8]byte
|
||||
Starting_addr uint64
|
||||
Ending_addr uint64
|
||||
Perc_atmid uint16
|
||||
_ [6]byte
|
||||
Address uint64
|
||||
Access_id uint8
|
||||
_ [7]byte
|
||||
}
|
||||
|
||||
type FdSet struct {
|
||||
Bits [16]int64
|
||||
}
|
||||
|
||||
type Sysinfo_t struct {
|
||||
Uptime int64
|
||||
Loads [3]uint64
|
||||
Totalram uint64
|
||||
Freeram uint64
|
||||
Sharedram uint64
|
||||
Bufferram uint64
|
||||
Totalswap uint64
|
||||
Freeswap uint64
|
||||
Procs uint16
|
||||
Pad uint16
|
||||
_ [4]byte
|
||||
Totalhigh uint64
|
||||
Freehigh uint64
|
||||
Unit uint32
|
||||
_ [0]uint8
|
||||
_ [4]byte
|
||||
}
|
||||
|
||||
type Utsname struct {
|
||||
Sysname [65]uint8
|
||||
Nodename [65]uint8
|
||||
Release [65]uint8
|
||||
Version [65]uint8
|
||||
Machine [65]uint8
|
||||
Domainname [65]uint8
|
||||
}
|
||||
|
||||
type Ustat_t struct {
|
||||
Tfree int32
|
||||
_ [4]byte
|
||||
Tinode uint64
|
||||
Fname [6]uint8
|
||||
Fpack [6]uint8
|
||||
_ [4]byte
|
||||
}
|
||||
|
||||
type EpollEvent struct {
|
||||
Events uint32
|
||||
Fd int32
|
||||
Pad int32
|
||||
}
|
||||
|
||||
const (
|
||||
_AT_FDCWD = -0x64
|
||||
_AT_REMOVEDIR = 0x200
|
||||
_AT_SYMLINK_NOFOLLOW = 0x100
|
||||
)
|
||||
|
||||
type Termios struct {
|
||||
Iflag uint32
|
||||
Oflag uint32
|
||||
Cflag uint32
|
||||
Lflag uint32
|
||||
Line uint8
|
||||
Cc [32]uint8
|
||||
_ [3]byte
|
||||
Ispeed uint32
|
||||
Ospeed uint32
|
||||
}
|
||||
|
||||
const (
|
||||
IUCLC = 0x200
|
||||
OLCUC = 0x2
|
||||
TCGETS = 0x5401
|
||||
TCSETS = 0x5402
|
||||
XCASE = 0x4
|
||||
)
|
Loading…
Reference in New Issue
Block a user