UnixTypes.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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/poll.h>
  17. #include <Kernel/API/POSIX/serenity.h>
  18. #include <Kernel/API/POSIX/signal.h>
  19. #include <Kernel/API/POSIX/stdio.h>
  20. #include <Kernel/API/POSIX/sys/mman.h>
  21. #include <Kernel/API/POSIX/sys/socket.h>
  22. #include <Kernel/API/POSIX/sys/stat.h>
  23. #include <Kernel/API/POSIX/sys/times.h>
  24. #include <Kernel/API/POSIX/sys/un.h>
  25. #include <Kernel/API/POSIX/sys/utsname.h>
  26. #include <Kernel/API/POSIX/sys/wait.h>
  27. #include <Kernel/API/POSIX/termios.h>
  28. #include <Kernel/API/POSIX/time.h>
  29. #include <Kernel/API/POSIX/unistd.h>
  30. // Kernel internal options.
  31. #define O_NOFOLLOW_NOERROR (1 << 29)
  32. #define O_UNLINK_INTERNAL (1 << 30)
  33. // Avoid interference with AK/Types.h and LibC/sys/types.h by defining *separate* names:
  34. TYPEDEF_DISTINCT_ORDERED_ID(pid_t, ProcessID);
  35. TYPEDEF_DISTINCT_ORDERED_ID(pid_t, ThreadID);
  36. TYPEDEF_DISTINCT_ORDERED_ID(pid_t, SessionID);
  37. TYPEDEF_DISTINCT_ORDERED_ID(pid_t, ProcessGroupID);
  38. typedef i64 off_t;
  39. typedef i64 time_t;
  40. typedef u32 blksize_t;
  41. typedef u32 blkcnt_t;
  42. typedef u32 __u32;
  43. typedef u16 __u16;
  44. typedef u8 __u8;
  45. typedef int __s32;
  46. typedef short __s16;
  47. typedef u32 useconds_t;
  48. typedef i32 suseconds_t;
  49. struct timeval {
  50. time_t tv_sec;
  51. suseconds_t tv_usec;
  52. };
  53. struct iovec {
  54. void* iov_base;
  55. size_t iov_len;
  56. };
  57. struct sched_param {
  58. int sched_priority;
  59. };
  60. #define PT_TRACE_ME 1
  61. #define PT_ATTACH 2
  62. #define PT_CONTINUE 3
  63. #define PT_SYSCALL 4
  64. #define PT_GETREGS 5
  65. #define PT_DETACH 6
  66. #define PT_PEEK 7
  67. #define PT_POKE 8
  68. #define PT_SETREGS 9
  69. #define PT_POKEDEBUG 10
  70. #define PT_PEEKDEBUG 11
  71. typedef uint64_t fsblkcnt_t;
  72. typedef uint64_t fsfilcnt_t;
  73. #define ST_RDONLY 0x1
  74. #define ST_NOSUID 0x2
  75. struct statvfs {
  76. unsigned long f_bsize;
  77. unsigned long f_frsize;
  78. fsblkcnt_t f_blocks;
  79. fsblkcnt_t f_bfree;
  80. fsblkcnt_t f_bavail;
  81. fsfilcnt_t f_files;
  82. fsfilcnt_t f_ffree;
  83. fsfilcnt_t f_favail;
  84. unsigned long f_fsid;
  85. unsigned long f_flag;
  86. unsigned long f_namemax;
  87. };