github.com/juelite/golang.org-x-sys@v0.0.0-20181121071242-7b69e1c5db33/unix/types_linux.go (about) 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. 4 5 // +build ignore 6 7 /* 8 Input to cgo -godefs. See also mkerrors.sh and mkall.sh 9 */ 10 11 // +godefs map struct_in_addr [4]byte /* in_addr */ 12 // +godefs map struct_in6_addr [16]byte /* in6_addr */ 13 14 package unix 15 16 /* 17 #define _LARGEFILE_SOURCE 18 #define _LARGEFILE64_SOURCE 19 #define _FILE_OFFSET_BITS 64 20 #define _GNU_SOURCE 21 22 #include <dirent.h> 23 #include <fcntl.h> 24 #include <netinet/in.h> 25 #include <netinet/tcp.h> 26 #include <netpacket/packet.h> 27 #include <poll.h> 28 #include <signal.h> 29 #include <stdio.h> 30 #include <sys/epoll.h> 31 #include <sys/inotify.h> 32 #include <sys/mman.h> 33 #include <sys/mount.h> 34 #include <sys/param.h> 35 #include <sys/ptrace.h> 36 #include <sys/resource.h> 37 #include <sys/select.h> 38 #include <sys/signal.h> 39 #include <sys/stat.h> 40 #include <sys/statfs.h> 41 #include <sys/sysinfo.h> 42 #include <sys/time.h> 43 #include <sys/times.h> 44 #include <sys/timex.h> 45 #include <sys/types.h> 46 #include <sys/un.h> 47 #include <sys/user.h> 48 #include <sys/utsname.h> 49 #include <sys/wait.h> 50 #include <linux/filter.h> 51 #include <linux/netlink.h> 52 #include <linux/rtnetlink.h> 53 #include <linux/icmpv6.h> 54 #include <asm/termbits.h> 55 #include <time.h> 56 #include <unistd.h> 57 #include <ustat.h> 58 #include <utime.h> 59 #include <bluetooth/bluetooth.h> 60 #include <bluetooth/hci.h> 61 #include <linux/can.h> 62 63 #ifdef TCSETS2 64 // On systems that have "struct termios2" use this as type Termios. 65 typedef struct termios2 termios_t; 66 #else 67 typedef struct termios termios_t; 68 #endif 69 70 enum { 71 sizeofPtr = sizeof(void*), 72 }; 73 74 union sockaddr_all { 75 struct sockaddr s1; // this one gets used for fields 76 struct sockaddr_in s2; // these pad it out 77 struct sockaddr_in6 s3; 78 struct sockaddr_un s4; 79 struct sockaddr_ll s5; 80 struct sockaddr_nl s6; 81 }; 82 83 struct sockaddr_any { 84 struct sockaddr addr; 85 char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; 86 }; 87 88 // copied from /usr/include/linux/un.h 89 struct my_sockaddr_un { 90 sa_family_t sun_family; 91 #if defined(__ARM_EABI__) || defined(__powerpc64__) 92 // on ARM char is by default unsigned 93 signed char sun_path[108]; 94 #else 95 char sun_path[108]; 96 #endif 97 }; 98 99 #ifdef __ARM_EABI__ 100 typedef struct user_regs PtraceRegs; 101 #elif defined(__aarch64__) 102 typedef struct user_pt_regs PtraceRegs; 103 #elif defined(__powerpc64__) 104 typedef struct pt_regs PtraceRegs; 105 #elif defined(__mips__) 106 typedef struct user PtraceRegs; 107 #elif defined(__s390x__) 108 typedef struct _user_regs_struct PtraceRegs; 109 #elif defined(__sparc__) 110 #include <asm/ptrace.h> 111 typedef struct pt_regs PtraceRegs; 112 #else 113 typedef struct user_regs_struct PtraceRegs; 114 #endif 115 116 #if defined(__s390x__) 117 typedef struct _user_psw_struct ptracePsw; 118 typedef struct _user_fpregs_struct ptraceFpregs; 119 typedef struct _user_per_struct ptracePer; 120 #else 121 typedef struct {} ptracePsw; 122 typedef struct {} ptraceFpregs; 123 typedef struct {} ptracePer; 124 #endif 125 126 // The real epoll_event is a union, and godefs doesn't handle it well. 127 struct my_epoll_event { 128 uint32_t events; 129 #if defined(__ARM_EABI__) || defined(__aarch64__) || (defined(__mips__) && _MIPS_SIM == _ABIO32) 130 // padding is not specified in linux/eventpoll.h but added to conform to the 131 // alignment requirements of EABI 132 int32_t padFd; 133 #elif defined(__powerpc64__) || defined(__s390x__) || defined(__sparc__) 134 int32_t _padFd; 135 #endif 136 int32_t fd; 137 int32_t pad; 138 }; 139 140 */ 141 import "C" 142 143 // Machine characteristics; for internal use. 144 145 const ( 146 sizeofPtr = C.sizeofPtr 147 sizeofShort = C.sizeof_short 148 sizeofInt = C.sizeof_int 149 sizeofLong = C.sizeof_long 150 sizeofLongLong = C.sizeof_longlong 151 PathMax = C.PATH_MAX 152 ) 153 154 // Basic types 155 156 type ( 157 _C_short C.short 158 _C_int C.int 159 _C_long C.long 160 _C_long_long C.longlong 161 ) 162 163 // Time 164 165 type Timespec C.struct_timespec 166 167 type Timeval C.struct_timeval 168 169 type Timex C.struct_timex 170 171 type Time_t C.time_t 172 173 type Tms C.struct_tms 174 175 type Utimbuf C.struct_utimbuf 176 177 // Processes 178 179 type Rusage C.struct_rusage 180 181 type Rlimit C.struct_rlimit 182 183 type _Gid_t C.gid_t 184 185 // Files 186 187 type Stat_t C.struct_stat 188 189 type Statfs_t C.struct_statfs 190 191 type Dirent C.struct_dirent 192 193 type Fsid C.fsid_t 194 195 type Flock_t C.struct_flock 196 197 // Advice to Fadvise 198 199 const ( 200 FADV_NORMAL = C.POSIX_FADV_NORMAL 201 FADV_RANDOM = C.POSIX_FADV_RANDOM 202 FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL 203 FADV_WILLNEED = C.POSIX_FADV_WILLNEED 204 FADV_DONTNEED = C.POSIX_FADV_DONTNEED 205 FADV_NOREUSE = C.POSIX_FADV_NOREUSE 206 ) 207 208 // Sockets 209 210 type RawSockaddrInet4 C.struct_sockaddr_in 211 212 type RawSockaddrInet6 C.struct_sockaddr_in6 213 214 type RawSockaddrUnix C.struct_my_sockaddr_un 215 216 type RawSockaddrLinklayer C.struct_sockaddr_ll 217 218 type RawSockaddrNetlink C.struct_sockaddr_nl 219 220 type RawSockaddrHCI C.struct_sockaddr_hci 221 222 type RawSockaddrCAN C.struct_sockaddr_can 223 224 type RawSockaddr C.struct_sockaddr 225 226 type RawSockaddrAny C.struct_sockaddr_any 227 228 type _Socklen C.socklen_t 229 230 type Linger C.struct_linger 231 232 type Iovec C.struct_iovec 233 234 type IPMreq C.struct_ip_mreq 235 236 type IPMreqn C.struct_ip_mreqn 237 238 type IPv6Mreq C.struct_ipv6_mreq 239 240 type Msghdr C.struct_msghdr 241 242 type Cmsghdr C.struct_cmsghdr 243 244 type Inet4Pktinfo C.struct_in_pktinfo 245 246 type Inet6Pktinfo C.struct_in6_pktinfo 247 248 type IPv6MTUInfo C.struct_ip6_mtuinfo 249 250 type ICMPv6Filter C.struct_icmp6_filter 251 252 type Ucred C.struct_ucred 253 254 type TCPInfo C.struct_tcp_info 255 256 const ( 257 SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in 258 SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 259 SizeofSockaddrAny = C.sizeof_struct_sockaddr_any 260 SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un 261 SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll 262 SizeofSockaddrNetlink = C.sizeof_struct_sockaddr_nl 263 SizeofSockaddrHCI = C.sizeof_struct_sockaddr_hci 264 SizeofSockaddrCAN = C.sizeof_struct_sockaddr_can 265 SizeofLinger = C.sizeof_struct_linger 266 SizeofIPMreq = C.sizeof_struct_ip_mreq 267 SizeofIPMreqn = C.sizeof_struct_ip_mreqn 268 SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq 269 SizeofMsghdr = C.sizeof_struct_msghdr 270 SizeofCmsghdr = C.sizeof_struct_cmsghdr 271 SizeofInet4Pktinfo = C.sizeof_struct_in_pktinfo 272 SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo 273 SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo 274 SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter 275 SizeofUcred = C.sizeof_struct_ucred 276 SizeofTCPInfo = C.sizeof_struct_tcp_info 277 ) 278 279 // Netlink routing and interface messages 280 281 const ( 282 IFA_UNSPEC = C.IFA_UNSPEC 283 IFA_ADDRESS = C.IFA_ADDRESS 284 IFA_LOCAL = C.IFA_LOCAL 285 IFA_LABEL = C.IFA_LABEL 286 IFA_BROADCAST = C.IFA_BROADCAST 287 IFA_ANYCAST = C.IFA_ANYCAST 288 IFA_CACHEINFO = C.IFA_CACHEINFO 289 IFA_MULTICAST = C.IFA_MULTICAST 290 IFLA_UNSPEC = C.IFLA_UNSPEC 291 IFLA_ADDRESS = C.IFLA_ADDRESS 292 IFLA_BROADCAST = C.IFLA_BROADCAST 293 IFLA_IFNAME = C.IFLA_IFNAME 294 IFLA_MTU = C.IFLA_MTU 295 IFLA_LINK = C.IFLA_LINK 296 IFLA_QDISC = C.IFLA_QDISC 297 IFLA_STATS = C.IFLA_STATS 298 IFLA_COST = C.IFLA_COST 299 IFLA_PRIORITY = C.IFLA_PRIORITY 300 IFLA_MASTER = C.IFLA_MASTER 301 IFLA_WIRELESS = C.IFLA_WIRELESS 302 IFLA_PROTINFO = C.IFLA_PROTINFO 303 IFLA_TXQLEN = C.IFLA_TXQLEN 304 IFLA_MAP = C.IFLA_MAP 305 IFLA_WEIGHT = C.IFLA_WEIGHT 306 IFLA_OPERSTATE = C.IFLA_OPERSTATE 307 IFLA_LINKMODE = C.IFLA_LINKMODE 308 IFLA_LINKINFO = C.IFLA_LINKINFO 309 IFLA_NET_NS_PID = C.IFLA_NET_NS_PID 310 IFLA_IFALIAS = C.IFLA_IFALIAS 311 IFLA_MAX = C.IFLA_MAX 312 RT_SCOPE_UNIVERSE = C.RT_SCOPE_UNIVERSE 313 RT_SCOPE_SITE = C.RT_SCOPE_SITE 314 RT_SCOPE_LINK = C.RT_SCOPE_LINK 315 RT_SCOPE_HOST = C.RT_SCOPE_HOST 316 RT_SCOPE_NOWHERE = C.RT_SCOPE_NOWHERE 317 RT_TABLE_UNSPEC = C.RT_TABLE_UNSPEC 318 RT_TABLE_COMPAT = C.RT_TABLE_COMPAT 319 RT_TABLE_DEFAULT = C.RT_TABLE_DEFAULT 320 RT_TABLE_MAIN = C.RT_TABLE_MAIN 321 RT_TABLE_LOCAL = C.RT_TABLE_LOCAL 322 RT_TABLE_MAX = C.RT_TABLE_MAX 323 RTA_UNSPEC = C.RTA_UNSPEC 324 RTA_DST = C.RTA_DST 325 RTA_SRC = C.RTA_SRC 326 RTA_IIF = C.RTA_IIF 327 RTA_OIF = C.RTA_OIF 328 RTA_GATEWAY = C.RTA_GATEWAY 329 RTA_PRIORITY = C.RTA_PRIORITY 330 RTA_PREFSRC = C.RTA_PREFSRC 331 RTA_METRICS = C.RTA_METRICS 332 RTA_MULTIPATH = C.RTA_MULTIPATH 333 RTA_FLOW = C.RTA_FLOW 334 RTA_CACHEINFO = C.RTA_CACHEINFO 335 RTA_TABLE = C.RTA_TABLE 336 RTN_UNSPEC = C.RTN_UNSPEC 337 RTN_UNICAST = C.RTN_UNICAST 338 RTN_LOCAL = C.RTN_LOCAL 339 RTN_BROADCAST = C.RTN_BROADCAST 340 RTN_ANYCAST = C.RTN_ANYCAST 341 RTN_MULTICAST = C.RTN_MULTICAST 342 RTN_BLACKHOLE = C.RTN_BLACKHOLE 343 RTN_UNREACHABLE = C.RTN_UNREACHABLE 344 RTN_PROHIBIT = C.RTN_PROHIBIT 345 RTN_THROW = C.RTN_THROW 346 RTN_NAT = C.RTN_NAT 347 RTN_XRESOLVE = C.RTN_XRESOLVE 348 RTNLGRP_NONE = C.RTNLGRP_NONE 349 RTNLGRP_LINK = C.RTNLGRP_LINK 350 RTNLGRP_NOTIFY = C.RTNLGRP_NOTIFY 351 RTNLGRP_NEIGH = C.RTNLGRP_NEIGH 352 RTNLGRP_TC = C.RTNLGRP_TC 353 RTNLGRP_IPV4_IFADDR = C.RTNLGRP_IPV4_IFADDR 354 RTNLGRP_IPV4_MROUTE = C.RTNLGRP_IPV4_MROUTE 355 RTNLGRP_IPV4_ROUTE = C.RTNLGRP_IPV4_ROUTE 356 RTNLGRP_IPV4_RULE = C.RTNLGRP_IPV4_RULE 357 RTNLGRP_IPV6_IFADDR = C.RTNLGRP_IPV6_IFADDR 358 RTNLGRP_IPV6_MROUTE = C.RTNLGRP_IPV6_MROUTE 359 RTNLGRP_IPV6_ROUTE = C.RTNLGRP_IPV6_ROUTE 360 RTNLGRP_IPV6_IFINFO = C.RTNLGRP_IPV6_IFINFO 361 RTNLGRP_IPV6_PREFIX = C.RTNLGRP_IPV6_PREFIX 362 RTNLGRP_IPV6_RULE = C.RTNLGRP_IPV6_RULE 363 RTNLGRP_ND_USEROPT = C.RTNLGRP_ND_USEROPT 364 SizeofNlMsghdr = C.sizeof_struct_nlmsghdr 365 SizeofNlMsgerr = C.sizeof_struct_nlmsgerr 366 SizeofRtGenmsg = C.sizeof_struct_rtgenmsg 367 SizeofNlAttr = C.sizeof_struct_nlattr 368 SizeofRtAttr = C.sizeof_struct_rtattr 369 SizeofIfInfomsg = C.sizeof_struct_ifinfomsg 370 SizeofIfAddrmsg = C.sizeof_struct_ifaddrmsg 371 SizeofRtMsg = C.sizeof_struct_rtmsg 372 SizeofRtNexthop = C.sizeof_struct_rtnexthop 373 ) 374 375 type NlMsghdr C.struct_nlmsghdr 376 377 type NlMsgerr C.struct_nlmsgerr 378 379 type RtGenmsg C.struct_rtgenmsg 380 381 type NlAttr C.struct_nlattr 382 383 type RtAttr C.struct_rtattr 384 385 type IfInfomsg C.struct_ifinfomsg 386 387 type IfAddrmsg C.struct_ifaddrmsg 388 389 type RtMsg C.struct_rtmsg 390 391 type RtNexthop C.struct_rtnexthop 392 393 // Linux socket filter 394 395 const ( 396 SizeofSockFilter = C.sizeof_struct_sock_filter 397 SizeofSockFprog = C.sizeof_struct_sock_fprog 398 ) 399 400 type SockFilter C.struct_sock_filter 401 402 type SockFprog C.struct_sock_fprog 403 404 // Inotify 405 406 type InotifyEvent C.struct_inotify_event 407 408 const SizeofInotifyEvent = C.sizeof_struct_inotify_event 409 410 // Ptrace 411 412 // Register structures 413 type PtraceRegs C.PtraceRegs 414 415 // Structures contained in PtraceRegs on s390x (exported by mkpost.go) 416 type ptracePsw C.ptracePsw 417 418 type ptraceFpregs C.ptraceFpregs 419 420 type ptracePer C.ptracePer 421 422 // Misc 423 424 type FdSet C.fd_set 425 426 type Sysinfo_t C.struct_sysinfo 427 428 type Utsname C.struct_utsname 429 430 type Ustat_t C.struct_ustat 431 432 type EpollEvent C.struct_my_epoll_event 433 434 const ( 435 AT_FDCWD = C.AT_FDCWD 436 AT_REMOVEDIR = C.AT_REMOVEDIR 437 AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW 438 AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW 439 ) 440 441 type PollFd C.struct_pollfd 442 443 const ( 444 POLLIN = C.POLLIN 445 POLLPRI = C.POLLPRI 446 POLLOUT = C.POLLOUT 447 POLLRDHUP = C.POLLRDHUP 448 POLLERR = C.POLLERR 449 POLLHUP = C.POLLHUP 450 POLLNVAL = C.POLLNVAL 451 ) 452 453 type Sigset_t C.sigset_t 454 455 // sysconf information 456 457 const _SC_PAGESIZE = C._SC_PAGESIZE 458 459 // Terminal handling 460 461 type Termios C.termios_t