Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 

470 rindas
12 KiB

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