UnixTypes.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. /*
  2. * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/DistinctNumeric.h>
  8. #include <AK/Types.h>
  9. #include <Kernel/API/POSIX/dirent.h>
  10. #include <Kernel/API/POSIX/fcntl.h>
  11. #include <Kernel/API/POSIX/futex.h>
  12. #include <Kernel/API/POSIX/net/if.h>
  13. #include <Kernel/API/POSIX/net/if_arp.h>
  14. #include <Kernel/API/POSIX/net/route.h>
  15. #include <Kernel/API/POSIX/netinet/in.h>
  16. #include <Kernel/API/POSIX/serenity.h>
  17. #include <Kernel/API/POSIX/signal.h>
  18. #include <Kernel/API/POSIX/sys/mman.h>
  19. #include <Kernel/API/POSIX/sys/socket.h>
  20. #include <Kernel/API/POSIX/sys/stat.h>
  21. #include <Kernel/API/POSIX/sys/un.h>
  22. #include <Kernel/API/POSIX/sys/wait.h>
  23. #include <Kernel/API/POSIX/termios.h>
  24. #include <Kernel/API/POSIX/time.h>
  25. // Kernel internal options.
  26. #define O_NOFOLLOW_NOERROR (1 << 29)
  27. #define O_UNLINK_INTERNAL (1 << 30)
  28. #define MS_NODEV (1 << 0)
  29. #define MS_NOEXEC (1 << 1)
  30. #define MS_NOSUID (1 << 2)
  31. #define MS_BIND (1 << 3)
  32. #define MS_RDONLY (1 << 4)
  33. #define MS_REMOUNT (1 << 5)
  34. enum {
  35. _SC_MONOTONIC_CLOCK,
  36. _SC_NPROCESSORS_CONF,
  37. _SC_NPROCESSORS_ONLN,
  38. _SC_OPEN_MAX,
  39. _SC_TTY_NAME_MAX,
  40. _SC_PAGESIZE,
  41. _SC_GETPW_R_SIZE_MAX,
  42. _SC_CLK_TCK,
  43. };
  44. #define R_OK 4
  45. #define W_OK 2
  46. #define X_OK 1
  47. #define F_OK 0
  48. #define SEEK_SET 0
  49. #define SEEK_CUR 1
  50. #define SEEK_END 2
  51. #define MADV_SET_VOLATILE 0x100
  52. #define MADV_SET_NONVOLATILE 0x200
  53. #define F_DUPFD 0
  54. #define F_GETFD 1
  55. #define F_SETFD 2
  56. #define F_GETFL 3
  57. #define F_SETFL 4
  58. #define F_ISTTY 5
  59. #define F_GETLK 6
  60. #define F_SETLK 7
  61. #define F_SETLKW 8
  62. #define FD_CLOEXEC 1
  63. // Avoid interference with AK/Types.h and LibC/sys/types.h by defining *separate* names:
  64. TYPEDEF_DISTINCT_ORDERED_ID(pid_t, ProcessID);
  65. TYPEDEF_DISTINCT_ORDERED_ID(pid_t, ThreadID);
  66. TYPEDEF_DISTINCT_ORDERED_ID(pid_t, SessionID);
  67. TYPEDEF_DISTINCT_ORDERED_ID(pid_t, ProcessGroupID);
  68. struct tms {
  69. clock_t tms_utime;
  70. clock_t tms_stime;
  71. clock_t tms_cutime;
  72. clock_t tms_cstime;
  73. };
  74. typedef i64 off_t;
  75. typedef i64 time_t;
  76. typedef u32 blksize_t;
  77. typedef u32 blkcnt_t;
  78. #define POLLIN (1u << 0)
  79. #define POLLPRI (1u << 1)
  80. #define POLLOUT (1u << 2)
  81. #define POLLERR (1u << 3)
  82. #define POLLHUP (1u << 4)
  83. #define POLLNVAL (1u << 5)
  84. #define POLLRDHUP (1u << 13)
  85. struct pollfd {
  86. int fd;
  87. short events;
  88. short revents;
  89. };
  90. typedef u32 __u32;
  91. typedef u16 __u16;
  92. typedef u8 __u8;
  93. typedef int __s32;
  94. typedef short __s16;
  95. typedef u32 useconds_t;
  96. typedef i32 suseconds_t;
  97. struct timeval {
  98. time_t tv_sec;
  99. suseconds_t tv_usec;
  100. };
  101. #define UTSNAME_ENTRY_LEN 65
  102. struct utsname {
  103. char sysname[UTSNAME_ENTRY_LEN];
  104. char nodename[UTSNAME_ENTRY_LEN];
  105. char release[UTSNAME_ENTRY_LEN];
  106. char version[UTSNAME_ENTRY_LEN];
  107. char machine[UTSNAME_ENTRY_LEN];
  108. };
  109. struct iovec {
  110. void* iov_base;
  111. size_t iov_len;
  112. };
  113. struct sched_param {
  114. int sched_priority;
  115. };
  116. #define AT_FDCWD -100
  117. #define AT_SYMLINK_NOFOLLOW 0x100
  118. #define PT_TRACE_ME 1
  119. #define PT_ATTACH 2
  120. #define PT_CONTINUE 3
  121. #define PT_SYSCALL 4
  122. #define PT_GETREGS 5
  123. #define PT_DETACH 6
  124. #define PT_PEEK 7
  125. #define PT_POKE 8
  126. #define PT_SETREGS 9
  127. #define PT_POKEDEBUG 10
  128. #define PT_PEEKDEBUG 11
  129. typedef uint64_t fsblkcnt_t;
  130. typedef uint64_t fsfilcnt_t;
  131. #define ST_RDONLY 0x1
  132. #define ST_NOSUID 0x2
  133. struct statvfs {
  134. unsigned long f_bsize;
  135. unsigned long f_frsize;
  136. fsblkcnt_t f_blocks;
  137. fsblkcnt_t f_bfree;
  138. fsblkcnt_t f_bavail;
  139. fsfilcnt_t f_files;
  140. fsfilcnt_t f_ffree;
  141. fsfilcnt_t f_favail;
  142. unsigned long f_fsid;
  143. unsigned long f_flag;
  144. unsigned long f_namemax;
  145. };