diff options
Diffstat (limited to 'tools/lldb-mi/Platform.cpp')
-rw-r--r-- | tools/lldb-mi/Platform.cpp | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/tools/lldb-mi/Platform.cpp b/tools/lldb-mi/Platform.cpp new file mode 100644 index 000000000000..c0208b3518c0 --- /dev/null +++ b/tools/lldb-mi/Platform.cpp @@ -0,0 +1,109 @@ +//===-- Platform.cpp --------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// this file is only relevant for Visual C++ +#if defined( _MSC_VER ) + +#include <process.h> +#include <assert.h> + +#include "Platform.h" + +// the control handler or SIGINT handler +static sighandler_t _ctrlHandler = NULL; + +// the default console control handler +BOOL +WINAPI CtrlHandler (DWORD ctrlType) +{ + if ( _ctrlHandler != NULL ) + { + _ctrlHandler( 0 ); + return TRUE; + } + return FALSE; +} + +int +ioctl (int d, int request, ...) +{ + switch ( request ) + { + // request the console windows size + case ( TIOCGWINSZ ): + { + va_list vl; + va_start(vl,request); + // locate the window size structure on stack + winsize *ws = va_arg(vl, winsize*); + // get screen buffer information + CONSOLE_SCREEN_BUFFER_INFO info; + if ( GetConsoleScreenBufferInfo( GetStdHandle( STD_OUTPUT_HANDLE ), &info ) == TRUE ) + // fill in the columns + ws->ws_col = info.dwMaximumWindowSize.X; + va_end(vl); + return 0; + } + break; + default: + assert( !"Not implemented!" ); + } + return -1; +} + +int +kill (pid_t pid, int sig) +{ + // is the app trying to kill itself + if ( pid == getpid( ) ) + exit( sig ); + // + assert( !"Not implemented!" ); + return -1; +} + +int +tcsetattr (int fd, int optional_actions, const struct termios *termios_p) +{ + assert( !"Not implemented!" ); + return -1; +} + +int +tcgetattr (int fildes, struct termios *termios_p) +{ +// assert( !"Not implemented!" ); + // error return value (0=success) + return -1; +} + +sighandler_t +signal (int sig, sighandler_t sigFunc) +{ + switch ( sig ) + { + case ( SIGINT ): + { + _ctrlHandler = sigFunc; + SetConsoleCtrlHandler( CtrlHandler, TRUE ); + } + break; + case ( SIGPIPE ): + case ( SIGWINCH ): + case ( SIGTSTP ): + case ( SIGCONT ): + // ignore these for now + break; + default: + assert( !"Not implemented!" ); + } + return 0; +} + +#endif |