108 |
108 |
109 func direntNamlen(buf []byte) (uint64, bool) { |
109 func direntNamlen(buf []byte) (uint64, bool) { |
110 return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) |
110 return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) |
111 } |
111 } |
112 |
112 |
113 //sysnb pipe() (fd1 int, fd2 int, err error) |
|
114 |
|
115 func Pipe(p []int) (err error) { |
113 func Pipe(p []int) (err error) { |
116 if len(p) != 2 { |
114 return Pipe2(p, 0) |
117 return EINVAL |
|
118 } |
|
119 p[0], p[1], err = pipe() |
|
120 return |
|
121 } |
115 } |
122 |
116 |
123 //sysnb pipe2(p *[2]_C_int, flags int) (err error) |
117 //sysnb pipe2(p *[2]_C_int, flags int) (err error) |
124 |
118 |
125 func Pipe2(p []int, flags int) error { |
119 func Pipe2(p []int, flags int) error { |
126 if len(p) != 2 { |
120 if len(p) != 2 { |
127 return EINVAL |
121 return EINVAL |
128 } |
122 } |
129 var pp [2]_C_int |
123 var pp [2]_C_int |
130 err := pipe2(&pp, flags) |
124 err := pipe2(&pp, flags) |
131 p[0] = int(pp[0]) |
125 if err == nil { |
132 p[1] = int(pp[1]) |
126 p[0] = int(pp[0]) |
|
127 p[1] = int(pp[1]) |
|
128 } |
133 return err |
129 return err |
134 } |
130 } |
135 |
131 |
136 //sys Getdents(fd int, buf []byte) (n int, err error) |
132 //sys Getdents(fd int, buf []byte) (n int, err error) |
137 |
133 |
163 //sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD |
159 //sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD |
164 |
160 |
165 // TODO |
161 // TODO |
166 func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { |
162 func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { |
167 return -1, ENOSYS |
163 return -1, ENOSYS |
168 } |
|
169 |
|
170 func setattrlistTimes(path string, times []Timespec, flags int) error { |
|
171 // used on Darwin for UtimesNano |
|
172 return ENOSYS |
|
173 } |
164 } |
174 |
165 |
175 //sys ioctl(fd int, req uint, arg uintptr) (err error) |
166 //sys ioctl(fd int, req uint, arg uintptr) (err error) |
176 |
167 |
177 //sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL |
168 //sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL |
315 //sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) |
306 //sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) |
316 //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) |
307 //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) |
317 //sys Open(path string, mode int, perm uint32) (fd int, err error) |
308 //sys Open(path string, mode int, perm uint32) (fd int, err error) |
318 //sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) |
309 //sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) |
319 //sys Pathconf(path string, name int) (val int, err error) |
310 //sys Pathconf(path string, name int) (val int, err error) |
320 //sys Pread(fd int, p []byte, offset int64) (n int, err error) |
311 //sys pread(fd int, p []byte, offset int64) (n int, err error) |
321 //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) |
312 //sys pwrite(fd int, p []byte, offset int64) (n int, err error) |
322 //sys read(fd int, p []byte) (n int, err error) |
313 //sys read(fd int, p []byte) (n int, err error) |
323 //sys Readlink(path string, buf []byte) (n int, err error) |
314 //sys Readlink(path string, buf []byte) (n int, err error) |
324 //sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) |
315 //sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) |
325 //sys Rename(from string, to string) (err error) |
316 //sys Rename(from string, to string) (err error) |
326 //sys Renameat(fromfd int, from string, tofd int, to string) (err error) |
317 //sys Renameat(fromfd int, from string, tofd int, to string) (err error) |