PageRenderTime 30ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/vendor/golang.org/x/sys/unix/types_linux.go

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