45 Rcf uint16 |
45 Rcf uint16 |
46 Route [16]uint16 |
46 Route [16]uint16 |
47 raw RawSockaddrDatalink |
47 raw RawSockaddrDatalink |
48 } |
48 } |
49 |
49 |
|
50 func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { |
|
51 return nil, EAFNOSUPPORT |
|
52 } |
|
53 |
50 // Translate "kern.hostname" to []_C_int{0,1,2,3}. |
54 // Translate "kern.hostname" to []_C_int{0,1,2,3}. |
51 func nametomib(name string) (mib []_C_int, err error) { |
55 func nametomib(name string) (mib []_C_int, err error) { |
52 const siz = unsafe.Sizeof(mib[0]) |
56 const siz = unsafe.Sizeof(mib[0]) |
53 |
57 |
54 // NOTE(rsc): It seems strange to set the buffer to have |
58 // NOTE(rsc): It seems strange to set the buffer to have |
89 |
93 |
90 func direntNamlen(buf []byte) (uint64, bool) { |
94 func direntNamlen(buf []byte) (uint64, bool) { |
91 return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) |
95 return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) |
92 } |
96 } |
93 |
97 |
94 //sysnb pipe() (r int, w int, err error) |
98 //sysnb pipe() (r int, w int, err error) |
95 |
99 |
96 func Pipe(p []int) (err error) { |
100 func Pipe(p []int) (err error) { |
97 if len(p) != 2 { |
101 if len(p) != 2 { |
98 return EINVAL |
102 return EINVAL |
99 } |
103 } |
100 p[0], p[1], err = pipe() |
104 p[0], p[1], err = pipe() |
101 return |
105 return |
|
106 } |
|
107 |
|
108 //sysnb pipe2(p *[2]_C_int, flags int) (r int, w int, err error) |
|
109 |
|
110 func Pipe2(p []int, flags int) (err error) { |
|
111 if len(p) != 2 { |
|
112 return EINVAL |
|
113 } |
|
114 var pp [2]_C_int |
|
115 // pipe2 on dragonfly takes an fds array as an argument, but still |
|
116 // returns the file descriptors. |
|
117 p[0], p[1], err = pipe2(&pp, flags) |
|
118 return err |
102 } |
119 } |
103 |
120 |
104 //sys extpread(fd int, p []byte, flags int, offset int64) (n int, err error) |
121 //sys extpread(fd int, p []byte, flags int, offset int64) (n int, err error) |
105 func Pread(fd int, p []byte, offset int64) (n int, err error) { |
122 func Pread(fd int, p []byte, offset int64) (n int, err error) { |
106 return extpread(fd, p, 0, offset) |
123 return extpread(fd, p, 0, offset) |
127 nfd = 0 |
144 nfd = 0 |
128 } |
145 } |
129 return |
146 return |
130 } |
147 } |
131 |
148 |
132 const ImplementsGetwd = true |
|
133 |
|
134 //sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD |
149 //sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD |
135 |
|
136 func Getwd() (string, error) { |
|
137 var buf [PathMax]byte |
|
138 _, err := Getcwd(buf[0:]) |
|
139 if err != nil { |
|
140 return "", err |
|
141 } |
|
142 n := clen(buf[:]) |
|
143 if n < 1 { |
|
144 return "", EINVAL |
|
145 } |
|
146 return string(buf[:n]), nil |
|
147 } |
|
148 |
150 |
149 func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { |
151 func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { |
150 var _p0 unsafe.Pointer |
152 var _p0 unsafe.Pointer |
151 var bufsize uintptr |
153 var bufsize uintptr |
152 if len(buf) > 0 { |
154 if len(buf) > 0 { |
166 return ENOSYS |
168 return ENOSYS |
167 } |
169 } |
168 |
170 |
169 //sys ioctl(fd int, req uint, arg uintptr) (err error) |
171 //sys ioctl(fd int, req uint, arg uintptr) (err error) |
170 |
172 |
171 //sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL |
173 //sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL |
172 |
174 |
173 func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error { |
175 func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error { |
174 err := sysctl(mib, old, oldlen, nil, 0) |
176 err := sysctl(mib, old, oldlen, nil, 0) |
175 if err != nil { |
177 if err != nil { |
176 // Utsname members on Dragonfly are only 32 bytes and |
178 // Utsname members on Dragonfly are only 32 bytes and |
333 //sys Undelete(path string) (err error) |
335 //sys Undelete(path string) (err error) |
334 //sys Unlink(path string) (err error) |
336 //sys Unlink(path string) (err error) |
335 //sys Unlinkat(dirfd int, path string, flags int) (err error) |
337 //sys Unlinkat(dirfd int, path string, flags int) (err error) |
336 //sys Unmount(path string, flags int) (err error) |
338 //sys Unmount(path string, flags int) (err error) |
337 //sys write(fd int, p []byte) (n int, err error) |
339 //sys write(fd int, p []byte) (n int, err error) |
338 //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) |
340 //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) |
339 //sys munmap(addr uintptr, length uintptr) (err error) |
341 //sys munmap(addr uintptr, length uintptr) (err error) |
340 //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ |
342 //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ |
341 //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE |
343 //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE |
342 //sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) |
344 //sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) |
343 //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) |
345 //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) |
344 |
346 |