1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
8 Input to cgo -godefs. See README.md
11 // +godefs map struct_in_addr [4]byte /* in_addr */
12 // +godefs map struct_in6_addr [16]byte /* in6_addr */
17 #define __DARWIN_UNIX03 0
19 #define _DARWIN_USE_64_BIT_INODE
26 #include <mach/mach.h>
27 #include <mach/message.h>
28 #include <sys/event.h>
29 #include <sys/kern_control.h>
31 #include <sys/mount.h>
32 #include <sys/param.h>
33 #include <sys/ptrace.h>
34 #include <sys/resource.h>
35 #include <sys/select.h>
36 #include <sys/signal.h>
37 #include <sys/socket.h>
40 #include <sys/types.h>
43 #include <sys/utsname.h>
47 #include <net/if_dl.h>
48 #include <net/if_var.h>
49 #include <net/route.h>
50 #include <netinet/in.h>
51 #include <netinet/icmp6.h>
52 #include <netinet/tcp.h>
55 sizeofPtr = sizeof(void*),
59 struct sockaddr s1; // this one gets used for fields
60 struct sockaddr_in s2; // these pad it out
61 struct sockaddr_in6 s3;
62 struct sockaddr_un s4;
63 struct sockaddr_dl s5;
68 char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
74 // Machine characteristics
77 SizeofPtr = C.sizeofPtr
78 SizeofShort = C.sizeof_short
79 SizeofInt = C.sizeof_int
80 SizeofLong = C.sizeof_long
81 SizeofLongLong = C.sizeof_longlong
90 _C_long_long C.longlong
95 type Timespec C.struct_timespec
97 type Timeval C.struct_timeval
99 type Timeval32 C.struct_timeval32
103 type Rusage C.struct_rusage
105 type Rlimit C.struct_rlimit
111 type Stat_t C.struct_stat64
113 type Statfs_t C.struct_statfs64
115 type Flock_t C.struct_flock
117 type Fstore_t C.struct_fstore
119 type Radvisory_t C.struct_radvisory
121 type Fbootstraptransfer_t C.struct_fbootstraptransfer
123 type Log2phys_t C.struct_log2phys
125 type Fsid C.struct_fsid
127 type Dirent C.struct_dirent
129 // File system limits
137 type RawSockaddrInet4 C.struct_sockaddr_in
139 type RawSockaddrInet6 C.struct_sockaddr_in6
141 type RawSockaddrUnix C.struct_sockaddr_un
143 type RawSockaddrDatalink C.struct_sockaddr_dl
145 type RawSockaddr C.struct_sockaddr
147 type RawSockaddrAny C.struct_sockaddr_any
149 type RawSockaddrCtl C.struct_sockaddr_ctl
151 type _Socklen C.socklen_t
153 type Linger C.struct_linger
155 type Iovec C.struct_iovec
157 type IPMreq C.struct_ip_mreq
159 type IPv6Mreq C.struct_ipv6_mreq
161 type Msghdr C.struct_msghdr
163 type Cmsghdr C.struct_cmsghdr
165 type Inet4Pktinfo C.struct_in_pktinfo
167 type Inet6Pktinfo C.struct_in6_pktinfo
169 type IPv6MTUInfo C.struct_ip6_mtuinfo
171 type ICMPv6Filter C.struct_icmp6_filter
174 SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in
175 SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
176 SizeofSockaddrAny = C.sizeof_struct_sockaddr_any
177 SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un
178 SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
179 SizeofSockaddrCtl = C.sizeof_struct_sockaddr_ctl
180 SizeofLinger = C.sizeof_struct_linger
181 SizeofIovec = C.sizeof_struct_iovec
182 SizeofIPMreq = C.sizeof_struct_ip_mreq
183 SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
184 SizeofMsghdr = C.sizeof_struct_msghdr
185 SizeofCmsghdr = C.sizeof_struct_cmsghdr
186 SizeofInet4Pktinfo = C.sizeof_struct_in_pktinfo
187 SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo
188 SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo
189 SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
195 PTRACE_TRACEME = C.PT_TRACE_ME
196 PTRACE_CONT = C.PT_CONTINUE
197 PTRACE_KILL = C.PT_KILL
200 // Events (kqueue, kevent)
202 type Kevent_t C.struct_kevent
208 // Routing and interface messages
211 SizeofIfMsghdr = C.sizeof_struct_if_msghdr
212 SizeofIfData = C.sizeof_struct_if_data
213 SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr
214 SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr
215 SizeofIfmaMsghdr2 = C.sizeof_struct_ifma_msghdr2
216 SizeofRtMsghdr = C.sizeof_struct_rt_msghdr
217 SizeofRtMetrics = C.sizeof_struct_rt_metrics
220 type IfMsghdr C.struct_if_msghdr
222 type IfData C.struct_if_data
224 type IfaMsghdr C.struct_ifa_msghdr
226 type IfmaMsghdr C.struct_ifma_msghdr
228 type IfmaMsghdr2 C.struct_ifma_msghdr2
230 type RtMsghdr C.struct_rt_msghdr
232 type RtMetrics C.struct_rt_metrics
234 // Berkeley packet filter
237 SizeofBpfVersion = C.sizeof_struct_bpf_version
238 SizeofBpfStat = C.sizeof_struct_bpf_stat
239 SizeofBpfProgram = C.sizeof_struct_bpf_program
240 SizeofBpfInsn = C.sizeof_struct_bpf_insn
241 SizeofBpfHdr = C.sizeof_struct_bpf_hdr
244 type BpfVersion C.struct_bpf_version
246 type BpfStat C.struct_bpf_stat
248 type BpfProgram C.struct_bpf_program
250 type BpfInsn C.struct_bpf_insn
252 type BpfHdr C.struct_bpf_hdr
256 type Termios C.struct_termios
258 type Winsize C.struct_winsize
260 // fchmodat-like syscalls.
263 AT_FDCWD = C.AT_FDCWD
264 AT_REMOVEDIR = C.AT_REMOVEDIR
265 AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW
266 AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
271 type PollFd C.struct_pollfd
277 POLLNVAL = C.POLLNVAL
280 POLLRDBAND = C.POLLRDBAND
281 POLLRDNORM = C.POLLRDNORM
282 POLLWRBAND = C.POLLWRBAND
283 POLLWRNORM = C.POLLWRNORM
288 type Utsname C.struct_utsname
292 const SizeofClockinfo = C.sizeof_struct_clockinfo
294 type Clockinfo C.struct_clockinfo
298 type CtlInfo C.struct_ctl_info