28 //sysnb Getrlimit(resource int, rlim *Rlimit) (err error) |
28 //sysnb Getrlimit(resource int, rlim *Rlimit) (err error) |
29 //sysnb Getuid() (uid int) |
29 //sysnb Getuid() (uid int) |
30 //sys Listen(s int, n int) (err error) |
30 //sys Listen(s int, n int) (err error) |
31 //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 |
31 //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 |
32 //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 |
32 //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 |
|
33 //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) |
33 //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK |
34 //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK |
34 |
35 |
35 func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { |
36 func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { |
36 var ts *Timespec |
37 var ts *Timespec |
37 if timeout != nil { |
38 if timeout != nil { |
39 } |
40 } |
40 return Pselect(nfd, r, w, e, ts, nil) |
41 return Pselect(nfd, r, w, e, ts, nil) |
41 } |
42 } |
42 |
43 |
43 //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) |
44 //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) |
44 //sys Setfsgid(gid int) (err error) |
45 //sys setfsgid(gid int) (prev int, err error) |
45 //sys Setfsuid(uid int) (err error) |
46 //sys setfsuid(uid int) (prev int, err error) |
46 //sysnb Setregid(rgid int, egid int) (err error) |
47 //sysnb Setregid(rgid int, egid int) (err error) |
47 //sysnb Setresgid(rgid int, egid int, sgid int) (err error) |
48 //sysnb Setresgid(rgid int, egid int, sgid int) (err error) |
48 //sysnb Setresuid(ruid int, euid int, suid int) (err error) |
49 //sysnb Setresuid(ruid int, euid int, suid int) (err error) |
49 //sysnb Setrlimit(resource int, rlim *Rlimit) (err error) |
50 //sysnb Setrlimit(resource int, rlim *Rlimit) (err error) |
50 //sysnb Setreuid(ruid int, euid int) (err error) |
51 //sysnb Setreuid(ruid int, euid int) (err error) |
177 |
178 |
178 func (msghdr *Msghdr) SetControllen(length int) { |
179 func (msghdr *Msghdr) SetControllen(length int) { |
179 msghdr.Controllen = uint64(length) |
180 msghdr.Controllen = uint64(length) |
180 } |
181 } |
181 |
182 |
|
183 func (msghdr *Msghdr) SetIovlen(length int) { |
|
184 msghdr.Iovlen = uint64(length) |
|
185 } |
|
186 |
182 func (cmsg *Cmsghdr) SetLen(length int) { |
187 func (cmsg *Cmsghdr) SetLen(length int) { |
183 cmsg.Len = uint64(length) |
188 cmsg.Len = uint64(length) |
184 } |
189 } |
185 |
190 |
186 func InotifyInit() (fd int, err error) { |
191 func InotifyInit() (fd int, err error) { |
189 |
194 |
190 func Dup2(oldfd int, newfd int) (err error) { |
195 func Dup2(oldfd int, newfd int) (err error) { |
191 return Dup3(oldfd, newfd, 0) |
196 return Dup3(oldfd, newfd, 0) |
192 } |
197 } |
193 |
198 |
194 func Pause() (err error) { |
199 func Pause() error { |
195 _, _, e1 := Syscall6(SYS_PPOLL, 0, 0, 0, 0, 0, 0) |
200 _, err := ppoll(nil, 0, nil, nil) |
196 if e1 != 0 { |
201 return err |
197 err = errnoErr(e1) |
|
198 } |
|
199 return |
|
200 } |
202 } |
201 |
203 |
202 func Poll(fds []PollFd, timeout int) (n int, err error) { |
204 func Poll(fds []PollFd, timeout int) (n int, err error) { |
203 var ts *Timespec |
205 var ts *Timespec |
204 if timeout >= 0 { |
206 if timeout >= 0 { |
208 if len(fds) == 0 { |
210 if len(fds) == 0 { |
209 return ppoll(nil, 0, ts, nil) |
211 return ppoll(nil, 0, ts, nil) |
210 } |
212 } |
211 return ppoll(&fds[0], len(fds), ts, nil) |
213 return ppoll(&fds[0], len(fds), ts, nil) |
212 } |
214 } |
|
215 |
|
216 //sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) |
|
217 |
|
218 func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { |
|
219 cmdlineLen := len(cmdline) |
|
220 if cmdlineLen > 0 { |
|
221 // Account for the additional NULL byte added by |
|
222 // BytePtrFromString in kexecFileLoad. The kexec_file_load |
|
223 // syscall expects a NULL-terminated string. |
|
224 cmdlineLen++ |
|
225 } |
|
226 return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) |
|
227 } |