12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841 |
- package linux
- /*
- Represents an error returned by most of syscalls
- */
- Errno :: enum i32 {
- NONE = 0,
- // Errno-base
- EPERM = 1,
- ENOENT = 2,
- ESRCH = 3,
- EINTR = 4,
- EIO = 5,
- ENXIO = 6,
- E2BIG = 7,
- ENOEXEC = 8,
- EBADF = 9,
- ECHILD = 10,
- EAGAIN = 11,
- ENOMEM = 12,
- EACCES = 13,
- EFAULT = 14,
- ENOTBLK = 15,
- EBUSY = 16,
- EEXIST = 17,
- EXDEV = 18,
- ENODEV = 19,
- ENOTDIR = 20,
- EISDIR = 21,
- EINVAL = 22,
- ENFILE = 23,
- EMFILE = 24,
- ENOTTY = 25,
- ETXTBSY = 26,
- EFBIG = 27,
- ENOSPC = 28,
- ESPIPE = 29,
- EROFS = 30,
- EMLINK = 31,
- EPIPE = 32,
- EDOM = 33,
- ERANGE = 34,
- // Linux
- EDEADLK = 35,
- ENAMETOOLONG = 36,
- ENOLCK = 37,
- ENOSYS = 38,
- ENOTEMPTY = 39,
- ELOOP = 40,
- EUNKNOWN_41 = 41,
- ENOMSG = 42,
- EIDRM = 43,
- ECHRNG = 44,
- EL2NSYNC = 45,
- EL3HLT = 46,
- EL3RST = 47,
- ELNRNG = 48,
- EUNATCH = 49,
- ENOCSI = 50,
- EL2HLT = 51,
- EBADE = 52,
- EBADR = 53,
- EXFULL = 54,
- ENOANO = 55,
- EBADRQC = 56,
- EBADSLT = 57,
- EUNKNOWN_58 = 58,
- EBFONT = 59,
- ENOSTR = 60,
- ENODATA = 61,
- ETIME = 62,
- ENOSR = 63,
- ENONET = 64,
- ENOPKG = 65,
- EREMOTE = 66,
- ENOLINK = 67,
- EADV = 68,
- ESRMNT = 69,
- ECOMM = 70,
- EPROTO = 71,
- EMULTIHOP = 72,
- EDOTDOT = 73,
- EBADMSG = 74,
- EOVERFLOW = 75,
- ENOTUNIQ = 76,
- EBADFD = 77,
- EREMCHG = 78,
- ELIBACC = 79,
- ELIBBAD = 80,
- ELIBSCN = 81,
- ELIBMAX = 82,
- ELIBEXEC = 83,
- EILSEQ = 84,
- ERESTART = 85,
- ESTRPIPE = 86,
- EUSERS = 87,
- ENOTSOCK = 88,
- EDESTADDRREQ = 89,
- EMSGSIZE = 90,
- EPROTOTYPE = 91,
- ENOPROTOOPT = 92,
- EPROTONOSUPPORT = 93,
- ESOCKTNOSUPPORT = 94,
- EOPNOTSUPP = 95,
- EPFNOSUPPORT = 96,
- EAFNOSUPPORT = 97,
- EADDRINUSE = 98,
- EADDRNOTAVAIL = 99,
- ENETDOWN = 100,
- ENETUNREACH = 101,
- ENETRESET = 102,
- ECONNABORTED = 103,
- ECONNRESET = 104,
- ENOBUFS = 105,
- EISCONN = 106,
- ENOTCONN = 107,
- ESHUTDOWN = 108,
- ETOOMANYREFS = 109,
- ETIMEDOUT = 110,
- ECONNREFUSED = 111,
- EHOSTDOWN = 112,
- EHOSTUNREACH = 113,
- EALREADY = 114,
- EINPROGRESS = 115,
- ESTALE = 116,
- EUCLEAN = 117,
- ENOTNAM = 118,
- ENAVAIL = 119,
- EISNAM = 120,
- EREMOTEIO = 121,
- EDQUOT = 122,
- ENOMEDIUM = 123,
- EMEDIUMTYPE = 124,
- ECANCELED = 125,
- ENOKEY = 126,
- EKEYEXPIRED = 127,
- EKEYREVOKED = 128,
- EKEYREJECTED = 129,
- EOWNERDEAD = 130,
- ENOTRECOVERABLE = 131,
- ERFKILL = 132,
- EHWPOISON = 133,
- // Errno aliases
- EWOULDBLOCK = EAGAIN,
- EDEADLOCK = EDEADLK,
- }
- /*
- Bits for Open_Flags.
- RDONLY flag is not present, because it has the value of 0, i.e. it is the
- default, unless WRONLY or RDWR is specified.
- */
- when ODIN_ARCH != .arm64 && ODIN_ARCH != .arm32 {
- Open_Flags_Bits :: enum {
- WRONLY = 0,
- RDWR = 1,
- CREAT = 6,
- EXCL = 7,
- NOCTTY = 8,
- TRUNC = 9,
- APPEND = 10,
- NONBLOCK = 11,
- DSYNC = 12,
- ASYNC = 13,
- DIRECT = 14,
- LARGEFILE = 15,
- DIRECTORY = 16,
- NOFOLLOW = 17,
- NOATIME = 18,
- CLOEXEC = 19,
- PATH = 21,
- }
- // https://github.com/torvalds/linux/blob/7367539ad4b0f8f9b396baf02110962333719a48/include/uapi/asm-generic/fcntl.h#L19
- #assert(1 << uint(Open_Flags_Bits.WRONLY) == 0o0000000_1)
- #assert(1 << uint(Open_Flags_Bits.RDWR) == 0o0000000_2)
- #assert(1 << uint(Open_Flags_Bits.CREAT) == 0o00000_100)
- #assert(1 << uint(Open_Flags_Bits.EXCL) == 0o00000_200)
- #assert(1 << uint(Open_Flags_Bits.NOCTTY) == 0o00000_400)
- #assert(1 << uint(Open_Flags_Bits.TRUNC) == 0o0000_1000)
- #assert(1 << uint(Open_Flags_Bits.APPEND) == 0o0000_2000)
- #assert(1 << uint(Open_Flags_Bits.NONBLOCK) == 0o0000_4000)
- #assert(1 << uint(Open_Flags_Bits.DSYNC) == 0o000_10000)
- #assert(1 << uint(Open_Flags_Bits.ASYNC) == 0o000_20000)
- #assert(1 << uint(Open_Flags_Bits.DIRECT) == 0o000_40000)
- #assert(1 << uint(Open_Flags_Bits.LARGEFILE) == 0o00_100000)
- #assert(1 << uint(Open_Flags_Bits.DIRECTORY) == 0o00_200000)
- #assert(1 << uint(Open_Flags_Bits.NOFOLLOW) == 0o00_400000)
- #assert(1 << uint(Open_Flags_Bits.NOATIME) == 0o0_1000000)
- #assert(1 << uint(Open_Flags_Bits.CLOEXEC) == 0o0_2000000)
- #assert(1 << uint(Open_Flags_Bits.PATH) == 0o_10000000)
- } else {
- Open_Flags_Bits :: enum {
- WRONLY = 0,
- RDWR = 1,
- CREAT = 6,
- EXCL = 7,
- NOCTTY = 8,
- TRUNC = 9,
- APPEND = 10,
- NONBLOCK = 11,
- DSYNC = 12,
- ASYNC = 13,
- DIRECTORY = 14,
- NOFOLLOW = 15,
- DIRECT = 16,
- LARGEFILE = 17,
- NOATIME = 18,
- CLOEXEC = 19,
- PATH = 21,
- }
- }
- /*
- Bits for FD_Flags bitset
- */
- FD_Flags_Bits :: enum {
- SYMLINK_NOFOLLOW = 8,
- REMOVEDIR = 9,
- EACCESS = 9,
- SYMLINK_FOLLOW = 10,
- NO_AUTOMOUNT = 11,
- EMPTY_PATH = 12,
- STATX_FORCE_SYNC = 13,
- STATX_DONT_SYNC = 14,
- RECURSIVE = 15,
- }
- /*
- The bits for the Mode bitset.
- */
- Mode_Bits :: enum {
- IXOTH = 0, // 0o0000001
- IWOTH = 1, // 0o0000002
- IROTH = 2, // 0o0000004
- IXGRP = 3, // 0o0000010
- IWGRP = 4, // 0o0000020
- IRGRP = 5, // 0o0000040
- IXUSR = 6, // 0o0000100
- IWUSR = 7, // 0o0000200
- IRUSR = 8, // 0o0000400
- ISVTX = 9, // 0o0001000
- ISGID = 10, // 0o0002000
- ISUID = 11, // 0o0004000
- IFIFO = 12, // 0o0010000
- IFCHR = 13, // 0o0020000
- IFDIR = 14, // 0o0040000
- IFREG = 15, // 0o0100000
- }
- /*
- The bits used by the Statx_Mask bitset
- */
- Statx_Mask_Bits :: enum {
- TYPE = 0,
- MODE = 1,
- NLINK = 2,
- UID = 3,
- GID = 4,
- ATIME = 5,
- MTIME = 6,
- CTIME = 7,
- INO = 8,
- SIZE = 9,
- BLOCKS = 10,
- BTIME = 11,
- MNT_ID = 12,
- DIOALIGN = 13,
- }
- /*
- Bits found in Statx_Attr bitset
- You should not use these directly
- */
- Statx_Attr_Bits :: enum {
- COMPRESSED = 2, // 0x00000004
- IMMUTABLE = 4, // 0x00000010
- APPEND = 5, // 0x00000020
- NODUMP = 6, // 0x00000040
- ENCRYPTED = 11, // 0x00000800
- AUTOMOUNT = 12, // 0x00001000
- MOUNT_ROOT = 13, // 0x00002000
- VERITY = 20, // 0x00100000
- DAX = 21, // 0x00200000
- }
- /*
- Magic bits for filesystems returned by Stat_FS
- */
- FS_Magic :: enum u32 {
- ADFS_SUPER_MAGIC = 0xadf5,
- AFFS_SUPER_MAGIC = 0xadff,
- AFS_SUPER_MAGIC = 0x5346414f,
- ANON_INODE_FS_MAGIC = 0x09041934,
- AUTOFS_SUPER_MAGIC = 0x0187,
- BDEVFS_MAGIC = 0x62646576,
- BEFS_SUPER_MAGIC = 0x42465331,
- BFS_MAGIC = 0x1badface,
- BINFMTFS_MAGIC = 0x42494e4d,
- BPF_FS_MAGIC = 0xcafe4a11,
- BTRFS_SUPER_MAGIC = 0x9123683e,
- BTRFS_TEST_MAGIC = 0x73727279,
- CGROUP_SUPER_MAGIC = 0x27e0eb,
- CGROUP2_SUPER_MAGIC = 0x63677270,
- CIFS_MAGIC_NUMBER = 0xff534d42,
- CODA_SUPER_MAGIC = 0x73757245,
- COH_SUPER_MAGIC = 0x012ff7b7,
- CRAMFS_MAGIC = 0x28cd3d45,
- DEBUGFS_MAGIC = 0x64626720,
- DEVFS_SUPER_MAGIC = 0x1373,
- DEVPTS_SUPER_MAGIC = 0x1cd1,
- ECRYPTFS_SUPER_MAGIC = 0xf15f,
- EFIVARFS_MAGIC = 0xde5e81e4,
- EFS_SUPER_MAGIC = 0x00414a53,
- EXT_SUPER_MAGIC = 0x137d,
- EXT2_OLD_SUPER_MAGIC = 0xef51,
- EXT2_SUPER_MAGIC = 0xef53,
- EXT3_SUPER_MAGIC = 0xef53,
- EXT4_SUPER_MAGIC = 0xef53,
- F2FS_SUPER_MAGIC = 0xf2f52010,
- FUSE_SUPER_MAGIC = 0x65735546,
- FUTEXFS_SUPER_MAGIC = 0xbad1dea,
- HFS_SUPER_MAGIC = 0x4244,
- HOSTFS_SUPER_MAGIC = 0x00c0ffee,
- HPFS_SUPER_MAGIC = 0xf995e849,
- HUGETLBFS_MAGIC = 0x958458f6,
- ISOFS_SUPER_MAGIC = 0x9660,
- JFFS2_SUPER_MAGIC = 0x72b6,
- JFS_SUPER_MAGIC = 0x3153464a,
- MINIX_SUPER_MAGIC = 0x137f,
- MINIX_SUPER_MAGIC2 = 0x138f,
- MINIX2_SUPER_MAGIC = 0x2468,
- MINIX2_SUPER_MAGIC2 = 0x2478,
- MINIX3_SUPER_MAGIC = 0x4d5a,
- MQUEUE_MAGIC = 0x19800202,
- MSDOS_SUPER_MAGIC = 0x4d44,
- MTD_INODE_FS_MAGIC = 0x11307854,
- NCP_SUPER_MAGIC = 0x564c,
- NFS_SUPER_MAGIC = 0x6969,
- NILFS_SUPER_MAGIC = 0x3434,
- NSFS_MAGIC = 0x6e736673,
- NTFS_SB_MAGIC = 0x5346544e,
- OCFS2_SUPER_MAGIC = 0x7461636f,
- OPENPROM_SUPER_MAGIC = 0x9fa1,
- OVERLAYFS_SUPER_MAGIC = 0x794c7630,
- PIPEFS_MAGIC = 0x50495045,
- PROC_SUPER_MAGIC = 0x9fa0,
- PSTOREFS_MAGIC = 0x6165676c,
- QNX4_SUPER_MAGIC = 0x002f,
- QNX6_SUPER_MAGIC = 0x68191122,
- RAMFS_MAGIC = 0x858458f6,
- REISERFS_SUPER_MAGIC = 0x52654973,
- ROMFS_MAGIC = 0x7275,
- SECURITYFS_MAGIC = 0x73636673,
- SELINUX_MAGIC = 0xf97cff8c,
- SMACK_MAGIC = 0x43415d53,
- SMB_SUPER_MAGIC = 0x517b,
- SMB2_MAGIC_NUMBER = 0xfe534d42,
- SOCKFS_MAGIC = 0x534f434b,
- SQUASHFS_MAGIC = 0x73717368,
- SYSFS_MAGIC = 0x62656572,
- SYSV2_SUPER_MAGIC = 0x012ff7b6,
- SYSV4_SUPER_MAGIC = 0x012ff7b5,
- TMPFS_MAGIC = 0x01021994,
- TRACEFS_MAGIC = 0x74726163,
- UDF_SUPER_MAGIC = 0x15013346,
- UFS_MAGIC = 0x00011954,
- USBDEVICE_SUPER_MAGIC = 0x9fa2,
- V9FS_MAGIC = 0x01021997,
- VXFS_SUPER_MAGIC = 0xa501fcf5,
- XENFS_SUPER_MAGIC = 0xabba1974,
- XENIX_SUPER_MAGIC = 0x012ff7b4,
- XFS_SUPER_MAGIC = 0x58465342,
- _XIAFS_SUPER_MAGIC = 0x012fd16d,
- }
- /*
- Bits for FS_Flags bitset
- */
- FS_Flags_Bits :: enum {
- RDONLY = 0,
- NOSUID = 1,
- NODEV = 2,
- NOEXEC = 3,
- SYNCHRONOUS = 4,
- VALID = 5,
- MANDLOCK = 6,
- NOATIME = 10,
- NODIRATIME = 11,
- RELATIME = 12,
- NOSYMFOLLOW = 13,
- }
- Seek_Whence :: enum i16 {
- SET = 0,
- CUR = 1,
- END = 2,
- DATA = 3,
- HOLE = 4,
- }
- /*
- Bits for Close_Range_Flags
- */
- Close_Range_Flags_Bits :: enum {
- CLOEXEC = 2,
- UNSHARE = 1,
- }
- /*
- Bits for Rename_Flags
- */
- Rename_Flags_Bits :: enum {
- EXCHANGE = 1,
- NOREPLACE = 0,
- WHITEOUT = 2,
- }
- /*
- Type of the file in a directory entry
- */
- Dirent_Type :: enum u8 {
- UNKNOWN = 0,
- FIFO = 1,
- CHR = 2,
- DIR = 4,
- BLK = 6,
- REG = 8,
- LNK = 10,
- SOCK = 12,
- WHT = 14,
- }
- /*
- Type of a lock for fcntl(2)
- */
- FLock_Type :: enum i16 {
- RDLCK = 0,
- WRLCK = 1,
- UNLCK = 2,
- }
- /*
- Bits for FD_Notifications
- */
- FD_Notifications_Bits :: enum {
- ACCESS = 0,
- MODIFY = 1,
- CREATE = 2,
- DELETE = 3,
- RENAME = 4,
- ATTRIB = 5,
- MULTISHOT = 31,
- }
- /*
- Bits for seal
- */
- Seal_Bits :: enum {
- SEAL = 0,
- SHRINK = 1,
- GROW = 2,
- WRITE = 3,
- FUTURE_WRITE = 4,
- }
- RW_Hint :: enum u64 {
- WRITE_LIFE_NOT_SET = 0,
- WRITE_LIFE_NONE = 1,
- WRITE_LIFE_SHORT = 2,
- WRITE_LIFE_MEDIUM = 3,
- WRITE_LIFE_LONG = 4,
- WRITE_LIFE_EXTREME = 5,
- }
- FD_Lease :: enum {
- RDLCK = 0,
- WRLCK = 1,
- UNLCK = 2,
- }
- /*
- Kind of owner for FD_Owner
- */
- F_Owner_Type :: enum i32 {
- OWNER_TID = 0,
- OWNER_PID = 1,
- OWNER_PGRP = 2,
- }
- /*
- Command for fcntl(2)
- */
- FCntl_Command :: enum {
- DUPFD = 0,
- GETFD = 1,
- SETFD = 2,
- GETFL = 3,
- SETFL = 4,
- GETLK = 5,
- SETLK = 6,
- SETLKW = 7,
- SETOWN = 8,
- GETOWN = 9,
- SETSIG = 10,
- GETSIG = 11,
- SETOWN_EX = 15,
- GETOWN_EX = 16,
- // OFD_GETLK = 36,
- // OFD_SETLK = 37,
- // OFD_SETLKW = 38,
- SETLEASE = 1024,
- GETLEASE = 1025,
- NOTIFY = 1026,
- DUPFD_CLOEXEC = 1030,
- SETPIPE_SZ = 1031,
- GETPIPE_SZ = 1032,
- ADD_SEALS = 1033,
- GET_SEALS = 1034,
- GET_RW_HINT = 1035,
- SET_RW_HINT = 1036,
- GET_FILE_RW_HINT = 1037,
- SET_FILE_RW_HINT = 1038,
- // F_OK = 0,
- }
- Fd_Poll_Events_Bits :: enum {
- IN = 0,
- PRI = 1,
- OUT = 2,
- ERR = 3,
- HUP = 4,
- NVAL = 5,
- RDNORM = 6,
- RDBAND = 7,
- WRNORM = 8,
- WRBAND = 9,
- MSG = 10,
- REMOVE = 12,
- RDHUP = 13,
- }
- /*
- Bits for Mem_Protection bitfield
- */
- Mem_Protection_Bits :: enum{
- READ = 0,
- WRITE = 1,
- EXEC = 2,
- SEM = 3,
- // platform-specific section start
- ARM64_BTI = 4,
- ARM64_MTE = 5,
- // platform-specific section end
- GROWSDOWN = 24,
- GROWSUP = 25,
- }
- /*
- Bits for Map_Flags
- */
- Map_Flags_Bits :: enum {
- SHARED = 0,
- PRIVATE = 1,
- SHARED_VALIDATE = 2,
- FIXED = 4,
- ANONYMOUS = 5,
- // platform-dependent section start
- X86_32BIT = 6,
- X86_ABOVE4G = 7,
- // platform-dependent section end
- GROWSDOWN = 8,
- DENYWRITE = 11,
- EXECUTABLE = 12,
- LOCKED = 13,
- NORESERVE = 14,
- POPULATE = 15,
- NONBLOCK = 16,
- STACK = 17,
- HUGETLB = 18,
- SYNC = 19,
- FIXED_NOREPLACE = 20,
- UNINITIALIZED = 26,
- }
- /*
- Bits for MLock_Flags
- */
- MLock_Flags_Bits :: enum {
- ONFAULT = 0,
- }
- /*
- Bits for MSync_Flags
- */
- MSync_Flags_Bits :: enum {
- ASYNC = 0,
- INVALIDATE = 1,
- SYNC = 2,
- }
- /*
- Argument for madvice(2)
- */
- MAdvice :: enum {
- NORMAL = 0,
- RANDOM = 1,
- SEQUENTIAL = 2,
- WILLNEED = 3,
- DONTNEED = 4,
- FREE = 8,
- REMOVE = 9,
- DONTFORK = 10,
- DOFORK = 11,
- MERGEABLE = 12,
- UNMERGEABLE = 13,
- HUGEPAGE = 14,
- NOHUGEPAGE = 15,
- DONTDUMP = 16,
- DODUMP = 17,
- WIPEONFORK = 18,
- KEEPONFORK = 19,
- COLD = 20,
- PAGEOUT = 21,
- POPULATE_READ = 22,
- POPULATE_WRITE = 23,
- DONTNEED_LOCKED = 24,
- COLLAPSE = 25,
- HWPOISON = 100,
- SOFT_OFFLINE = 101,
- }
- /*
- Bits for PKey_Access_Rights
- */
- PKey_Access_Bits :: enum {
- DISABLE_ACCESS = 0,
- DISABLE_WRITE = 2,
- }
- /*
- Bits for MRemap_Flags
- */
- MRemap_Flags_Bits :: enum {
- MAYMOVE = 0,
- FIXED = 1,
- DONTUNMAP = 2,
- }
- /*
- Bits for Get_Random_Flags
- */
- Get_Random_Flags_Bits :: enum {
- RANDOM = 0,
- NONBLOCK = 1,
- INSECURE = 2,
- }
- /*
- Bits for Perf_Flags
- */
- Perf_Flags_Bits :: enum {
- FD_NO_GROUP = 0,
- FD_OUTPUT = 1,
- PID_CGROUP = 2,
- FD_CLOEXEC = 3,
- }
- /*
- Union tag for Perf_Event_Attr struct
- */
- Perf_Event_Type :: enum u32 {
- HARDWARE = 0,
- SOFTWARE = 1,
- TRACEPOINT = 2,
- HW_CACHE = 3,
- RAW = 4,
- BREAKPOINT = 5,
- }
- Perf_Event_Flags_Bits :: enum u64 {
- Disabled = 0,
- Inherit = 1,
- Pinned = 2,
- Exclusive = 3,
- Exclude_User = 4,
- Exclude_Kernel = 5,
- Exclude_HV = 6,
- Exclude_Idle = 7,
- Mmap = 8,
- Comm = 9,
- Freq = 10,
- Inherit_Stat = 11,
- Enable_On_Exec = 12,
- Task = 13,
- Watermark = 14,
- Precise_IP_0 = 15,
- Precise_IP_1 = 16,
- Mmap_Data = 17,
- Sample_Id_All = 18,
- Exclude_Host = 19,
- Exclude_Guest = 20,
- Exclude_Callchain_Kernel = 21,
- Exclude_Callchain_User = 22,
- Mmap2 = 23,
- Comm_Exec = 24,
- Use_Clockid = 25,
- Context_Switch = 26,
- Write_Backward = 27,
- Namespaces = 28,
- KSymbol = 29,
- BPF_Event = 30,
- Aux_Output = 31,
- CGroup = 32,
- Text_Poke = 33,
- Build_Id = 34,
- Inherit_Thread = 35,
- Remove_On_Exec = 36,
- Sigtrap = 37,
- }
- Perf_Cap_Flags_Bits :: enum u64 {
- Bit0 = 0,
- Bit0_Is_Deprecated = 1,
- User_Rdpmc = 2,
- User_Time = 3,
- User_Time_Zero = 4,
- User_Time_Short = 5,
- }
- /*
- Specifies the type of the hardware event that you want to get info about
- */
- Perf_Hardware_Id :: enum u64 {
- CPU_CYCLES = 0,
- INSTRUCTIONS = 1,
- CACHE_REFERENCES = 2,
- CACHE_MISSES = 3,
- BRANCH_INSTRUCTIONS = 4,
- BRANCH_MISSES = 5,
- BUS_CYCLES = 6,
- STALLED_CYCLES_FRONTEND = 7,
- STALLED_CYCLES_BACKEND = 8,
- REF_CPU_CYCLES = 9,
- }
- /*
- Specifies the cache for the particular cache event that you want to get info about
- */
- Perf_Hardware_Cache_Id :: enum u64 {
- L1D = 0,
- L1I = 1,
- LL = 2,
- DTLB = 3,
- ITLB = 4,
- BPU = 5,
- NODE = 6,
- }
- /*
- Specifies the cache op that you want to get info about
- */
- Perf_Hardware_Cache_Op_Id :: enum u64 {
- READ = 0,
- WRITE = 1,
- PREFETCH = 2,
- }
- /*
- Specifies the cache operation result that you want to get info about
- */
- Perf_Hardware_Cache_Result_Id :: enum u64 {
- ACCESS = 0,
- MISS = 1,
- }
- /*
- Specifies the particular software event that you want to get info about
- */
- Perf_Software_Id :: enum u64 {
- CPU_CLOCK = 0,
- TASK_CLOCK = 1,
- PAGE_FAULTS = 2,
- CONTEXT_SWITCHES = 3,
- CPU_MIGRATIONS = 4,
- PAGE_FAULTS_MIN = 5,
- PAGE_FAULTS_MAJ = 6,
- ALIGNMENT_FAULTS = 7,
- EMULATION_FAULTS = 8,
- DUMMY = 9,
- BPF_OUTPUT = 10,
- CGROUP_SWITCHES = 11,
- }
- /*
- Specifies which values to include in the sample
- */
- Perf_Event_Sample_Type_Bits :: enum {
- IP = 0,
- TID = 1,
- TIME = 2,
- ADDR = 3,
- READ = 4,
- CALLCHAIN = 5,
- ID = 6,
- CPU = 7,
- PERIOD = 8,
- STREAM_ID = 9,
- RAW = 10,
- BRANCH_STACK = 11,
- REGS_USER = 12,
- STACK_USER = 13,
- WEIGHT = 14,
- DATA_SRC = 15,
- IDENTIFIER = 16,
- TRANSACTION = 17,
- REGS_INTR = 18,
- PHYS_ADDR = 19,
- AUX = 20,
- CGROUP = 21,
- DATA_PAGE_SIZE = 22,
- CODE_PAGE_SIZE = 23,
- WEIGHT_STRUCT = 24,
- }
- /// Describes field sets to include in mmaped page
- Perf_Read_Format_Bits :: enum {
- TOTAL_TIME_ENABLED = 0,
- TOTAL_TIME_RUNNING = 1,
- ID = 2,
- GROUP = 3,
- LOST = 4,
- }
- /*
- Chooses the breakpoint type
- */
- Hardware_Breakpoint_Type :: enum u32 {
- EMPTY = 0,
- R = 1,
- W = 2,
- X = 4,
- RW = R | W,
- INVALID = RW | X,
- }
- /*
- Bits for Branch_Sample_Type
- */
- Branch_Sample_Type_Bits :: enum {
- USER = 0,
- KERNEL = 1,
- HV = 2,
- ANY = 3,
- ANY_CALL = 4,
- ANY_RETURN = 5,
- IND_CALL = 6,
- ABORT_TX = 7,
- IN_TX = 8,
- NO_TX = 9,
- COND = 10,
- CALL_STACK = 11,
- IND_JUMP = 12,
- CALL = 13,
- NO_FLAGS = 14,
- NO_CYCLES = 15,
- TYPE_SAVE = 16,
- HW_INDEX = 17,
- PRIV_SAVE = 18,
- }
- /*
- Represent the type of Id
- */
- Id_Type :: enum uint {
- ALL = 0,
- PID = 1,
- PGID = 2,
- PIDFD = 3,
- }
- /*
- Options for wait syscalls
- */
- Wait_Option :: enum {
- WNOHANG = 0,
- WUNTRACED = 1,
- WSTOPPED = 1,
- WEXITED = 2,
- WCONTINUED = 3,
- WNOWAIT = 24,
- // // For processes created using clone
- __WNOTHREAD = 29,
- __WALL = 30,
- __WCLONE = 31,
- }
- /*
- Bits for flags for pidfd
- */
- Pid_FD_Flags_Bits :: enum {
- NONBLOCK = 11,
- }
- /*
- Priority for process, process group, user
- */
- Priority_Which :: enum i32 {
- PROCESS = 0,
- PGRP = 1,
- USER = 2,
- }
- Signal :: enum i32 {
- // POSIX-defined signals
- SIGINT = 2, // Interactive attention signal.
- SIGILL = 4, // Illegal instruction.
- SIGABRT = 6, // Abnormal termination.
- SIGFPE = 8, // Erroneous arithmetic operation.
- SIGSEGV = 11, // Invalid access to storage.
- SIGTERM = 15, // Termination request.
- // Other POSIX signals
- SIGHUP = 1, // Hangup.
- SIGQUIT = 3, // Quit.
- SIGTRAP = 5, // Trace/breakpoint trap.
- SIGKILL = 9, // Killed.
- SIGPIPE = 13, // Broken pipe.
- SIGALRM = 14, // Alarm clock.
- // Adjustments needed for most linux systems
- SIGSTKFLT = 16, // Stack fault (obsolete).
- SIGPWR = 30, // Power failure imminent.
- // Historical signals specified by POSIX.
- SIGBUS = 7, // Bus error.
- SIGSYS = 31, // Bad system call.
- // New(er) POSIX signals (1003.1-2008, 1003.1-2013).
- SIGURG = 23, // Urgent data is available at a socket.
- SIGSTOP = 19, // Stop, unblockable.
- SIGTSTP = 20, // Keyboard stop.
- SIGCONT = 18, // Continue.
- SIGCHLD = 17, // Child terminated or stopped.
- SIGTTIN = 21, // Background read from control terminal.
- SIGTTOU = 22, // Background write to control terminal.
- SIGPOLL = 29, // Pollable event occurred (System V).
- SIGXFSZ = 25, // File size limit exceeded.
- SIGXCPU = 24, // CPU time limit exceeded.
- SIGVTALRM = 26, // Virtual timer expired.
- SIGPROF = 27, // Profiling timer expired.
- SIGUSR1 = 10, // User-defined signal 1.
- SIGUSR2 = 12, // User-defined signal 2.
- // Nonstandard signals found in all modern POSIX systems (including both BSD and Linux).
- SIGWINCH = 28, // Window size change (4.3 BSD, Sun).
- // Archaic names for compatibility.
- SIGIO = SIGPOLL, // I/O now possible (4.2 BSD).
- SIGIOT = SIGABRT, // IOT instruction, abort() on a PDP-11.
- SIGCLD = SIGCHLD, // Old System V name
- }
- Sig_Mask_Kind :: enum i32 {
- SIG_BLOCK = 0,
- SIG_UNBLOCK = 1,
- SIG_SETMASK = 2,
- }
- Sig_Stack_Flag :: enum i32 {
- DISABLE = 0,
- ONSTACK = 1,
- AUTODISARM = 31,
- }
- Sig_Action_Flag :: enum u32 {
- NOCLDSTOP = 0,
- NOCLDWAIT = 1,
- SIGINFO = 2,
- UNSUPPORTED = 10,
- EXPOSE_TAGBITS = 11,
- RESTORER = 26,
- ONSTACK = 27,
- RESTART = 28,
- NODEFER = 30,
- RESETHAND = 31,
- }
- /*
- Translation of code in Sig_Info for when signo is SIGCHLD
- */
- Sig_Child_Code :: enum {
- NONE,
- EXITED,
- KILLED,
- DUMPED,
- TRAPPED,
- STOPPED,
- CONTINUED,
- }
- /*
- Type of socket to create
- - For TCP you want to use SOCK_STREAM
- - For UDP you want to use SOCK_DGRAM
- Also see `Protocol`
- */
- Socket_Type :: enum {
- STREAM = 1,
- DGRAM = 2,
- RAW = 3,
- RDM = 4,
- SEQPACKET = 5,
- DCCP = 6,
- PACKET = 10,
- }
- /*
- Bits for Socket_FD_Flags
- */
- Socket_FD_Flags_Bits :: enum {
- NONBLOCK = 11,
- CLOEXEC = 19,
- }
- /*
- Protocol family
- */
- Protocol_Family :: enum u16 {
- UNSPEC = 0,
- LOCAL = 1,
- UNIX = LOCAL,
- FILE = LOCAL,
- INET = 2,
- AX25 = 3,
- IPX = 4,
- APPLETALK = 5,
- NETROM = 6,
- BRIDGE = 7,
- ATMPVC = 8,
- X25 = 9,
- INET6 = 10,
- ROSE = 11,
- DECnet = 12,
- NETBEUI = 13,
- SECURITY = 14,
- KEY = 15,
- NETLINK = 16,
- ROUTE = NETLINK,
- PACKET = 17,
- ASH = 18,
- ECONET = 19,
- ATMSVC = 20,
- RDS = 21,
- SNA = 22,
- IRDA = 23,
- PPPOX = 24,
- WANPIPE = 25,
- LLC = 26,
- IB = 27,
- MPLS = 28,
- CAN = 29,
- TIPC = 30,
- BLUETOOTH = 31,
- IUCV = 32,
- RXRPC = 33,
- ISDN = 34,
- PHONET = 35,
- IEEE802154 = 36,
- CAIF = 37,
- ALG = 38,
- NFC = 39,
- VSOCK = 40,
- KCM = 41,
- QIPCRTR = 42,
- SMC = 43,
- XDP = 44,
- MCTP = 45,
- }
- /*
- The protocol number according to IANA protocol number list
- Full list of protocol numbers:
- https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml
- Supported by the OS protocols can be queried by reading:
- /etc/protocols
- */
- Protocol :: enum {
- HOPOPT = 0,
- ICMP = 1,
- IGMP = 2,
- GGP = 3,
- IPv4 = 4,
- ST = 5,
- TCP = 6,
- CBT = 7,
- EGP = 8,
- IGP = 9,
- BBN_RCC_MON = 10,
- NVP_II = 11,
- PUP = 12,
- EMCON = 14,
- XNET = 15,
- CHAOS = 16,
- UDP = 17,
- MUX = 18,
- DCN_MEAS = 19,
- HMP = 20,
- PRM = 21,
- XNS_IDP = 22,
- TRUNK_1 = 23,
- TRUNK_2 = 24,
- LEAF_1 = 25,
- LEAF_2 = 26,
- RDP = 27,
- IRTP = 28,
- ISO_TP4 = 29,
- NETBLT = 30,
- MFE_NSP = 31,
- MERIT_INP = 32,
- DCCP = 33,
- THREE_PC = 34,
- IDPR = 35,
- XTP = 36,
- DDP = 37,
- IDPR_CMTP = 38,
- TP_PlusPlus = 39,
- IL = 40,
- IPv6 = 41,
- SDRP = 42,
- IPv6_Route = 43,
- IPv6_Frag = 44,
- IDRP = 45,
- RSVP = 46,
- GRE = 47,
- DSR = 48,
- BNA = 49,
- ESP = 50,
- AH = 51,
- I_NLSP = 52,
- NARP = 54,
- MOBILE = 55,
- TLSP = 56,
- SKIP = 57,
- IPv6_ICMP = 58,
- IPv6_NoNxt = 59,
- IPv6_Opts = 60,
- CFTP = 62,
- SAT_EXPAK = 64,
- KRYPTOLAN = 65,
- RVD = 66,
- IPPC = 67,
- SAT_MON = 69,
- VISA = 70,
- IPCV = 71,
- CPNX = 72,
- CPHB = 73,
- WSN = 74,
- PVP = 75,
- BR_SAT_MON = 76,
- SUN_ND = 77,
- WB_MON = 78,
- WB_EXPAK = 79,
- ISO_IP = 80,
- VMTP = 81,
- SECURE_VMTP = 82,
- VINES = 83,
- IPTM = 84,
- NSFNET_IGP = 85,
- DGP = 86,
- TCF = 87,
- EIGRP = 88,
- OSPFIGP = 89,
- Sprite_RPC = 90,
- LARP = 91,
- MTP = 92,
- AX_25 = 93,
- IPIP = 94,
- SCC_SP = 96,
- ETHERIP = 97,
- ENCAP = 98,
- GMTP = 100,
- IFMP = 101,
- PNNI = 102,
- PIM = 103,
- ARIS = 104,
- SCPS = 105,
- QNX = 106,
- A_N = 107,
- IPComp = 108,
- SNP = 109,
- Compaq_Peer = 110,
- IPX_in_IP = 111,
- VRRP = 112,
- PGM = 113,
- L2TP = 115,
- DDX = 116,
- IATP = 117,
- STP = 118,
- SRP = 119,
- UTI = 120,
- SMP = 121,
- PTP = 123,
- FIRE = 125,
- CRTP = 126,
- CRUDP = 127,
- SSCOPMCE = 128,
- IPLT = 129,
- SPS = 130,
- PIPE = 131,
- SCTP = 132,
- FC = 133,
- RSVP_E2E_IGNORE = 134,
- UDPLite = 136,
- MPLS_in_IP = 137,
- manet = 138,
- HIP = 139,
- Shim6 = 140,
- WESP = 141,
- ROHC = 142,
- Ethernet = 143,
- AGGFRAG = 144,
- NSH = 145,
- Reserved = 255,
- }
- /*
- API Level for getsockopt(2)/setsockopt(2)
- */
- Socket_API_Level :: enum {
- // Comes from <bits/socket-constants.h>
- SOCKET = 1,
- // Copy-pasted from protocol numbers
- TCP = 6,
- UDP = 17,
- // Comes from <bits/socket.h>
- RAW = 255,
- DECNET = 261,
- X25 = 262,
- PACKET = 263,
- ATM = 264,
- AAL = 265,
- IRDA = 266,
- NETBEUI = 267,
- LLC = 268,
- DCCP = 269,
- NETLINK = 270,
- TIPC = 271,
- RXRPC = 272,
- PPPOL2TP = 273,
- BLUETOOTH = 274,
- PNPIPE = 275,
- RDS = 276,
- IUCV = 277,
- CAIF = 278,
- ALG = 279,
- NFC = 280,
- KCM = 281,
- TLS = 282,
- XDP = 283,
- MPTCP = 284,
- MCTP = 285,
- SMC = 286,
- }
- /*
- If Socket_API_Level == .SOCKET, these are the options
- you can specify in getsockopt(2)/setsockopt(2)
- */
- Socket_Option :: enum {
- DEBUG = 1,
- REUSEADDR = 2,
- TYPE = 3,
- ERROR = 4,
- DONTROUTE = 5,
- BROADCAST = 6,
- SNDBUF = 7,
- RCVBUF = 8,
- SNDBUFFORCE = 32,
- RCVBUFFORCE = 33,
- KEEPALIVE = 9,
- OOBINLINE = 10,
- NO_CHECK = 11,
- PRIORITY = 12,
- LINGER = 13,
- BSDCOMPAT = 14,
- REUSEPORT = 15,
- PASSCRED = 16,
- PEERCRED = 17,
- RCVLOWAT = 18,
- SNDLOWAT = 19,
- RCVTIMEO_OLD = 20,
- SNDTIMEO_OLD = 21,
- SECURITY_AUTHENTICATION = 22,
- SECURITY_ENCRYPTION_TRANSPORT = 23,
- SECURITY_ENCRYPTION_NETWORK = 24,
- BINDTODEVICE = 25,
- ATTACH_FILTER = 26,
- DETACH_FILTER = 27,
- GET_FILTER = ATTACH_FILTER,
- PEERNAME = 28,
- ACCEPTCONN = 30,
- PEERSEC = 31,
- PASSSEC = 34,
- MARK = 36,
- PROTOCOL = 38,
- DOMAIN = 39,
- RXQ_OVFL = 40,
- WIFI_STATUS = 41,
- PEEK_OFF = 42,
- NOFCS = 43,
- LOCK_FILTER = 44,
- SELECT_ERR_QUEUE = 45,
- BUSY_POLL = 46,
- MAX_PACING_RATE = 47,
- BPF_EXTENSIONS = 48,
- INCOMING_CPU = 49,
- ATTACH_BPF = 50,
- DETACH_BPF = DETACH_FILTER,
- ATTACH_REUSEPORT_CBPF = 51,
- ATTACH_REUSEPORT_EBPF = 52,
- CNX_ADVICE = 53,
- TIMESTAMPING_OPT_STATS = 54,
- MEMINFO = 55,
- INCOMING_NAPI_ID = 56,
- COOKIE = 57,
- TIMESTAMPING_PKTINFO = 58,
- PEERGROUPS = 59,
- ZEROCOPY = 60,
- TXTIME = 61,
- BINDTOIFINDEX = 62,
- TIMESTAMP_OLD = 29,
- TIMESTAMPNS_OLD = 35,
- TIMESTAMPING_OLD = 37,
- TIMESTAMP_NEW = 63,
- TIMESTAMPNS_NEW = 64,
- TIMESTAMPING_NEW = 65,
- RCVTIMEO_NEW = 66,
- SNDTIMEO_NEW = 67,
- DETACH_REUSEPORT_BPF = 68,
- PREFER_BUSY_POLL = 69,
- BUSY_POLL_BUDGET = 70,
- NETNS_COOKIE = 71,
- BUF_LOCK = 72,
- RESERVE_MEM = 73,
- TXREHASH = 74,
- RCVMARK = 75,
- TIMESTAMP = TIMESTAMP_OLD when _SOCKET_OPTION_OLD else TIMESTAMP_NEW,
- TIMESTAMPNS = TIMESTAMPNS_OLD when _SOCKET_OPTION_OLD else TIMESTAMPNS_NEW,
- TIMESTAMPING = TIMESTAMPING_OLD when _SOCKET_OPTION_OLD else TIMESTAMPING_NEW,
- RCVTIMEO = RCVTIMEO_OLD when _SOCKET_OPTION_OLD else RCVTIMEO_NEW,
- SNDTIMEO = SNDTIMEO_OLD when _SOCKET_OPTION_OLD else SNDTIMEO_NEW,
- }
- @(private)
- _SOCKET_OPTION_OLD :: size_of(rawptr) == 8 /* || size_of(time_t) == size_of(__kernel_long_t) */
- Socket_UDP_Option :: enum {
- CORK = 1,
- ENCAP = 100,
- NO_CHECK6_TX = 101,
- NO_CHECK6_RX = 102,
- SEGMENT = 103,
- GRO = 104,
- }
- UPD_Encapsulation :: enum {
- ENCAP_ESPINUDP_NON_IKE = 1,
- ENCAP_ESPINUDP = 2,
- ENCAP_L2TPINUDP = 3,
- ENCAP_GTP0 = 4,
- ENCAP_GTP1U = 5,
- }
- Socket_TCP_Option :: enum {
- NODELAY = 1,
- MAXSEG = 2,
- CORK = 3,
- KEEPIDLE = 4,
- KEEPINTVL = 5,
- KEEPCNT = 6,
- SYNCNT = 7,
- LINGER2 = 8,
- DEFER_ACCEPT = 9,
- WINDOW_CLAMP = 10,
- INFO = 11,
- QUICKACK = 12,
- CONGESTION = 13,
- MD5SIG = 14,
- COOKIE_TRANSACTIONS = 15,
- THIN_LINEAR_TIMEOUTS = 16,
- THIN_DUPACK = 17,
- USER_TIMEOUT = 18,
- REPAIR = 19,
- REPAIR_QUEUE = 20,
- QUEUE_SEQ = 21,
- REPAIR_OPTIONS = 22,
- FASTOPEN = 23,
- TIMESTAMP = 24,
- NOTSENT_LOWAT = 25,
- CC_INFO = 26,
- SAVE_SYN = 27,
- SAVED_SYN = 28,
- REPAIR_WINDOW = 29,
- FASTOPEN_CONNECT = 30,
- ULP = 31,
- MD5SIG_EXT = 32,
- FASTOPEN_KEY = 33,
- FASTOPEN_NO_COOKIE = 34,
- ZEROCOPY_RECEIVE = 35,
- INQ = 36,
- CM_INQ = INQ,
- TX_DELAY = 37,
- }
- /*
- Bits for Socket_Msg
- */
- Socket_Msg_Bits :: enum {
- OOB = 0,
- PEEK = 1,
- DONTROUTE = 2,
- TRYHARD = DONTROUTE,
- CTRUNC = 3,
- PROXY = 4,
- TRUNC = 5,
- DONTWAIT = 6,
- EOR = 7,
- WAITALL = 8,
- FIN = 9,
- SYN = 10,
- CONFIRM = 11,
- RST = 12,
- ERRQUEUE = 13,
- NOSIGNAL = 14,
- MORE = 15,
- WAITFORONE = 16,
- BATCH = 18,
- ZEROCOPY = 22,
- FASTOPEN = 29,
- CMSG_CLOEXEC = 30,
- }
- /*
- Argument to shutdown(2)
- */
- Shutdown_How :: enum i32 {
- RD = 0,
- WR = 1,
- RDWR = 2,
- }
- /*
- Second argument to futex(2) syscall
- */
- Futex_Op :: enum u32 {
- WAIT = 0,
- WAKE = 1,
- FD = 2,
- REQUEUE = 3,
- CMP_REQUEUE = 4,
- WAKE_OP = 5,
- LOCK_PI = 6,
- UNLOCK_PI = 7,
- TRYLOCK_PI = 8,
- WAIT_BITSET = 9,
- WAKE_BITSET = 10,
- WAIT_REQUEUE_PI = 11,
- CMP_REQUEUE_PI = 12,
- LOCK_PI2 = 13,
- }
- /*
- Bits for Futex_Flags
- */
- Futex_Flags_Bits :: enum {
- PRIVATE = 7,
- REALTIME = 8,
- }
- /*
- Kind of operation on futex, see FUTEX_WAKE_OP
- */
- Futex_Arg_Op :: enum {
- SET = 0, /* uaddr2 = oparg */
- ADD = 1, /* uaddr2 += oparg */
- OR = 2, /* uaddr2 |= oparg */
- ANDN = 3, /* uaddr2 &= ~oparg */
- XOR = 4, /* uaddr2 ^= oparg */
- PO2_SET = 0, /* uaddr2 = 1<<oparg */
- PO2_ADD = 1, /* uaddr2 += 1<<oparg */
- PO2_OR = 2, /* uaddr2 |= 1<<oparg */
- PO2_ANDN = 3, /* uaddr2 &~= 1<<oparg */
- PO2_XOR = 4, /* uaddr2 ^= 1<<oparg */
- }
- /*
- Kind of comparison operation on futex, see FUTEX_WAKE_OP
- */
- Futex_Cmp_Op :: enum {
- EQ = 0, /* if (oldval == cmparg) wake */
- NE = 1, /* if (oldval != cmparg) wake */
- LT = 2, /* if (oldval < cmparg) wake */
- LE = 3, /* if (oldval <= cmparg) wake */
- GT = 4, /* if (oldval > cmparg) wake */
- GE = 5, /* if (oldval >= cmparg) wake */
- }
- /*
- The kind of resource limits
- */
- RLimit_Kind :: enum i32 {
- CPU = 0,
- FSIZE = 1,
- DATA = 2,
- STACK = 3,
- CORE = 4,
- RSS = 5,
- NOFILE = 7,
- AS = 9,
- NPROC = 6,
- MEMLOCK = 8,
- LOCKS = 10,
- SIGPENDING = 11,
- MSGQUEUE = 12,
- NICE = 13,
- RTPRIO = 14,
- RTTIME = 15,
- NLIMITS = 16,
- }
- /*
- Represents the user of resources
- */
- RUsage_Who :: enum i32 {
- CHILDREN = -1,
- SELF = 0,
- THREAD = 1,
- LWP = THREAD,
- }
- /*
- Bits for Personality_Flags
- */
- UNAME26 :: 17
- ADDR_NO_RANDOMIZE :: 18
- FDPIC_FUNCPTRS :: 19
- MMAP_PAGE_ZERO :: 20
- ADDR_COMPAT_LAYOUT :: 21
- READ_IMPLIES_EXEC :: 22
- ADDR_LIMIT_32BIT :: 23
- SHORT_INODE :: 24
- WHOLE_SECONDS :: 25
- STICKY_TIMEOUTS :: 26
- ADDR_LIMIT_3GB :: 27
- /*
- Personality type
- These go into the bottom 8 bits of the personality value
- */
- PER_LINUX :: 0x0000
- PER_LINUX_32BIT :: 0x0000 | ADDR_LIMIT_32BIT
- PER_LINUX_FDPIC :: 0x0000 | FDPIC_FUNCPTRS
- PER_SVR4 :: 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO
- PER_SVR3 :: 0x0002 | STICKY_TIMEOUTS | SHORT_INODE
- PER_SCOSVR3 :: 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS | SHORT_INODE
- PER_OSR5 :: 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS
- PER_WYSEV386 :: 0x0004 | STICKY_TIMEOUTS | SHORT_INODE
- PER_ISCR4 :: 0x0005 | STICKY_TIMEOUTS
- PER_BSD :: 0x0006
- PER_SUNOS :: 0x0006 | STICKY_TIMEOUTS
- PER_XENIX :: 0x0007 | STICKY_TIMEOUTS | SHORT_INODE
- PER_LINUX32 :: 0x0008
- PER_LINUX32_3GB :: 0x0008 | ADDR_LIMIT_3GB
- PER_IRIX32 :: 0x0009 | STICKY_TIMEOUTS
- PER_IRIXN32 :: 0x000a | STICKY_TIMEOUTS
- PER_IRIX64 :: 0x000b | STICKY_TIMEOUTS
- PER_RISCOS :: 0x000c
- PER_SOLARIS :: 0x000d | STICKY_TIMEOUTS
- PER_UW7 :: 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO
- PER_OSF4 :: 0x000f
- PER_HPUX :: 0x0010
- PER_MASK :: 0x00ff
- /*
- Bits for access modes for shared memory
- */
- IPC_Mode_Bits :: enum {
- WROTH = 1,
- RDOTH = 2,
- WRGRP = 4,
- RDGRP = 5,
- WRUSR = 7,
- RDUSR = 8,
- DEST = 9,
- LOCKED = 10,
- }
- /*
- Shared memory flags bits
- */
- IPC_Flags_Bits :: enum {
- IPC_CREAT = 9,
- IPC_EXCL = 10,
- IPC_NOWAIT = 11,
- // Semaphore
- SEM_UNDO = 9,
- // Shared memory
- SHM_HUGETLB = 11,
- SHM_NORESERVE = 12,
- SHM_RDONLY = 12,
- SHM_RND = 13,
- SHM_REMAP = 14,
- SHM_EXEC = 15,
- // Message queue
- MSG_NOERROR = 12,
- MSG_EXCEPT = 13,
- MSG_COPY = 14,
- }
- /*
- IPC memory commands
- */
- IPC_Cmd :: enum i16 {
- // IPC common
- IPC_RMID = 0,
- IPC_SET = 1,
- IPC_STAT = 2,
- // Shared memory
- SHM_LOCK = 11,
- SHM_UNLOCK = 12,
- SHM_STAT = 13,
- SHM_INFO = 14,
- SHM_STAT_ANY = 15,
- // Semaphore
- GETPID = 11,
- GETVAL = 12,
- GETALL = 13,
- GETNCNT = 14,
- GETZCNT = 15,
- SETVAL = 16,
- SETALL = 17,
- SEM_STAT = 18,
- SEM_INFO = 19,
- SEM_STAT_ANY = 20,
- // Message queue
- MSG_STAT = 11,
- MSG_INFO = 12,
- MSG_STAT_ANY = 13,
- }
- /*
- File locking operation bits
- */
- FLock_Op_Bits :: enum {
- SH = 1,
- EX = 2,
- NB = 4,
- UN = 8,
- }
- /*
- ptrace requests
- */
- PTrace_Request :: enum {
- TRACEME = 0,
- PEEKTEXT = 1,
- PEEKDATA = 2,
- PEEKUSER = 3,
- POKETEXT = 4,
- POKEDATA = 5,
- POKEUSER = 6,
- CONT = 7,
- KILL = 8,
- SINGLESTEP = 9,
- GETREGS = 12,
- SETREGS = 13,
- GETFPREGS = 14,
- SETFPREGS = 15,
- ATTACH = 16,
- DETACH = 17,
- GETFPXREGS = 18,
- SETFPXREGS = 19,
- SYSCALL = 24,
- GET_THREAD_AREA = 25,
- SET_THREAD_AREA = 26,
- ARCH_PRCTL = 30,
- SYSEMU = 31,
- SYSEMU_SINGLESTEP = 32,
- SINGLEBLOCK = 33,
- SETOPTIONS = 0x4200,
- GETEVENTMSG = 0x4201,
- GETSIGINFO = 0x4202,
- SETSIGINFO = 0x4203,
- GETREGSET = 0x4204,
- SETREGSET = 0x4205,
- SEIZE = 0x4206,
- INTERRUPT = 0x4207,
- LISTEN = 0x4208,
- PEEKSIGINFO = 0x4209,
- GETSIGMASK = 0x420a,
- SETSIGMASK = 0x420b,
- SECCOMP_GET_FILTER = 0x420c,
- SECCOMP_GET_METADATA = 0x420d,
- GET_SYSCALL_INFO = 0x420e,
- GET_RSEQ_CONFIGURATION = 0x420f,
- }
- /*
- ptrace options
- */
- PTrace_Options_Bits :: enum {
- TRACESYSGOOD = 0,
- TRACEFORK = 1,
- TRACEVFORK = 2,
- TRACECLONE = 3,
- TRACEEXEC = 4,
- TRACEVFORKDONE = 5,
- TRACEEXIT = 6,
- TRACESECCOMP = 7,
- EXITKILL = 20,
- SUSPEND_SECCOMP = 21,
- }
- /*
- ptrace event codes.
- */
- PTrace_Event_Code :: enum {
- EVENT_FORK = 1,
- EVENT_VFORK = 2,
- EVENT_CLONE = 3,
- EVENT_EXEC = 4,
- EVENT_VFORK_DONE = 5,
- EVENT_EXIT = 6,
- EVENT_SECCOMP = 7,
- EVENT_STOP = 128,
- }
- /*
- ptrace's get syscall info operation.
- */
- PTrace_Get_Syscall_Info_Op :: enum u8 {
- NONE = 0,
- ENTRY = 1,
- EXIT = 2,
- SECCOMP = 3,
- }
- /*
- ptrace's PEEKSIGINFO flags bits
- */
- PTrace_Peek_Sig_Info_Flags_Bits :: enum {
- SHARED = 0,
- }
- /*
- Syslog actions.
- */
- Syslog_Action :: enum i32 {
- CLOSE = 0,
- OPEN = 1,
- READ = 2,
- READ_ALL = 3,
- READ_CLEAR = 4,
- CLEAR = 5,
- CONSOLE_OFF = 6,
- CONSOLE_ON = 7,
- CONSOLE_LEVEL = 8,
- SIZE_UNREAD = 9,
- SIZE_BUFFER = 10,
- }
- /*
- Bits for splice flags.
- */
- Splice_Flags_Bits :: enum {
- MOVE = 0x01,
- NONBLOCK = 0x02,
- MORE = 0x04,
- GIFT = 0x08,
- }
- /*
- Clock IDs for various system clocks.
- */
- Clock_Id :: enum {
- REALTIME = 0,
- MONOTONIC = 1,
- PROCESS_CPUTIME_ID = 2,
- THREAD_CPUTIME_ID = 3,
- MONOTONIC_RAW = 4,
- REALTIME_COARSE = 5,
- MONOTONIC_COARSE = 6,
- BOOTTIME = 7,
- REALTIME_ALARM = 8,
- BOOTTIME_ALARM = 9,
- }
- /*
- Bits for POSIX interval timer flags.
- */
- ITimer_Flags_Bits :: enum {
- ABSTIME = 1,
- }
- /*
- Bits for epoll_create(2) flags.
- */
- EPoll_Flags_Bits :: enum {
- FDCLOEXEC = 19,
- }
- EPoll_Event_Kind :: enum u32 {
- IN = 0x001,
- PRI = 0x002,
- OUT = 0x004,
- RDNORM = 0x040,
- RDBAND = 0x080,
- WRNORM = 0x100,
- WRBAND = 0x200,
- MSG = 0x400,
- ERR = 0x008,
- HUP = 0x010,
- RDHUP = 0x2000,
- EXCLUSIVE = 1<<28,
- WAKEUP = 1<<29,
- ONESHOT = 1<<30,
- ET = 1<<31,
- }
- EPoll_Ctl_Opcode :: enum i32 {
- ADD = 1,
- DEL = 2,
- MOD = 3,
- }
- /*
- Bits for execveat(2) flags.
- */
- Execveat_Flags_Bits :: enum {
- AT_SYMLINK_NOFOLLOW = 8,
- AT_EMPTY_PATH = 12,
- }
|