1257752Semaste//===-- Platform.h ----------------------------------------------*- C++ -*-===//
2257752Semaste//
3257752Semaste//                     The LLVM Compiler Infrastructure
4257752Semaste//
5257752Semaste// This file is distributed under the University of Illinois Open Source
6257752Semaste// License. See LICENSE.TXT for details.
7257752Semaste//
8257752Semaste//===----------------------------------------------------------------------===//
9257752Semaste
10257752Semaste#ifndef lldb_Platform_h_
11257752Semaste#define lldb_Platform_h_
12257752Semaste
13257752Semaste#if defined( _MSC_VER )
14257752Semaste
15257752Semaste    // this will stop signal.h being included
16257752Semaste    #define _INC_SIGNAL
17257752Semaste
18257752Semaste    #include <io.h>
19257752Semaste    #include <eh.h>
20257752Semaste    #include <inttypes.h>
21257752Semaste    #include "lldb/Host/windows/Windows.h"
22269024Semaste    #include "lldb/Host/HostGetOpt.h"
23257752Semaste
24257752Semaste    struct timeval
25257752Semaste    {
26257752Semaste        long tv_sec;
27257752Semaste        long tv_usec;
28257752Semaste    };
29257752Semaste
30257752Semaste    struct winsize
31257752Semaste    {
32257752Semaste        long ws_col;
33257752Semaste    };
34257752Semaste
35257752Semaste    typedef unsigned char   cc_t;
36257752Semaste    typedef unsigned int    speed_t;
37257752Semaste    typedef unsigned int    tcflag_t;
38257752Semaste
39257752Semaste    // fcntl.h
40257752Semaste    #define O_NOCTTY 0400
41257752Semaste
42257752Semaste    // ioctls.h
43257752Semaste    #define TIOCGWINSZ 0x5413
44257752Semaste
45257752Semaste    // signal.h
46257752Semaste    #define SIGPIPE  13
47257752Semaste    #define SIGCONT  18
48257752Semaste    #define SIGTSTP  20
49257752Semaste    #define SIGWINCH 28
50257752Semaste
51257752Semaste    // tcsetattr arguments
52257752Semaste    #define TCSANOW 0
53257752Semaste
54257752Semaste    #define NCCS 32
55257752Semaste    struct termios
56257752Semaste    {
57257752Semaste        tcflag_t c_iflag;  // input mode flags
58257752Semaste        tcflag_t c_oflag;  // output mode flags
59257752Semaste        tcflag_t c_cflag;  // control mode flags
60257752Semaste        tcflag_t c_lflag;  // local mode flags
61257752Semaste        cc_t c_line;       // line discipline
62257752Semaste        cc_t c_cc[NCCS];   // control characters
63257752Semaste        speed_t c_ispeed;  // input speed
64257752Semaste        speed_t c_ospeed;  // output speed
65257752Semaste    };
66257752Semaste
67257752Semaste    typedef long pid_t;
68257752Semaste
69257752Semaste    #define STDIN_FILENO 0
70257752Semaste
71257752Semaste    #define PATH_MAX MAX_PATH
72257752Semaste    #define snprintf _snprintf
73257752Semaste
74257752Semaste    extern int  ioctl( int d, int request, ... );
75257752Semaste    extern int  kill ( pid_t pid, int sig      );
76257752Semaste    extern int  tcsetattr( int fd, int optional_actions, const struct termios *termios_p );
77257752Semaste    extern int  tcgetattr( int fildes, struct termios *termios_p );
78257752Semaste
79257752Semaste    // signal handler function pointer type
80257752Semaste    typedef void (*sighandler_t)(int);
81257752Semaste
82257752Semaste    // signal.h
83257752Semaste    #define SIGINT 2
84257752Semaste    // default handler
85257752Semaste    #define SIG_DFL ( (sighandler_t) -1 )
86257752Semaste    // ignored
87257752Semaste    #define SIG_IGN ( (sighandler_t) -2 )
88257752Semaste    extern sighandler_t signal( int sig, sighandler_t );
89257752Semaste
90257752Semaste#else
91257752Semaste
92257752Semaste    #include <inttypes.h>
93257752Semaste
94257752Semaste    #include <getopt.h>
95257752Semaste    #include <libgen.h>
96257752Semaste    #include <sys/ioctl.h>
97257752Semaste    #include <termios.h>
98257752Semaste    #include <unistd.h>
99257752Semaste
100257752Semaste    #include <histedit.h>
101257752Semaste    #include <pthread.h>
102257752Semaste    #include <sys/time.h>
103257752Semaste
104257752Semaste#endif
105257752Semaste
106257752Semaste#endif // lldb_Platform_h_
107