1061da546Spatrick //===-- Platform.cpp --------------------------------------------*- C++ -*-===//
2061da546Spatrick //
3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6061da546Spatrick //
7061da546Spatrick //===----------------------------------------------------------------------===//
8061da546Spatrick
9061da546Spatrick // this file is only relevant for Visual C++
10061da546Spatrick #if defined(_WIN32)
11061da546Spatrick
12*be691f3bSpatrick #include <cassert>
13*be691f3bSpatrick #include <cstdlib>
14061da546Spatrick #include <process.h>
15061da546Spatrick
16061da546Spatrick #include "Platform.h"
17061da546Spatrick #include "llvm/Support/ErrorHandling.h"
18061da546Spatrick
ioctl(int d,int request,...)19061da546Spatrick int ioctl(int d, int request, ...) {
20061da546Spatrick switch (request) {
21061da546Spatrick // request the console windows size
22061da546Spatrick case (TIOCGWINSZ): {
23061da546Spatrick va_list vl;
24061da546Spatrick va_start(vl, request);
25061da546Spatrick // locate the window size structure on stack
26061da546Spatrick winsize *ws = va_arg(vl, winsize *);
27061da546Spatrick // get screen buffer information
28061da546Spatrick CONSOLE_SCREEN_BUFFER_INFO info;
29061da546Spatrick if (GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info) ==
30061da546Spatrick TRUE)
31061da546Spatrick // fill in the columns
32061da546Spatrick ws->ws_col = info.dwMaximumWindowSize.X;
33061da546Spatrick va_end(vl);
34061da546Spatrick return 0;
35061da546Spatrick } break;
36061da546Spatrick default:
37061da546Spatrick llvm_unreachable("Not implemented!");
38061da546Spatrick }
39061da546Spatrick }
40061da546Spatrick
kill(pid_t pid,int sig)41061da546Spatrick int kill(pid_t pid, int sig) {
42061da546Spatrick // is the app trying to kill itself
43061da546Spatrick if (pid == getpid())
44061da546Spatrick exit(sig);
45061da546Spatrick //
46061da546Spatrick llvm_unreachable("Not implemented!");
47061da546Spatrick }
48061da546Spatrick
tcsetattr(int fd,int optional_actions,const struct termios * termios_p)49061da546Spatrick int tcsetattr(int fd, int optional_actions, const struct termios *termios_p) {
50061da546Spatrick llvm_unreachable("Not implemented!");
51061da546Spatrick }
52061da546Spatrick
tcgetattr(int fildes,struct termios * termios_p)53061da546Spatrick int tcgetattr(int fildes, struct termios *termios_p) {
54061da546Spatrick // assert( !"Not implemented!" );
55061da546Spatrick // error return value (0=success)
56061da546Spatrick return -1;
57061da546Spatrick }
58061da546Spatrick
59061da546Spatrick #endif
60