1 | //===-- windows/PosixApi.h --------------------------------------*- C++ -*-===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #ifndef liblldb_Host_windows_PosixApi_h |
10 | #define liblldb_Host_windows_PosixApi_h |
11 | |
12 | #include "lldb/Host/Config.h" |
13 | #include "llvm/Support/Compiler.h" |
14 | #if !defined(_WIN32) |
15 | #error "windows/PosixApi.h being #included on non Windows system!" |
16 | #endif |
17 | |
18 | // va_start, va_end, etc macros. |
19 | #include <cstdarg> |
20 | |
21 | // time_t, timespec, etc. |
22 | #include <ctime> |
23 | |
24 | #ifndef PATH_MAX |
25 | #define PATH_MAX 32768 |
26 | #endif |
27 | |
28 | #define O_NOCTTY 0 |
29 | #define O_NONBLOCK 0 |
30 | #define SIGTRAP 5 |
31 | #define SIGKILL 9 |
32 | #define SIGSTOP 20 |
33 | |
34 | #ifndef S_IRUSR |
35 | #define S_IRUSR S_IREAD /* read, user */ |
36 | #define S_IWUSR S_IWRITE /* write, user */ |
37 | #define S_IXUSR 0 /* execute, user */ |
38 | #endif |
39 | #ifndef S_IRGRP |
40 | #define S_IRGRP 0 /* read, group */ |
41 | #define S_IWGRP 0 /* write, group */ |
42 | #define S_IXGRP 0 /* execute, group */ |
43 | #endif |
44 | #ifndef S_IROTH |
45 | #define S_IROTH 0 /* read, others */ |
46 | #define S_IWOTH 0 /* write, others */ |
47 | #define S_IXOTH 0 /* execute, others */ |
48 | #endif |
49 | #ifndef S_IRWXU |
50 | #define S_IRWXU 0 |
51 | #endif |
52 | #ifndef S_IRWXG |
53 | #define S_IRWXG 0 |
54 | #endif |
55 | #ifndef S_IRWXO |
56 | #define S_IRWXO 0 |
57 | #endif |
58 | |
59 | // pyconfig.h typedefs this. We require python headers to be included before |
60 | // any LLDB headers, but there's no way to prevent python's pid_t definition |
61 | // from leaking, so this is the best option. |
62 | #ifndef NO_PID_T |
63 | #include <sys/types.h> |
64 | #endif |
65 | |
66 | #ifdef _MSC_VER |
67 | |
68 | // PRIxxx format macros for printf() |
69 | #include <cinttypes> |
70 | |
71 | // open(), close(), creat(), etc. |
72 | #include <io.h> |
73 | |
74 | typedef unsigned short mode_t; |
75 | |
76 | // pyconfig.h typedefs this. We require python headers to be included before |
77 | // any LLDB headers, but there's no way to prevent python's pid_t definition |
78 | // from leaking, so this is the best option. |
79 | #ifndef NO_PID_T |
80 | typedef uint32_t pid_t; |
81 | #endif |
82 | |
83 | #define STDIN_FILENO 0 |
84 | #define STDOUT_FILENO 1 |
85 | #define STDERR_FILENO 2 |
86 | |
87 | #endif // _MSC_VER |
88 | |
89 | // empty functions |
90 | inline int posix_openpt(int flag) { LLVM_BUILTIN_UNREACHABLE; } |
91 | |
92 | inline int unlockpt(int fd) { LLVM_BUILTIN_UNREACHABLE; } |
93 | inline int grantpt(int fd) { LLVM_BUILTIN_UNREACHABLE; } |
94 | inline char *ptsname(int fd) { LLVM_BUILTIN_UNREACHABLE; } |
95 | |
96 | inline pid_t fork(void) { LLVM_BUILTIN_UNREACHABLE; } |
97 | inline pid_t setsid(void) { LLVM_BUILTIN_UNREACHABLE; } |
98 | |
99 | #endif |
100 | |