20
20
//sys open(path string, mode int, perm uint32) (fd int, err error)
21
22
func Open(path string, mode int, perm uint32) (fd int, err error) {
22
23
return open(path, mode|O_LARGEFILE, perm)
25
26
//sys openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
26
28
func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
27
29
return openat(dirfd, path, flags|O_LARGEFILE, mode)
30
32
//sysnb pipe(p *[2]_C_int) (err error)
31
34
func Pipe(p []int) (err error) {
45
//sysnb pipe2(p *[2]_C_int, flags int) (err error)
47
func Pipe2(p []int, flags int) (err error) {
52
err = pipe2(&pp, flags)
42
58
//sys utimes(path string, times *[2]Timeval) (err error)
43
60
func Utimes(path string, tv []Timeval) (err error) {
47
64
return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
67
//sys utimensat(dirfd int, path string, times *[2]Timespec) (err error)
69
func UtimesNano(path string, ts []Timespec) (err error) {
73
err = utimensat(_AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])))
77
// If the utimensat syscall isn't available (utimensat was added to Linux
78
// in 2.6.22, Released, 8 July 2007) then fall back to utimes
80
for i := 0; i < 2; i++ {
82
tv[i].Usec = ts[i].Nsec / 1000
84
return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
50
87
//sys futimesat(dirfd int, path *byte, times *[2]Timeval) (err error)
51
89
func Futimesat(dirfd int, path string, tv []Timeval) (err error) {
55
return futimesat(dirfd, StringBytePtr(path), (*[2]Timeval)(unsafe.Pointer(&tv[0])))
93
pathp, err := BytePtrFromString(path)
97
return futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
58
100
func Futimes(fd int, tv []Timeval) (err error) {
64
106
const ImplementsGetwd = true
66
108
//sys Getcwd(buf []byte) (n int, err error)
67
110
func Getwd() (wd string, err error) {
68
111
var buf [PathMax]byte
69
112
n, err := Getcwd(buf[0:])
175
218
//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)
176
220
func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {
177
221
var status _C_int
178
222
wpid, err = wait4(pid, &status, options, rusage)
252
296
sa.raw.Path[i] = int8(name[i])
254
298
// length is family (uint16), name, NUL.
255
sl := 2 + _Socklen(n) + 1
301
sl += _Socklen(n) + 1
256
303
if sa.raw.Path[0] == '@' {
257
304
sa.raw.Path[0] = 0
258
305
// Don't count trailing NUL for abstract address.
442
func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {
443
var rsa RawSockaddrAny
444
var len _Socklen = SizeofSockaddrAny
445
nfd, err = accept4(fd, &rsa, &len, flags)
449
sa, err = anyToSockaddr(&rsa)
395
457
func Getsockname(fd int) (sa Sockaddr, err error) {
396
458
var rsa RawSockaddrAny
397
459
var len _Socklen = SizeofSockaddrAny
437
499
func Socketpair(domain, typ, proto int) (fd [2]int, err error) {
438
err = socketpair(domain, typ, proto, &fd)
501
err = socketpair(domain, typ, proto, &fdx)
473
540
return &value, err
543
func GetsockoptUcred(fd, level, opt int) (*Ucred, error) {
545
vallen := _Socklen(SizeofUcred)
546
err := getsockopt(fd, level, opt, uintptr(unsafe.Pointer(&value)), &vallen)
476
550
func SetsockoptInt(fd, level, opt int, value int) (err error) {
477
551
var n = int32(value)
478
552
return setsockopt(fd, level, opt, uintptr(unsafe.Pointer(&n)), 4)
512
586
if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {
515
from, err = anyToSockaddr(&rsa)
589
if rsa.Addr.Family != AF_UNSPEC {
590
from, err = anyToSockaddr(&rsa)
731
807
return ptrace(PTRACE_CONT, pid, 0, uintptr(signal))
810
func PtraceSyscall(pid int, signal int) (err error) {
811
return ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal))
734
814
func PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) }
736
816
func PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) }
738
818
func PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) }
740
820
//sys reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error)
741
822
func Reboot(cmd int) (err error) {
742
823
return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "")
779
860
//sys mount(source string, target string, fstype string, flags uintptr, data *byte) (err error)
780
862
func Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {
781
863
// Certain file systems get rather angry and EINVAL if you give
782
864
// them an empty string of data, rather than NULL.
784
866
return mount(source, target, fstype, flags, nil)
786
return mount(source, target, fstype, flags, StringBytePtr(data))
868
datap, err := BytePtrFromString(data)
872
return mount(source, target, fstype, flags, datap)
823
909
//sysnb Getpgrp() (pid int)
824
910
//sysnb Getpid() (pid int)
825
911
//sysnb Getppid() (ppid int)
826
//sysnb Getrlimit(resource int, rlim *Rlimit) (err error)
827
912
//sysnb Getrusage(who int, rusage *Rusage) (err error)
828
913
//sysnb Gettid() (tid int)
914
//sys Getxattr(path string, attr string, dest []byte) (sz int, err error)
829
915
//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error)
830
916
//sysnb InotifyInit() (fd int, err error)
831
917
//sysnb InotifyInit1(flags int) (fd int, err error)
833
919
//sysnb Kill(pid int, sig Signal) (err error)
834
920
//sys Klogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG
835
921
//sys Link(oldpath string, newpath string) (err error)
922
//sys Listxattr(path string, dest []byte) (sz int, err error)
836
923
//sys Mkdir(path string, mode uint32) (err error)
837
924
//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
838
925
//sys Mknod(path string, mode uint32, dev int) (err error)
840
927
//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
841
928
//sys Pause() (err error)
842
929
//sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT
843
//sys Read(fd int, p []byte) (n int, err error)
930
//sysnb prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) = SYS_PRLIMIT64
931
//sys read(fd int, p []byte) (n int, err error)
844
932
//sys Readlink(path string, buf []byte) (n int, err error)
933
//sys Removexattr(path string, attr string) (err error)
845
934
//sys Rename(oldpath string, newpath string) (err error)
846
935
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
847
936
//sys Rmdir(path string) (err error)
848
937
//sys Setdomainname(p []byte) (err error)
849
938
//sys Sethostname(p []byte) (err error)
850
939
//sysnb Setpgid(pid int, pgid int) (err error)
851
//sysnb Setrlimit(resource int, rlim *Rlimit) (err error)
852
940
//sysnb Setsid() (pid int, err error)
853
941
//sysnb Settimeofday(tv *Timeval) (err error)
854
942
//sysnb Setuid(uid int) (err error)
943
//sys Setxattr(path string, attr string, data []byte, flags int) (err error)
855
944
//sys Symlink(oldpath string, newpath string) (err error)
857
946
//sysnb Sysinfo(info *Sysinfo_t) (err error)
866
955
//sys Unshare(flags int) (err error)
867
956
//sys Ustat(dev int, ubuf *Ustat_t) (err error)
868
957
//sys Utime(path string, buf *Utimbuf) (err error)
869
//sys Write(fd int, p []byte) (n int, err error)
958
//sys write(fd int, p []byte) (n int, err error)
870
959
//sys exitThread(code int) (err error) = SYS_EXIT
871
//sys read(fd int, p *byte, np int) (n int, err error)
872
//sys write(fd int, p *byte, np int) (n int, err error)
960
//sys readlen(fd int, p *byte, np int) (n int, err error) = SYS_READ
961
//sys writelen(fd int, p *byte, np int) (n int, err error) = SYS_WRITE
874
963
// mmap varies by architecture; see syscall_linux_*.go.
875
964
//sys munmap(addr uintptr, length uintptr) (err error)