15 return Timespec{Sec: int32(sec), Nsec: int32(nsec)} |
15 return Timespec{Sec: int32(sec), Nsec: int32(nsec)} |
16 } |
16 } |
17 |
17 |
18 func setTimeval(sec, usec int64) Timeval { |
18 func setTimeval(sec, usec int64) Timeval { |
19 return Timeval{Sec: int32(sec), Usec: int32(usec)} |
19 return Timeval{Sec: int32(sec), Usec: int32(usec)} |
20 } |
|
21 |
|
22 //sysnb pipe(p *[2]_C_int) (err error) |
|
23 |
|
24 func Pipe(p []int) (err error) { |
|
25 if len(p) != 2 { |
|
26 return EINVAL |
|
27 } |
|
28 var pp [2]_C_int |
|
29 // Try pipe2 first for Android O, then try pipe for kernel 2.6.23. |
|
30 err = pipe2(&pp, 0) |
|
31 if err == ENOSYS { |
|
32 err = pipe(&pp) |
|
33 } |
|
34 p[0] = int(pp[0]) |
|
35 p[1] = int(pp[1]) |
|
36 return |
|
37 } |
|
38 |
|
39 //sysnb pipe2(p *[2]_C_int, flags int) (err error) |
|
40 |
|
41 func Pipe2(p []int, flags int) (err error) { |
|
42 if len(p) != 2 { |
|
43 return EINVAL |
|
44 } |
|
45 var pp [2]_C_int |
|
46 err = pipe2(&pp, flags) |
|
47 p[0] = int(pp[0]) |
|
48 p[1] = int(pp[1]) |
|
49 return |
|
50 } |
20 } |
51 |
21 |
52 func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { |
22 func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { |
53 newoffset, errno := seek(fd, offset, whence) |
23 newoffset, errno := seek(fd, offset, whence) |
54 if errno != 0 { |
24 if errno != 0 { |
55 return 0, errno |
25 return 0, errno |
56 } |
26 } |
57 return newoffset, nil |
27 return newoffset, nil |
58 } |
28 } |
59 |
29 |
60 //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) |
|
61 //sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) |
30 //sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) |
62 //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) |
31 //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) |
63 //sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) |
32 //sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) |
64 //sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32 |
33 //sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32 |
65 //sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32 |
34 //sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32 |
74 //sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) |
43 //sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) |
75 //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) |
44 //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) |
76 |
45 |
77 // 64-bit file system and 32-bit uid calls |
46 // 64-bit file system and 32-bit uid calls |
78 // (16-bit uid calls are not always supported in newer kernels) |
47 // (16-bit uid calls are not always supported in newer kernels) |
79 //sys dup2(oldfd int, newfd int) (err error) |
|
80 //sysnb EpollCreate(size int) (fd int, err error) |
|
81 //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) |
48 //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) |
82 //sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 |
49 //sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 |
83 //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 |
50 //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 |
84 //sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 |
51 //sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 |
85 //sysnb Getegid() (egid int) = SYS_GETEGID32 |
52 //sysnb Getegid() (egid int) = SYS_GETEGID32 |
86 //sysnb Geteuid() (euid int) = SYS_GETEUID32 |
53 //sysnb Geteuid() (euid int) = SYS_GETEUID32 |
87 //sysnb Getgid() (gid int) = SYS_GETGID32 |
54 //sysnb Getgid() (gid int) = SYS_GETGID32 |
88 //sysnb Getuid() (uid int) = SYS_GETUID32 |
55 //sysnb Getuid() (uid int) = SYS_GETUID32 |
89 //sysnb InotifyInit() (fd int, err error) |
|
90 //sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 |
56 //sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 |
91 //sys Listen(s int, n int) (err error) |
57 //sys Listen(s int, n int) (err error) |
92 //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 |
58 //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 |
93 //sys Pause() (err error) |
59 //sys Pause() (err error) |
94 //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) |
60 //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) |
128 return Utimes(path, tv) |
94 return Utimes(path, tv) |
129 } |
95 } |
130 |
96 |
131 //sys utimes(path string, times *[2]Timeval) (err error) |
97 //sys utimes(path string, times *[2]Timeval) (err error) |
132 |
98 |
133 //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 |
99 //sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 |
134 //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 |
100 //sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 |
135 //sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 |
101 //sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 |
136 //sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 |
102 //sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 |
137 |
103 |
138 func Fadvise(fd int, offset int64, length int64, advice int) (err error) { |
104 func Fadvise(fd int, offset int64, length int64, advice int) (err error) { |
139 _, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32)) |
105 _, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32)) |
256 cmsg.Len = uint32(length) |
222 cmsg.Len = uint32(length) |
257 } |
223 } |
258 |
224 |
259 func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { |
225 func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { |
260 rsa.Service_name_len = uint32(length) |
226 rsa.Service_name_len = uint32(length) |
261 } |
|
262 |
|
263 //sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) |
|
264 |
|
265 func Poll(fds []PollFd, timeout int) (n int, err error) { |
|
266 if len(fds) == 0 { |
|
267 return poll(nil, 0, timeout) |
|
268 } |
|
269 return poll(&fds[0], len(fds), timeout) |
|
270 } |
227 } |
271 |
228 |
272 //sys armSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE |
229 //sys armSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE |
273 |
230 |
274 func SyncFileRange(fd int, off int64, n int64, flags int) error { |
231 func SyncFileRange(fd int, off int64, n int64, flags int) error { |