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