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/*
8Input 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
14package 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.
79struct 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.
137typedef struct termios2 termios_t;
138#else
139typedef struct termios termios_t;
140#endif
141
142enum {
143	sizeofPtr = sizeof(void*),
144};
145
146union 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
155struct 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
161struct 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/bluetooth/bluetooth.h
168#define BDADDR_BREDR           0x00
169#define BDADDR_LE_PUBLIC       0x01
170#define BDADDR_LE_RANDOM       0x02
171
172// copied from /usr/include/bluetooth/l2cap.h
173struct sockaddr_l2 {
174	sa_family_t	l2_family;
175	unsigned short	l2_psm;
176	uint8_t		l2_bdaddr[6];
177	unsigned short	l2_cid;
178	uint8_t		l2_bdaddr_type;
179};
180
181// copied from /usr/include/linux/un.h
182struct my_sockaddr_un {
183	sa_family_t sun_family;
184#if defined(__ARM_EABI__) || defined(__powerpc64__)
185	// on ARM char is by default unsigned
186	signed char sun_path[108];
187#else
188	char sun_path[108];
189#endif
190};
191
192#ifdef __ARM_EABI__
193typedef struct user_regs PtraceRegs;
194#elif defined(__aarch64__)
195typedef struct user_pt_regs PtraceRegs;
196#elif defined(__mips__) || defined(__powerpc64__)
197typedef struct pt_regs PtraceRegs;
198#elif defined(__s390x__)
199typedef struct _user_regs_struct PtraceRegs;
200#elif defined(__sparc__)
201#include <asm/ptrace.h>
202typedef struct pt_regs PtraceRegs;
203#else
204typedef struct user_regs_struct PtraceRegs;
205#endif
206
207#if defined(__s390x__)
208typedef struct _user_psw_struct ptracePsw;
209typedef struct _user_fpregs_struct ptraceFpregs;
210typedef struct _user_per_struct ptracePer;
211#else
212typedef struct {} ptracePsw;
213typedef struct {} ptraceFpregs;
214typedef struct {} ptracePer;
215#endif
216
217// The real epoll_event is a union, and godefs doesn't handle it well.
218struct my_epoll_event {
219	uint32_t events;
220#if defined(__ARM_EABI__) || defined(__aarch64__) || (defined(__mips__) && _MIPS_SIM == _ABIO32)
221	// padding is not specified in linux/eventpoll.h but added to conform to the
222	// alignment requirements of EABI
223	int32_t padFd;
224#elif defined(__powerpc64__) || defined(__s390x__) || defined(__sparc__)
225	int32_t _padFd;
226#endif
227	int32_t fd;
228	int32_t pad;
229};
230
231*/
232import "C"
233
234// Machine characteristics; for internal use.
235
236const (
237	sizeofPtr      = C.sizeofPtr
238	sizeofShort    = C.sizeof_short
239	sizeofInt      = C.sizeof_int
240	sizeofLong     = C.sizeof_long
241	sizeofLongLong = C.sizeof_longlong
242	PathMax        = C.PATH_MAX
243)
244
245// Basic types
246
247type (
248	_C_short     C.short
249	_C_int       C.int
250	_C_long      C.long
251	_C_long_long C.longlong
252)
253
254// Time
255
256type Timespec C.struct_timespec
257
258type Timeval C.struct_timeval
259
260type Timex C.struct_timex
261
262type Time_t C.time_t
263
264type Tms C.struct_tms
265
266type Utimbuf C.struct_utimbuf
267
268// Processes
269
270type Rusage C.struct_rusage
271
272type Rlimit C.struct_rlimit
273
274type _Gid_t C.gid_t
275
276// Files
277
278type Stat_t C.struct_stat
279
280type Statfs_t C.struct_statfs
281
282type StatxTimestamp C.struct_statx_timestamp
283
284type Statx_t C.struct_statx
285
286type Dirent C.struct_dirent
287
288type Fsid C.fsid_t
289
290type Flock_t C.struct_flock
291
292// Filesystem Encryption
293
294type FscryptPolicy C.struct_fscrypt_policy
295
296type FscryptKey C.struct_fscrypt_key
297
298// Structure for Keyctl
299
300type KeyctlDHParams C.struct_keyctl_dh_params
301
302// Advice to Fadvise
303
304const (
305	FADV_NORMAL     = C.POSIX_FADV_NORMAL
306	FADV_RANDOM     = C.POSIX_FADV_RANDOM
307	FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL
308	FADV_WILLNEED   = C.POSIX_FADV_WILLNEED
309	FADV_DONTNEED   = C.POSIX_FADV_DONTNEED
310	FADV_NOREUSE    = C.POSIX_FADV_NOREUSE
311)
312
313// Sockets
314
315type RawSockaddrInet4 C.struct_sockaddr_in
316
317type RawSockaddrInet6 C.struct_sockaddr_in6
318
319type RawSockaddrUnix C.struct_my_sockaddr_un
320
321type RawSockaddrLinklayer C.struct_sockaddr_ll
322
323type RawSockaddrNetlink C.struct_sockaddr_nl
324
325type RawSockaddrHCI C.struct_sockaddr_hci
326
327type RawSockaddrL2 C.struct_sockaddr_l2
328
329type RawSockaddrCAN C.struct_sockaddr_can
330
331type RawSockaddrALG C.struct_sockaddr_alg
332
333type RawSockaddrVM C.struct_sockaddr_vm
334
335type RawSockaddr C.struct_sockaddr
336
337type RawSockaddrAny C.struct_sockaddr_any
338
339type _Socklen C.socklen_t
340
341type Linger C.struct_linger
342
343type Iovec C.struct_iovec
344
345type IPMreq C.struct_ip_mreq
346
347type IPMreqn C.struct_ip_mreqn
348
349type IPv6Mreq C.struct_ipv6_mreq
350
351type PacketMreq C.struct_packet_mreq
352
353type Msghdr C.struct_msghdr
354
355type Cmsghdr C.struct_cmsghdr
356
357type Inet4Pktinfo C.struct_in_pktinfo
358
359type Inet6Pktinfo C.struct_in6_pktinfo
360
361type IPv6MTUInfo C.struct_ip6_mtuinfo
362
363type ICMPv6Filter C.struct_icmp6_filter
364
365type Ucred C.struct_ucred
366
367type TCPInfo C.struct_tcp_info
368
369const (
370	SizeofSockaddrInet4     = C.sizeof_struct_sockaddr_in
371	SizeofSockaddrInet6     = C.sizeof_struct_sockaddr_in6
372	SizeofSockaddrAny       = C.sizeof_struct_sockaddr_any
373	SizeofSockaddrUnix      = C.sizeof_struct_sockaddr_un
374	SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll
375	SizeofSockaddrNetlink   = C.sizeof_struct_sockaddr_nl
376	SizeofSockaddrHCI       = C.sizeof_struct_sockaddr_hci
377	SizeofSockaddrL2        = C.sizeof_struct_sockaddr_l2
378	SizeofSockaddrCAN       = C.sizeof_struct_sockaddr_can
379	SizeofSockaddrALG       = C.sizeof_struct_sockaddr_alg
380	SizeofSockaddrVM        = C.sizeof_struct_sockaddr_vm
381	SizeofLinger            = C.sizeof_struct_linger
382	SizeofIovec             = C.sizeof_struct_iovec
383	SizeofIPMreq            = C.sizeof_struct_ip_mreq
384	SizeofIPMreqn           = C.sizeof_struct_ip_mreqn
385	SizeofIPv6Mreq          = C.sizeof_struct_ipv6_mreq
386	SizeofPacketMreq        = C.sizeof_struct_packet_mreq
387	SizeofMsghdr            = C.sizeof_struct_msghdr
388	SizeofCmsghdr           = C.sizeof_struct_cmsghdr
389	SizeofInet4Pktinfo      = C.sizeof_struct_in_pktinfo
390	SizeofInet6Pktinfo      = C.sizeof_struct_in6_pktinfo
391	SizeofIPv6MTUInfo       = C.sizeof_struct_ip6_mtuinfo
392	SizeofICMPv6Filter      = C.sizeof_struct_icmp6_filter
393	SizeofUcred             = C.sizeof_struct_ucred
394	SizeofTCPInfo           = C.sizeof_struct_tcp_info
395)
396
397// Netlink routing and interface messages
398
399const (
400	IFA_UNSPEC           = C.IFA_UNSPEC
401	IFA_ADDRESS          = C.IFA_ADDRESS
402	IFA_LOCAL            = C.IFA_LOCAL
403	IFA_LABEL            = C.IFA_LABEL
404	IFA_BROADCAST        = C.IFA_BROADCAST
405	IFA_ANYCAST          = C.IFA_ANYCAST
406	IFA_CACHEINFO        = C.IFA_CACHEINFO
407	IFA_MULTICAST        = C.IFA_MULTICAST
408	IFLA_UNSPEC          = C.IFLA_UNSPEC
409	IFLA_ADDRESS         = C.IFLA_ADDRESS
410	IFLA_BROADCAST       = C.IFLA_BROADCAST
411	IFLA_IFNAME          = C.IFLA_IFNAME
412	IFLA_MTU             = C.IFLA_MTU
413	IFLA_LINK            = C.IFLA_LINK
414	IFLA_QDISC           = C.IFLA_QDISC
415	IFLA_STATS           = C.IFLA_STATS
416	IFLA_COST            = C.IFLA_COST
417	IFLA_PRIORITY        = C.IFLA_PRIORITY
418	IFLA_MASTER          = C.IFLA_MASTER
419	IFLA_WIRELESS        = C.IFLA_WIRELESS
420	IFLA_PROTINFO        = C.IFLA_PROTINFO
421	IFLA_TXQLEN          = C.IFLA_TXQLEN
422	IFLA_MAP             = C.IFLA_MAP
423	IFLA_WEIGHT          = C.IFLA_WEIGHT
424	IFLA_OPERSTATE       = C.IFLA_OPERSTATE
425	IFLA_LINKMODE        = C.IFLA_LINKMODE
426	IFLA_LINKINFO        = C.IFLA_LINKINFO
427	IFLA_NET_NS_PID      = C.IFLA_NET_NS_PID
428	IFLA_IFALIAS         = C.IFLA_IFALIAS
429	IFLA_NUM_VF          = C.IFLA_NUM_VF
430	IFLA_VFINFO_LIST     = C.IFLA_VFINFO_LIST
431	IFLA_STATS64         = C.IFLA_STATS64
432	IFLA_VF_PORTS        = C.IFLA_VF_PORTS
433	IFLA_PORT_SELF       = C.IFLA_PORT_SELF
434	IFLA_AF_SPEC         = C.IFLA_AF_SPEC
435	IFLA_GROUP           = C.IFLA_GROUP
436	IFLA_NET_NS_FD       = C.IFLA_NET_NS_FD
437	IFLA_EXT_MASK        = C.IFLA_EXT_MASK
438	IFLA_PROMISCUITY     = C.IFLA_PROMISCUITY
439	IFLA_NUM_TX_QUEUES   = C.IFLA_NUM_TX_QUEUES
440	IFLA_NUM_RX_QUEUES   = C.IFLA_NUM_RX_QUEUES
441	IFLA_CARRIER         = C.IFLA_CARRIER
442	IFLA_PHYS_PORT_ID    = C.IFLA_PHYS_PORT_ID
443	IFLA_CARRIER_CHANGES = C.IFLA_CARRIER_CHANGES
444	IFLA_PHYS_SWITCH_ID  = C.IFLA_PHYS_SWITCH_ID
445	IFLA_LINK_NETNSID    = C.IFLA_LINK_NETNSID
446	IFLA_PHYS_PORT_NAME  = C.IFLA_PHYS_PORT_NAME
447	IFLA_PROTO_DOWN      = C.IFLA_PROTO_DOWN
448	IFLA_GSO_MAX_SEGS    = C.IFLA_GSO_MAX_SEGS
449	IFLA_GSO_MAX_SIZE    = C.IFLA_GSO_MAX_SIZE
450	IFLA_PAD             = C.IFLA_PAD
451	IFLA_XDP             = C.IFLA_XDP
452	IFLA_EVENT           = C.IFLA_EVENT
453	IFLA_NEW_NETNSID     = C.IFLA_NEW_NETNSID
454	IFLA_IF_NETNSID      = C.IFLA_IF_NETNSID
455	IFLA_MAX             = C.IFLA_MAX
456	RT_SCOPE_UNIVERSE    = C.RT_SCOPE_UNIVERSE
457	RT_SCOPE_SITE        = C.RT_SCOPE_SITE
458	RT_SCOPE_LINK        = C.RT_SCOPE_LINK
459	RT_SCOPE_HOST        = C.RT_SCOPE_HOST
460	RT_SCOPE_NOWHERE     = C.RT_SCOPE_NOWHERE
461	RT_TABLE_UNSPEC      = C.RT_TABLE_UNSPEC
462	RT_TABLE_COMPAT      = C.RT_TABLE_COMPAT
463	RT_TABLE_DEFAULT     = C.RT_TABLE_DEFAULT
464	RT_TABLE_MAIN        = C.RT_TABLE_MAIN
465	RT_TABLE_LOCAL       = C.RT_TABLE_LOCAL
466	RT_TABLE_MAX         = C.RT_TABLE_MAX
467	RTA_UNSPEC           = C.RTA_UNSPEC
468	RTA_DST              = C.RTA_DST
469	RTA_SRC              = C.RTA_SRC
470	RTA_IIF              = C.RTA_IIF
471	RTA_OIF              = C.RTA_OIF
472	RTA_GATEWAY          = C.RTA_GATEWAY
473	RTA_PRIORITY         = C.RTA_PRIORITY
474	RTA_PREFSRC          = C.RTA_PREFSRC
475	RTA_METRICS          = C.RTA_METRICS
476	RTA_MULTIPATH        = C.RTA_MULTIPATH
477	RTA_FLOW             = C.RTA_FLOW
478	RTA_CACHEINFO        = C.RTA_CACHEINFO
479	RTA_TABLE            = C.RTA_TABLE
480	RTN_UNSPEC           = C.RTN_UNSPEC
481	RTN_UNICAST          = C.RTN_UNICAST
482	RTN_LOCAL            = C.RTN_LOCAL
483	RTN_BROADCAST        = C.RTN_BROADCAST
484	RTN_ANYCAST          = C.RTN_ANYCAST
485	RTN_MULTICAST        = C.RTN_MULTICAST
486	RTN_BLACKHOLE        = C.RTN_BLACKHOLE
487	RTN_UNREACHABLE      = C.RTN_UNREACHABLE
488	RTN_PROHIBIT         = C.RTN_PROHIBIT
489	RTN_THROW            = C.RTN_THROW
490	RTN_NAT              = C.RTN_NAT
491	RTN_XRESOLVE         = C.RTN_XRESOLVE
492	RTNLGRP_NONE         = C.RTNLGRP_NONE
493	RTNLGRP_LINK         = C.RTNLGRP_LINK
494	RTNLGRP_NOTIFY       = C.RTNLGRP_NOTIFY
495	RTNLGRP_NEIGH        = C.RTNLGRP_NEIGH
496	RTNLGRP_TC           = C.RTNLGRP_TC
497	RTNLGRP_IPV4_IFADDR  = C.RTNLGRP_IPV4_IFADDR
498	RTNLGRP_IPV4_MROUTE  = C.RTNLGRP_IPV4_MROUTE
499	RTNLGRP_IPV4_ROUTE   = C.RTNLGRP_IPV4_ROUTE
500	RTNLGRP_IPV4_RULE    = C.RTNLGRP_IPV4_RULE
501	RTNLGRP_IPV6_IFADDR  = C.RTNLGRP_IPV6_IFADDR
502	RTNLGRP_IPV6_MROUTE  = C.RTNLGRP_IPV6_MROUTE
503	RTNLGRP_IPV6_ROUTE   = C.RTNLGRP_IPV6_ROUTE
504	RTNLGRP_IPV6_IFINFO  = C.RTNLGRP_IPV6_IFINFO
505	RTNLGRP_IPV6_PREFIX  = C.RTNLGRP_IPV6_PREFIX
506	RTNLGRP_IPV6_RULE    = C.RTNLGRP_IPV6_RULE
507	RTNLGRP_ND_USEROPT   = C.RTNLGRP_ND_USEROPT
508	SizeofNlMsghdr       = C.sizeof_struct_nlmsghdr
509	SizeofNlMsgerr       = C.sizeof_struct_nlmsgerr
510	SizeofRtGenmsg       = C.sizeof_struct_rtgenmsg
511	SizeofNlAttr         = C.sizeof_struct_nlattr
512	SizeofRtAttr         = C.sizeof_struct_rtattr
513	SizeofIfInfomsg      = C.sizeof_struct_ifinfomsg
514	SizeofIfAddrmsg      = C.sizeof_struct_ifaddrmsg
515	SizeofRtMsg          = C.sizeof_struct_rtmsg
516	SizeofRtNexthop      = C.sizeof_struct_rtnexthop
517)
518
519type NlMsghdr C.struct_nlmsghdr
520
521type NlMsgerr C.struct_nlmsgerr
522
523type RtGenmsg C.struct_rtgenmsg
524
525type NlAttr C.struct_nlattr
526
527type RtAttr C.struct_rtattr
528
529type IfInfomsg C.struct_ifinfomsg
530
531type IfAddrmsg C.struct_ifaddrmsg
532
533type RtMsg C.struct_rtmsg
534
535type RtNexthop C.struct_rtnexthop
536
537// Linux socket filter
538
539const (
540	SizeofSockFilter = C.sizeof_struct_sock_filter
541	SizeofSockFprog  = C.sizeof_struct_sock_fprog
542)
543
544type SockFilter C.struct_sock_filter
545
546type SockFprog C.struct_sock_fprog
547
548// Inotify
549
550type InotifyEvent C.struct_inotify_event
551
552const SizeofInotifyEvent = C.sizeof_struct_inotify_event
553
554// Ptrace
555
556// Register structures
557type PtraceRegs C.PtraceRegs
558
559// Structures contained in PtraceRegs on s390x (exported by mkpost.go)
560type PtracePsw C.ptracePsw
561
562type PtraceFpregs C.ptraceFpregs
563
564type PtracePer C.ptracePer
565
566// Misc
567
568type FdSet C.fd_set
569
570type Sysinfo_t C.struct_sysinfo
571
572type Utsname C.struct_utsname
573
574type Ustat_t C.struct_ustat
575
576type EpollEvent C.struct_my_epoll_event
577
578const (
579	AT_EMPTY_PATH   = C.AT_EMPTY_PATH
580	AT_FDCWD        = C.AT_FDCWD
581	AT_NO_AUTOMOUNT = C.AT_NO_AUTOMOUNT
582	AT_REMOVEDIR    = C.AT_REMOVEDIR
583
584	AT_STATX_SYNC_AS_STAT = C.AT_STATX_SYNC_AS_STAT
585	AT_STATX_FORCE_SYNC   = C.AT_STATX_FORCE_SYNC
586	AT_STATX_DONT_SYNC    = C.AT_STATX_DONT_SYNC
587
588	AT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW
589	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
590)
591
592type PollFd C.struct_pollfd
593
594const (
595	POLLIN    = C.POLLIN
596	POLLPRI   = C.POLLPRI
597	POLLOUT   = C.POLLOUT
598	POLLRDHUP = C.POLLRDHUP
599	POLLERR   = C.POLLERR
600	POLLHUP   = C.POLLHUP
601	POLLNVAL  = C.POLLNVAL
602)
603
604type Sigset_t C.sigset_t
605
606const RNDGETENTCNT = C.RNDGETENTCNT
607
608const PERF_IOC_FLAG_GROUP = C.PERF_IOC_FLAG_GROUP
609
610// Terminal handling
611
612type Termios C.termios_t
613
614type Winsize C.struct_winsize
615
616// Taskstats and cgroup stats.
617
618type Taskstats C.struct_taskstats
619
620const (
621	TASKSTATS_CMD_UNSPEC                  = C.TASKSTATS_CMD_UNSPEC
622	TASKSTATS_CMD_GET                     = C.TASKSTATS_CMD_GET
623	TASKSTATS_CMD_NEW                     = C.TASKSTATS_CMD_NEW
624	TASKSTATS_TYPE_UNSPEC                 = C.TASKSTATS_TYPE_UNSPEC
625	TASKSTATS_TYPE_PID                    = C.TASKSTATS_TYPE_PID
626	TASKSTATS_TYPE_TGID                   = C.TASKSTATS_TYPE_TGID
627	TASKSTATS_TYPE_STATS                  = C.TASKSTATS_TYPE_STATS
628	TASKSTATS_TYPE_AGGR_PID               = C.TASKSTATS_TYPE_AGGR_PID
629	TASKSTATS_TYPE_AGGR_TGID              = C.TASKSTATS_TYPE_AGGR_TGID
630	TASKSTATS_TYPE_NULL                   = C.TASKSTATS_TYPE_NULL
631	TASKSTATS_CMD_ATTR_UNSPEC             = C.TASKSTATS_CMD_ATTR_UNSPEC
632	TASKSTATS_CMD_ATTR_PID                = C.TASKSTATS_CMD_ATTR_PID
633	TASKSTATS_CMD_ATTR_TGID               = C.TASKSTATS_CMD_ATTR_TGID
634	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = C.TASKSTATS_CMD_ATTR_REGISTER_CPUMASK
635	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = C.TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK
636)
637
638type CGroupStats C.struct_cgroupstats
639
640const (
641	CGROUPSTATS_CMD_UNSPEC        = C.__TASKSTATS_CMD_MAX
642	CGROUPSTATS_CMD_GET           = C.CGROUPSTATS_CMD_GET
643	CGROUPSTATS_CMD_NEW           = C.CGROUPSTATS_CMD_NEW
644	CGROUPSTATS_TYPE_UNSPEC       = C.CGROUPSTATS_TYPE_UNSPEC
645	CGROUPSTATS_TYPE_CGROUP_STATS = C.CGROUPSTATS_TYPE_CGROUP_STATS
646	CGROUPSTATS_CMD_ATTR_UNSPEC   = C.CGROUPSTATS_CMD_ATTR_UNSPEC
647	CGROUPSTATS_CMD_ATTR_FD       = C.CGROUPSTATS_CMD_ATTR_FD
648)
649
650// Generic netlink
651
652type Genlmsghdr C.struct_genlmsghdr
653
654const (
655	CTRL_CMD_UNSPEC            = C.CTRL_CMD_UNSPEC
656	CTRL_CMD_NEWFAMILY         = C.CTRL_CMD_NEWFAMILY
657	CTRL_CMD_DELFAMILY         = C.CTRL_CMD_DELFAMILY
658	CTRL_CMD_GETFAMILY         = C.CTRL_CMD_GETFAMILY
659	CTRL_CMD_NEWOPS            = C.CTRL_CMD_NEWOPS
660	CTRL_CMD_DELOPS            = C.CTRL_CMD_DELOPS
661	CTRL_CMD_GETOPS            = C.CTRL_CMD_GETOPS
662	CTRL_CMD_NEWMCAST_GRP      = C.CTRL_CMD_NEWMCAST_GRP
663	CTRL_CMD_DELMCAST_GRP      = C.CTRL_CMD_DELMCAST_GRP
664	CTRL_CMD_GETMCAST_GRP      = C.CTRL_CMD_GETMCAST_GRP
665	CTRL_ATTR_UNSPEC           = C.CTRL_ATTR_UNSPEC
666	CTRL_ATTR_FAMILY_ID        = C.CTRL_ATTR_FAMILY_ID
667	CTRL_ATTR_FAMILY_NAME      = C.CTRL_ATTR_FAMILY_NAME
668	CTRL_ATTR_VERSION          = C.CTRL_ATTR_VERSION
669	CTRL_ATTR_HDRSIZE          = C.CTRL_ATTR_HDRSIZE
670	CTRL_ATTR_MAXATTR          = C.CTRL_ATTR_MAXATTR
671	CTRL_ATTR_OPS              = C.CTRL_ATTR_OPS
672	CTRL_ATTR_MCAST_GROUPS     = C.CTRL_ATTR_MCAST_GROUPS
673	CTRL_ATTR_OP_UNSPEC        = C.CTRL_ATTR_OP_UNSPEC
674	CTRL_ATTR_OP_ID            = C.CTRL_ATTR_OP_ID
675	CTRL_ATTR_OP_FLAGS         = C.CTRL_ATTR_OP_FLAGS
676	CTRL_ATTR_MCAST_GRP_UNSPEC = C.CTRL_ATTR_MCAST_GRP_UNSPEC
677	CTRL_ATTR_MCAST_GRP_NAME   = C.CTRL_ATTR_MCAST_GRP_NAME
678	CTRL_ATTR_MCAST_GRP_ID     = C.CTRL_ATTR_MCAST_GRP_ID
679)
680
681// CPU affinity
682
683type cpuMask C.__cpu_mask
684
685const (
686	_CPU_SETSIZE = C.__CPU_SETSIZE
687	_NCPUBITS    = C.__NCPUBITS
688)
689
690// Bluetooth
691
692const (
693	BDADDR_BREDR     = C.BDADDR_BREDR
694	BDADDR_LE_PUBLIC = C.BDADDR_LE_PUBLIC
695	BDADDR_LE_RANDOM = C.BDADDR_LE_RANDOM
696)
697