github.com/aayushi-bansal/sys@v0.0.0-20180118120756-90d962a959d8/unix/linux/types.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 README.md
     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 <netinet/in.h>
    24  #include <netinet/tcp.h>
    25  #include <netpacket/packet.h>
    26  #include <poll.h>
    27  #include <sched.h>
    28  #include <signal.h>
    29  #include <stdio.h>
    30  #include <sys/epoll.h>
    31  #include <sys/inotify.h>
    32  #include <sys/ioctl.h>
    33  #include <sys/mman.h>
    34  #include <sys/mount.h>
    35  #include <sys/param.h>
    36  #include <sys/ptrace.h>
    37  #include <sys/resource.h>
    38  #include <sys/select.h>
    39  #include <sys/signal.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/un.h>
    46  #include <sys/user.h>
    47  #include <sys/utsname.h>
    48  #include <sys/wait.h>
    49  #include <linux/filter.h>
    50  #include <linux/icmpv6.h>
    51  #include <linux/keyctl.h>
    52  #include <linux/netlink.h>
    53  #include <linux/perf_event.h>
    54  #include <linux/rtnetlink.h>
    55  #include <linux/stat.h>
    56  #include <asm/termbits.h>
    57  #include <asm/ptrace.h>
    58  #include <time.h>
    59  #include <unistd.h>
    60  #include <ustat.h>
    61  #include <utime.h>
    62  #include <linux/can.h>
    63  #include <linux/if_alg.h>
    64  #include <linux/fs.h>
    65  #include <linux/vm_sockets.h>
    66  #include <linux/random.h>
    67  #include <linux/taskstats.h>
    68  #include <linux/cgroupstats.h>
    69  #include <linux/genetlink.h>
    70  
    71  // On mips64, the glibc stat and kernel stat do not agree
    72  #if (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64)
    73  
    74  // Use the stat defined by the kernel with a few modifications. These are:
    75  //	* The time fields (like st_atime and st_atimensec) use the timespec
    76  //	  struct (like st_atim) for consitancy with the glibc fields.
    77  //	* The padding fields get different names to not break compatibility.
    78  //	* st_blocks is signed, again for compatibility.
    79  struct stat {
    80  	unsigned int		st_dev;
    81  	unsigned int		st_pad1[3]; // Reserved for st_dev expansion
    82  
    83  	unsigned long		st_ino;
    84  
    85  	mode_t			st_mode;
    86  	__u32			st_nlink;
    87  
    88  	uid_t			st_uid;
    89  	gid_t			st_gid;
    90  
    91  	unsigned int		st_rdev;
    92  	unsigned int		st_pad2[3]; // Reserved for st_rdev expansion
    93  
    94  	off_t			st_size;
    95  
    96  	// These are declared as speperate fields in the kernel. Here we use
    97  	// the timespec struct for consistancy with the other stat structs.
    98  	struct timespec		st_atim;
    99  	struct timespec		st_mtim;
   100  	struct timespec		st_ctim;
   101  
   102  	unsigned int		st_blksize;
   103  	unsigned int		st_pad4;
   104  
   105  	long			st_blocks;
   106  };
   107  
   108  // These are needed because we do not include fcntl.h or sys/types.h
   109  #include <linux/fcntl.h>
   110  #include <linux/fadvise.h>
   111  
   112  #else
   113  
   114  // Use the stat defined by glibc
   115  #include <fcntl.h>
   116  #include <sys/types.h>
   117  
   118  #endif
   119  
   120  // These are defined in linux/fcntl.h, but including it globally causes
   121  // conflicts with fcntl.h
   122  #ifndef AT_STATX_SYNC_TYPE
   123  # define AT_STATX_SYNC_TYPE	0x6000	// Type of synchronisation required from statx()
   124  #endif
   125  #ifndef AT_STATX_SYNC_AS_STAT
   126  # define AT_STATX_SYNC_AS_STAT	0x0000	// - Do whatever stat() does
   127  #endif
   128  #ifndef AT_STATX_FORCE_SYNC
   129  # define AT_STATX_FORCE_SYNC	0x2000	// - Force the attributes to be sync'd with the server
   130  #endif
   131  #ifndef AT_STATX_DONT_SYNC
   132  # define AT_STATX_DONT_SYNC	0x4000	// - Don't sync attributes with the server
   133  #endif
   134  
   135  #ifdef TCSETS2
   136  // On systems that have "struct termios2" use this as type Termios.
   137  typedef struct termios2 termios_t;
   138  #else
   139  typedef struct termios termios_t;
   140  #endif
   141  
   142  enum {
   143  	sizeofPtr = sizeof(void*),
   144  };
   145  
   146  union sockaddr_all {
   147  	struct sockaddr s1;	// this one gets used for fields
   148  	struct sockaddr_in s2;	// these pad it out
   149  	struct sockaddr_in6 s3;
   150  	struct sockaddr_un s4;
   151  	struct sockaddr_ll s5;
   152  	struct sockaddr_nl s6;
   153  };
   154  
   155  struct sockaddr_any {
   156  	struct sockaddr addr;
   157  	char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
   158  };
   159  
   160  // copied from /usr/include/bluetooth/hci.h
   161  struct sockaddr_hci {
   162          sa_family_t     hci_family;
   163          unsigned short  hci_dev;
   164          unsigned short  hci_channel;
   165  };;
   166  
   167  // copied from /usr/include/linux/un.h
   168  struct my_sockaddr_un {
   169  	sa_family_t sun_family;
   170  #if defined(__ARM_EABI__) || defined(__powerpc64__)
   171  	// on ARM char is by default unsigned
   172  	signed char sun_path[108];
   173  #else
   174  	char sun_path[108];
   175  #endif
   176  };
   177  
   178  #ifdef __ARM_EABI__
   179  typedef struct user_regs PtraceRegs;
   180  #elif defined(__aarch64__)
   181  typedef struct user_pt_regs PtraceRegs;
   182  #elif defined(__mips__) || defined(__powerpc64__)
   183  typedef struct pt_regs PtraceRegs;
   184  #elif defined(__s390x__)
   185  typedef struct _user_regs_struct PtraceRegs;
   186  #elif defined(__sparc__)
   187  #include <asm/ptrace.h>
   188  typedef struct pt_regs PtraceRegs;
   189  #else
   190  typedef struct user_regs_struct PtraceRegs;
   191  #endif
   192  
   193  #if defined(__s390x__)
   194  typedef struct _user_psw_struct ptracePsw;
   195  typedef struct _user_fpregs_struct ptraceFpregs;
   196  typedef struct _user_per_struct ptracePer;
   197  #else
   198  typedef struct {} ptracePsw;
   199  typedef struct {} ptraceFpregs;
   200  typedef struct {} ptracePer;
   201  #endif
   202  
   203  // The real epoll_event is a union, and godefs doesn't handle it well.
   204  struct my_epoll_event {
   205  	uint32_t events;
   206  #if defined(__ARM_EABI__) || defined(__aarch64__) || (defined(__mips__) && _MIPS_SIM == _ABIO32)
   207  	// padding is not specified in linux/eventpoll.h but added to conform to the
   208  	// alignment requirements of EABI
   209  	int32_t padFd;
   210  #elif defined(__powerpc64__) || defined(__s390x__) || defined(__sparc__)
   211  	int32_t _padFd;
   212  #endif
   213  	int32_t fd;
   214  	int32_t pad;
   215  };
   216  
   217  */
   218  import "C"
   219  
   220  // Machine characteristics; for internal use.
   221  
   222  const (
   223  	sizeofPtr      = C.sizeofPtr
   224  	sizeofShort    = C.sizeof_short
   225  	sizeofInt      = C.sizeof_int
   226  	sizeofLong     = C.sizeof_long
   227  	sizeofLongLong = C.sizeof_longlong
   228  	PathMax        = C.PATH_MAX
   229  )
   230  
   231  // Basic types
   232  
   233  type (
   234  	_C_short     C.short
   235  	_C_int       C.int
   236  	_C_long      C.long
   237  	_C_long_long C.longlong
   238  )
   239  
   240  // Time
   241  
   242  type Timespec C.struct_timespec
   243  
   244  type Timeval C.struct_timeval
   245  
   246  type Timex C.struct_timex
   247  
   248  type Time_t C.time_t
   249  
   250  type Tms C.struct_tms
   251  
   252  type Utimbuf C.struct_utimbuf
   253  
   254  // Processes
   255  
   256  type Rusage C.struct_rusage
   257  
   258  type Rlimit C.struct_rlimit
   259  
   260  type _Gid_t C.gid_t
   261  
   262  // Files
   263  
   264  type Stat_t C.struct_stat
   265  
   266  type Statfs_t C.struct_statfs
   267  
   268  type StatxTimestamp C.struct_statx_timestamp
   269  
   270  type Statx_t C.struct_statx
   271  
   272  type Dirent C.struct_dirent
   273  
   274  type Fsid C.fsid_t
   275  
   276  type Flock_t C.struct_flock
   277  
   278  // Filesystem Encryption
   279  
   280  type FscryptPolicy C.struct_fscrypt_policy
   281  
   282  type FscryptKey C.struct_fscrypt_key
   283  
   284  // Structure for Keyctl
   285  
   286  type KeyctlDHParams C.struct_keyctl_dh_params
   287  
   288  // Advice to Fadvise
   289  
   290  const (
   291  	FADV_NORMAL     = C.POSIX_FADV_NORMAL
   292  	FADV_RANDOM     = C.POSIX_FADV_RANDOM
   293  	FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL
   294  	FADV_WILLNEED   = C.POSIX_FADV_WILLNEED
   295  	FADV_DONTNEED   = C.POSIX_FADV_DONTNEED
   296  	FADV_NOREUSE    = C.POSIX_FADV_NOREUSE
   297  )
   298  
   299  // Sockets
   300  
   301  type RawSockaddrInet4 C.struct_sockaddr_in
   302  
   303  type RawSockaddrInet6 C.struct_sockaddr_in6
   304  
   305  type RawSockaddrUnix C.struct_my_sockaddr_un
   306  
   307  type RawSockaddrLinklayer C.struct_sockaddr_ll
   308  
   309  type RawSockaddrNetlink C.struct_sockaddr_nl
   310  
   311  type RawSockaddrHCI C.struct_sockaddr_hci
   312  
   313  type RawSockaddrCAN C.struct_sockaddr_can
   314  
   315  type RawSockaddrALG C.struct_sockaddr_alg
   316  
   317  type RawSockaddrVM C.struct_sockaddr_vm
   318  
   319  type RawSockaddr C.struct_sockaddr
   320  
   321  type RawSockaddrAny C.struct_sockaddr_any
   322  
   323  type _Socklen C.socklen_t
   324  
   325  type Linger C.struct_linger
   326  
   327  type Iovec C.struct_iovec
   328  
   329  type IPMreq C.struct_ip_mreq
   330  
   331  type IPMreqn C.struct_ip_mreqn
   332  
   333  type IPv6Mreq C.struct_ipv6_mreq
   334  
   335  type PacketMreq C.struct_packet_mreq
   336  
   337  type Msghdr C.struct_msghdr
   338  
   339  type Cmsghdr C.struct_cmsghdr
   340  
   341  type Inet4Pktinfo C.struct_in_pktinfo
   342  
   343  type Inet6Pktinfo C.struct_in6_pktinfo
   344  
   345  type IPv6MTUInfo C.struct_ip6_mtuinfo
   346  
   347  type ICMPv6Filter C.struct_icmp6_filter
   348  
   349  type Ucred C.struct_ucred
   350  
   351  type TCPInfo C.struct_tcp_info
   352  
   353  const (
   354  	SizeofSockaddrInet4     = C.sizeof_struct_sockaddr_in
   355  	SizeofSockaddrInet6     = C.sizeof_struct_sockaddr_in6
   356  	SizeofSockaddrAny       = C.sizeof_struct_sockaddr_any
   357  	SizeofSockaddrUnix      = C.sizeof_struct_sockaddr_un
   358  	SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll
   359  	SizeofSockaddrNetlink   = C.sizeof_struct_sockaddr_nl
   360  	SizeofSockaddrHCI       = C.sizeof_struct_sockaddr_hci
   361  	SizeofSockaddrCAN       = C.sizeof_struct_sockaddr_can
   362  	SizeofSockaddrALG       = C.sizeof_struct_sockaddr_alg
   363  	SizeofSockaddrVM        = C.sizeof_struct_sockaddr_vm
   364  	SizeofLinger            = C.sizeof_struct_linger
   365  	SizeofIovec             = C.sizeof_struct_iovec
   366  	SizeofIPMreq            = C.sizeof_struct_ip_mreq
   367  	SizeofIPMreqn           = C.sizeof_struct_ip_mreqn
   368  	SizeofIPv6Mreq          = C.sizeof_struct_ipv6_mreq
   369  	SizeofPacketMreq        = C.sizeof_struct_packet_mreq
   370  	SizeofMsghdr            = C.sizeof_struct_msghdr
   371  	SizeofCmsghdr           = C.sizeof_struct_cmsghdr
   372  	SizeofInet4Pktinfo      = C.sizeof_struct_in_pktinfo
   373  	SizeofInet6Pktinfo      = C.sizeof_struct_in6_pktinfo
   374  	SizeofIPv6MTUInfo       = C.sizeof_struct_ip6_mtuinfo
   375  	SizeofICMPv6Filter      = C.sizeof_struct_icmp6_filter
   376  	SizeofUcred             = C.sizeof_struct_ucred
   377  	SizeofTCPInfo           = C.sizeof_struct_tcp_info
   378  )
   379  
   380  // Netlink routing and interface messages
   381  
   382  const (
   383  	IFA_UNSPEC          = C.IFA_UNSPEC
   384  	IFA_ADDRESS         = C.IFA_ADDRESS
   385  	IFA_LOCAL           = C.IFA_LOCAL
   386  	IFA_LABEL           = C.IFA_LABEL
   387  	IFA_BROADCAST       = C.IFA_BROADCAST
   388  	IFA_ANYCAST         = C.IFA_ANYCAST
   389  	IFA_CACHEINFO       = C.IFA_CACHEINFO
   390  	IFA_MULTICAST       = C.IFA_MULTICAST
   391  	IFLA_UNSPEC         = C.IFLA_UNSPEC
   392  	IFLA_ADDRESS        = C.IFLA_ADDRESS
   393  	IFLA_BROADCAST      = C.IFLA_BROADCAST
   394  	IFLA_IFNAME         = C.IFLA_IFNAME
   395  	IFLA_MTU            = C.IFLA_MTU
   396  	IFLA_LINK           = C.IFLA_LINK
   397  	IFLA_QDISC          = C.IFLA_QDISC
   398  	IFLA_STATS          = C.IFLA_STATS
   399  	IFLA_COST           = C.IFLA_COST
   400  	IFLA_PRIORITY       = C.IFLA_PRIORITY
   401  	IFLA_MASTER         = C.IFLA_MASTER
   402  	IFLA_WIRELESS       = C.IFLA_WIRELESS
   403  	IFLA_PROTINFO       = C.IFLA_PROTINFO
   404  	IFLA_TXQLEN         = C.IFLA_TXQLEN
   405  	IFLA_MAP            = C.IFLA_MAP
   406  	IFLA_WEIGHT         = C.IFLA_WEIGHT
   407  	IFLA_OPERSTATE      = C.IFLA_OPERSTATE
   408  	IFLA_LINKMODE       = C.IFLA_LINKMODE
   409  	IFLA_LINKINFO       = C.IFLA_LINKINFO
   410  	IFLA_NET_NS_PID     = C.IFLA_NET_NS_PID
   411  	IFLA_IFALIAS        = C.IFLA_IFALIAS
   412  	IFLA_MAX            = C.IFLA_MAX
   413  	RT_SCOPE_UNIVERSE   = C.RT_SCOPE_UNIVERSE
   414  	RT_SCOPE_SITE       = C.RT_SCOPE_SITE
   415  	RT_SCOPE_LINK       = C.RT_SCOPE_LINK
   416  	RT_SCOPE_HOST       = C.RT_SCOPE_HOST
   417  	RT_SCOPE_NOWHERE    = C.RT_SCOPE_NOWHERE
   418  	RT_TABLE_UNSPEC     = C.RT_TABLE_UNSPEC
   419  	RT_TABLE_COMPAT     = C.RT_TABLE_COMPAT
   420  	RT_TABLE_DEFAULT    = C.RT_TABLE_DEFAULT
   421  	RT_TABLE_MAIN       = C.RT_TABLE_MAIN
   422  	RT_TABLE_LOCAL      = C.RT_TABLE_LOCAL
   423  	RT_TABLE_MAX        = C.RT_TABLE_MAX
   424  	RTA_UNSPEC          = C.RTA_UNSPEC
   425  	RTA_DST             = C.RTA_DST
   426  	RTA_SRC             = C.RTA_SRC
   427  	RTA_IIF             = C.RTA_IIF
   428  	RTA_OIF             = C.RTA_OIF
   429  	RTA_GATEWAY         = C.RTA_GATEWAY
   430  	RTA_PRIORITY        = C.RTA_PRIORITY
   431  	RTA_PREFSRC         = C.RTA_PREFSRC
   432  	RTA_METRICS         = C.RTA_METRICS
   433  	RTA_MULTIPATH       = C.RTA_MULTIPATH
   434  	RTA_FLOW            = C.RTA_FLOW
   435  	RTA_CACHEINFO       = C.RTA_CACHEINFO
   436  	RTA_TABLE           = C.RTA_TABLE
   437  	RTN_UNSPEC          = C.RTN_UNSPEC
   438  	RTN_UNICAST         = C.RTN_UNICAST
   439  	RTN_LOCAL           = C.RTN_LOCAL
   440  	RTN_BROADCAST       = C.RTN_BROADCAST
   441  	RTN_ANYCAST         = C.RTN_ANYCAST
   442  	RTN_MULTICAST       = C.RTN_MULTICAST
   443  	RTN_BLACKHOLE       = C.RTN_BLACKHOLE
   444  	RTN_UNREACHABLE     = C.RTN_UNREACHABLE
   445  	RTN_PROHIBIT        = C.RTN_PROHIBIT
   446  	RTN_THROW           = C.RTN_THROW
   447  	RTN_NAT             = C.RTN_NAT
   448  	RTN_XRESOLVE        = C.RTN_XRESOLVE
   449  	RTNLGRP_NONE        = C.RTNLGRP_NONE
   450  	RTNLGRP_LINK        = C.RTNLGRP_LINK
   451  	RTNLGRP_NOTIFY      = C.RTNLGRP_NOTIFY
   452  	RTNLGRP_NEIGH       = C.RTNLGRP_NEIGH
   453  	RTNLGRP_TC          = C.RTNLGRP_TC
   454  	RTNLGRP_IPV4_IFADDR = C.RTNLGRP_IPV4_IFADDR
   455  	RTNLGRP_IPV4_MROUTE = C.RTNLGRP_IPV4_MROUTE
   456  	RTNLGRP_IPV4_ROUTE  = C.RTNLGRP_IPV4_ROUTE
   457  	RTNLGRP_IPV4_RULE   = C.RTNLGRP_IPV4_RULE
   458  	RTNLGRP_IPV6_IFADDR = C.RTNLGRP_IPV6_IFADDR
   459  	RTNLGRP_IPV6_MROUTE = C.RTNLGRP_IPV6_MROUTE
   460  	RTNLGRP_IPV6_ROUTE  = C.RTNLGRP_IPV6_ROUTE
   461  	RTNLGRP_IPV6_IFINFO = C.RTNLGRP_IPV6_IFINFO
   462  	RTNLGRP_IPV6_PREFIX = C.RTNLGRP_IPV6_PREFIX
   463  	RTNLGRP_IPV6_RULE   = C.RTNLGRP_IPV6_RULE
   464  	RTNLGRP_ND_USEROPT  = C.RTNLGRP_ND_USEROPT
   465  	SizeofNlMsghdr      = C.sizeof_struct_nlmsghdr
   466  	SizeofNlMsgerr      = C.sizeof_struct_nlmsgerr
   467  	SizeofRtGenmsg      = C.sizeof_struct_rtgenmsg
   468  	SizeofNlAttr        = C.sizeof_struct_nlattr
   469  	SizeofRtAttr        = C.sizeof_struct_rtattr
   470  	SizeofIfInfomsg     = C.sizeof_struct_ifinfomsg
   471  	SizeofIfAddrmsg     = C.sizeof_struct_ifaddrmsg
   472  	SizeofRtMsg         = C.sizeof_struct_rtmsg
   473  	SizeofRtNexthop     = C.sizeof_struct_rtnexthop
   474  )
   475  
   476  type NlMsghdr C.struct_nlmsghdr
   477  
   478  type NlMsgerr C.struct_nlmsgerr
   479  
   480  type RtGenmsg C.struct_rtgenmsg
   481  
   482  type NlAttr C.struct_nlattr
   483  
   484  type RtAttr C.struct_rtattr
   485  
   486  type IfInfomsg C.struct_ifinfomsg
   487  
   488  type IfAddrmsg C.struct_ifaddrmsg
   489  
   490  type RtMsg C.struct_rtmsg
   491  
   492  type RtNexthop C.struct_rtnexthop
   493  
   494  // Linux socket filter
   495  
   496  const (
   497  	SizeofSockFilter = C.sizeof_struct_sock_filter
   498  	SizeofSockFprog  = C.sizeof_struct_sock_fprog
   499  )
   500  
   501  type SockFilter C.struct_sock_filter
   502  
   503  type SockFprog C.struct_sock_fprog
   504  
   505  // Inotify
   506  
   507  type InotifyEvent C.struct_inotify_event
   508  
   509  const SizeofInotifyEvent = C.sizeof_struct_inotify_event
   510  
   511  // Ptrace
   512  
   513  // Register structures
   514  type PtraceRegs C.PtraceRegs
   515  
   516  // Structures contained in PtraceRegs on s390x (exported by mkpost.go)
   517  type PtracePsw C.ptracePsw
   518  
   519  type PtraceFpregs C.ptraceFpregs
   520  
   521  type PtracePer C.ptracePer
   522  
   523  // Misc
   524  
   525  type FdSet C.fd_set
   526  
   527  type Sysinfo_t C.struct_sysinfo
   528  
   529  type Utsname C.struct_utsname
   530  
   531  type Ustat_t C.struct_ustat
   532  
   533  type EpollEvent C.struct_my_epoll_event
   534  
   535  const (
   536  	AT_EMPTY_PATH   = C.AT_EMPTY_PATH
   537  	AT_FDCWD        = C.AT_FDCWD
   538  	AT_NO_AUTOMOUNT = C.AT_NO_AUTOMOUNT
   539  	AT_REMOVEDIR    = C.AT_REMOVEDIR
   540  
   541  	AT_STATX_SYNC_AS_STAT = C.AT_STATX_SYNC_AS_STAT
   542  	AT_STATX_FORCE_SYNC   = C.AT_STATX_FORCE_SYNC
   543  	AT_STATX_DONT_SYNC    = C.AT_STATX_DONT_SYNC
   544  
   545  	AT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW
   546  	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
   547  )
   548  
   549  type PollFd C.struct_pollfd
   550  
   551  const (
   552  	POLLIN    = C.POLLIN
   553  	POLLPRI   = C.POLLPRI
   554  	POLLOUT   = C.POLLOUT
   555  	POLLRDHUP = C.POLLRDHUP
   556  	POLLERR   = C.POLLERR
   557  	POLLHUP   = C.POLLHUP
   558  	POLLNVAL  = C.POLLNVAL
   559  )
   560  
   561  type Sigset_t C.sigset_t
   562  
   563  const RNDGETENTCNT = C.RNDGETENTCNT
   564  
   565  const PERF_IOC_FLAG_GROUP = C.PERF_IOC_FLAG_GROUP
   566  
   567  // Terminal handling
   568  
   569  type Termios C.termios_t
   570  
   571  type Winsize C.struct_winsize
   572  
   573  // Taskstats and cgroup stats.
   574  
   575  type Taskstats C.struct_taskstats
   576  
   577  const (
   578  	TASKSTATS_CMD_UNSPEC                  = C.TASKSTATS_CMD_UNSPEC
   579  	TASKSTATS_CMD_GET                     = C.TASKSTATS_CMD_GET
   580  	TASKSTATS_CMD_NEW                     = C.TASKSTATS_CMD_NEW
   581  	TASKSTATS_TYPE_UNSPEC                 = C.TASKSTATS_TYPE_UNSPEC
   582  	TASKSTATS_TYPE_PID                    = C.TASKSTATS_TYPE_PID
   583  	TASKSTATS_TYPE_TGID                   = C.TASKSTATS_TYPE_TGID
   584  	TASKSTATS_TYPE_STATS                  = C.TASKSTATS_TYPE_STATS
   585  	TASKSTATS_TYPE_AGGR_PID               = C.TASKSTATS_TYPE_AGGR_PID
   586  	TASKSTATS_TYPE_AGGR_TGID              = C.TASKSTATS_TYPE_AGGR_TGID
   587  	TASKSTATS_TYPE_NULL                   = C.TASKSTATS_TYPE_NULL
   588  	TASKSTATS_CMD_ATTR_UNSPEC             = C.TASKSTATS_CMD_ATTR_UNSPEC
   589  	TASKSTATS_CMD_ATTR_PID                = C.TASKSTATS_CMD_ATTR_PID
   590  	TASKSTATS_CMD_ATTR_TGID               = C.TASKSTATS_CMD_ATTR_TGID
   591  	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = C.TASKSTATS_CMD_ATTR_REGISTER_CPUMASK
   592  	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = C.TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK
   593  )
   594  
   595  type CGroupStats C.struct_cgroupstats
   596  
   597  const (
   598  	CGROUPSTATS_CMD_UNSPEC        = C.__TASKSTATS_CMD_MAX
   599  	CGROUPSTATS_CMD_GET           = C.CGROUPSTATS_CMD_GET
   600  	CGROUPSTATS_CMD_NEW           = C.CGROUPSTATS_CMD_NEW
   601  	CGROUPSTATS_TYPE_UNSPEC       = C.CGROUPSTATS_TYPE_UNSPEC
   602  	CGROUPSTATS_TYPE_CGROUP_STATS = C.CGROUPSTATS_TYPE_CGROUP_STATS
   603  	CGROUPSTATS_CMD_ATTR_UNSPEC   = C.CGROUPSTATS_CMD_ATTR_UNSPEC
   604  	CGROUPSTATS_CMD_ATTR_FD       = C.CGROUPSTATS_CMD_ATTR_FD
   605  )
   606  
   607  // Generic netlink
   608  
   609  type Genlmsghdr C.struct_genlmsghdr
   610  
   611  const (
   612  	CTRL_CMD_UNSPEC            = C.CTRL_CMD_UNSPEC
   613  	CTRL_CMD_NEWFAMILY         = C.CTRL_CMD_NEWFAMILY
   614  	CTRL_CMD_DELFAMILY         = C.CTRL_CMD_DELFAMILY
   615  	CTRL_CMD_GETFAMILY         = C.CTRL_CMD_GETFAMILY
   616  	CTRL_CMD_NEWOPS            = C.CTRL_CMD_NEWOPS
   617  	CTRL_CMD_DELOPS            = C.CTRL_CMD_DELOPS
   618  	CTRL_CMD_GETOPS            = C.CTRL_CMD_GETOPS
   619  	CTRL_CMD_NEWMCAST_GRP      = C.CTRL_CMD_NEWMCAST_GRP
   620  	CTRL_CMD_DELMCAST_GRP      = C.CTRL_CMD_DELMCAST_GRP
   621  	CTRL_CMD_GETMCAST_GRP      = C.CTRL_CMD_GETMCAST_GRP
   622  	CTRL_ATTR_UNSPEC           = C.CTRL_ATTR_UNSPEC
   623  	CTRL_ATTR_FAMILY_ID        = C.CTRL_ATTR_FAMILY_ID
   624  	CTRL_ATTR_FAMILY_NAME      = C.CTRL_ATTR_FAMILY_NAME
   625  	CTRL_ATTR_VERSION          = C.CTRL_ATTR_VERSION
   626  	CTRL_ATTR_HDRSIZE          = C.CTRL_ATTR_HDRSIZE
   627  	CTRL_ATTR_MAXATTR          = C.CTRL_ATTR_MAXATTR
   628  	CTRL_ATTR_OPS              = C.CTRL_ATTR_OPS
   629  	CTRL_ATTR_MCAST_GROUPS     = C.CTRL_ATTR_MCAST_GROUPS
   630  	CTRL_ATTR_OP_UNSPEC        = C.CTRL_ATTR_OP_UNSPEC
   631  	CTRL_ATTR_OP_ID            = C.CTRL_ATTR_OP_ID
   632  	CTRL_ATTR_OP_FLAGS         = C.CTRL_ATTR_OP_FLAGS
   633  	CTRL_ATTR_MCAST_GRP_UNSPEC = C.CTRL_ATTR_MCAST_GRP_UNSPEC
   634  	CTRL_ATTR_MCAST_GRP_NAME   = C.CTRL_ATTR_MCAST_GRP_NAME
   635  	CTRL_ATTR_MCAST_GRP_ID     = C.CTRL_ATTR_MCAST_GRP_ID
   636  )
   637  
   638  // CPU affinity
   639  
   640  type cpuMask C.__cpu_mask
   641  
   642  const (
   643  	_CPU_SETSIZE = C.__CPU_SETSIZE
   644  	_NCPUBITS    = C.__NCPUBITS
   645  )