~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/gabriel-samfira/sys/unix/syscall_linux_amd64.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2009 The Go Authors. All rights reserved.
 
2
// Use of this source code is governed by a BSD-style
 
3
// license that can be found in the LICENSE file.
 
4
 
 
5
// +build amd64,linux
 
6
 
 
7
package unix
 
8
 
 
9
import "syscall"
 
10
 
 
11
//sys   Dup2(oldfd int, newfd int) (err error)
 
12
//sys   Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
 
13
//sys   Fchown(fd int, uid int, gid int) (err error)
 
14
//sys   Fstat(fd int, stat *Stat_t) (err error)
 
15
//sys   Fstatfs(fd int, buf *Statfs_t) (err error)
 
16
//sys   Ftruncate(fd int, length int64) (err error)
 
17
//sysnb Getegid() (egid int)
 
18
//sysnb Geteuid() (euid int)
 
19
//sysnb Getgid() (gid int)
 
20
//sysnb Getrlimit(resource int, rlim *Rlimit) (err error)
 
21
//sysnb Getuid() (uid int)
 
22
//sysnb InotifyInit() (fd int, err error)
 
23
//sys   Ioperm(from int, num int, on int) (err error)
 
24
//sys   Iopl(level int) (err error)
 
25
//sys   Lchown(path string, uid int, gid int) (err error)
 
26
//sys   Listen(s int, n int) (err error)
 
27
//sys   Lstat(path string, stat *Stat_t) (err error)
 
28
//sys   Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
 
29
//sys   Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
 
30
//sys   Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
 
31
//sys   Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
 
32
//sys   sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
 
33
//sys   Setfsgid(gid int) (err error)
 
34
//sys   Setfsuid(uid int) (err error)
 
35
//sysnb Setregid(rgid int, egid int) (err error)
 
36
//sysnb Setresgid(rgid int, egid int, sgid int) (err error)
 
37
//sysnb Setresuid(ruid int, euid int, suid int) (err error)
 
38
//sysnb Setrlimit(resource int, rlim *Rlimit) (err error)
 
39
//sysnb Setreuid(ruid int, euid int) (err error)
 
40
//sys   Shutdown(fd int, how int) (err error)
 
41
//sys   Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
 
42
//sys   Stat(path string, stat *Stat_t) (err error)
 
43
//sys   Statfs(path string, buf *Statfs_t) (err error)
 
44
//sys   SyncFileRange(fd int, off int64, n int64, flags int) (err error)
 
45
//sys   Truncate(path string, length int64) (err error)
 
46
//sys   accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
 
47
//sys   accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
 
48
//sys   bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
 
49
//sys   connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
 
50
//sysnb getgroups(n int, list *_Gid_t) (nn int, err error)
 
51
//sysnb setgroups(n int, list *_Gid_t) (err error)
 
52
//sys   getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
 
53
//sys   setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
 
54
//sysnb socket(domain int, typ int, proto int) (fd int, err error)
 
55
//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
 
56
//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
 
57
//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
 
58
//sys   recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
 
59
//sys   sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
 
60
//sys   recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
 
61
//sys   sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
 
62
//sys   mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
 
63
 
 
64
//go:noescape
 
65
func gettimeofday(tv *Timeval) (err syscall.Errno)
 
66
 
 
67
func Gettimeofday(tv *Timeval) (err error) {
 
68
        errno := gettimeofday(tv)
 
69
        if errno != 0 {
 
70
                return errno
 
71
        }
 
72
        return nil
 
73
}
 
74
 
 
75
func Getpagesize() int { return 4096 }
 
76
 
 
77
func Time(t *Time_t) (tt Time_t, err error) {
 
78
        var tv Timeval
 
79
        errno := gettimeofday(&tv)
 
80
        if errno != 0 {
 
81
                return 0, errno
 
82
        }
 
83
        if t != nil {
 
84
                *t = Time_t(tv.Sec)
 
85
        }
 
86
        return Time_t(tv.Sec), nil
 
87
}
 
88
 
 
89
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
90
 
 
91
func NsecToTimespec(nsec int64) (ts Timespec) {
 
92
        ts.Sec = nsec / 1e9
 
93
        ts.Nsec = nsec % 1e9
 
94
        return
 
95
}
 
96
 
 
97
func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
 
98
 
 
99
func NsecToTimeval(nsec int64) (tv Timeval) {
 
100
        nsec += 999 // round up to microsecond
 
101
        tv.Sec = nsec / 1e9
 
102
        tv.Usec = nsec % 1e9 / 1e3
 
103
        return
 
104
}
 
105
 
 
106
//sysnb pipe(p *[2]_C_int) (err error)
 
107
 
 
108
func Pipe(p []int) (err error) {
 
109
        if len(p) != 2 {
 
110
                return EINVAL
 
111
        }
 
112
        var pp [2]_C_int
 
113
        err = pipe(&pp)
 
114
        p[0] = int(pp[0])
 
115
        p[1] = int(pp[1])
 
116
        return
 
117
}
 
118
 
 
119
//sysnb pipe2(p *[2]_C_int, flags int) (err error)
 
120
 
 
121
func Pipe2(p []int, flags int) (err error) {
 
122
        if len(p) != 2 {
 
123
                return EINVAL
 
124
        }
 
125
        var pp [2]_C_int
 
126
        err = pipe2(&pp, flags)
 
127
        p[0] = int(pp[0])
 
128
        p[1] = int(pp[1])
 
129
        return
 
130
}
 
131
 
 
132
func (r *PtraceRegs) PC() uint64 { return r.Rip }
 
133
 
 
134
func (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc }
 
135
 
 
136
func (iov *Iovec) SetLen(length int) {
 
137
        iov.Len = uint64(length)
 
138
}
 
139
 
 
140
func (msghdr *Msghdr) SetControllen(length int) {
 
141
        msghdr.Controllen = uint64(length)
 
142
}
 
143
 
 
144
func (cmsg *Cmsghdr) SetLen(length int) {
 
145
        cmsg.Len = uint64(length)
 
146
}