1 | //===-- Platform.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 LLDB_TOOLS_DRIVER_PLATFORM_H |
10 | #define LLDB_TOOLS_DRIVER_PLATFORM_H |
11 | |
12 | #if defined(_WIN32) |
13 | |
14 | #include <io.h> |
15 | #if defined(_MSC_VER) |
16 | #include <csignal> |
17 | #endif |
18 | |
19 | #include "lldb/Host/windows/windows.h" |
20 | #include <cinttypes> |
21 | #include <sys/types.h> |
22 | |
23 | struct winsize { |
24 | long ws_col; |
25 | }; |
26 | |
27 | typedef unsigned char cc_t; |
28 | typedef unsigned int speed_t; |
29 | typedef unsigned int tcflag_t; |
30 | |
31 | // fcntl.h |
32 | #define O_NOCTTY 0400 |
33 | |
34 | // ioctls.h |
35 | #define TIOCGWINSZ 0x5413 |
36 | |
37 | // signal.h |
38 | #define SIGPIPE 13 |
39 | #define SIGCONT 18 |
40 | #define SIGTSTP 20 |
41 | #define SIGWINCH 28 |
42 | |
43 | // tcsetattr arguments |
44 | #define TCSANOW 0 |
45 | |
46 | #define NCCS 32 |
47 | struct termios { |
48 | tcflag_t c_iflag; // input mode flags |
49 | tcflag_t c_oflag; // output mode flags |
50 | tcflag_t c_cflag; // control mode flags |
51 | tcflag_t c_lflag; // local mode flags |
52 | cc_t c_line; // line discipline |
53 | cc_t c_cc[NCCS]; // control characters |
54 | speed_t c_ispeed; // input speed |
55 | speed_t c_ospeed; // output speed |
56 | }; |
57 | |
58 | #ifdef _MSC_VER |
59 | struct timeval { |
60 | long tv_sec; |
61 | long tv_usec; |
62 | }; |
63 | typedef long pid_t; |
64 | #define PATH_MAX MAX_PATH |
65 | #endif |
66 | |
67 | #define STDIN_FILENO 0 |
68 | |
69 | extern int ioctl(int d, int request, ...); |
70 | extern int kill(pid_t pid, int sig); |
71 | extern int tcsetattr(int fd, int optional_actions, |
72 | const struct termios *termios_p); |
73 | extern int tcgetattr(int fildes, struct termios *termios_p); |
74 | |
75 | #else |
76 | #include <cinttypes> |
77 | |
78 | #include <libgen.h> |
79 | #include <sys/ioctl.h> |
80 | #include <termios.h> |
81 | #include <unistd.h> |
82 | |
83 | #include <pthread.h> |
84 | #include <sys/time.h> |
85 | #endif |
86 | |
87 | #endif // LLDB_TOOLS_DRIVER_PLATFORM_H |
88 | |