31#pragma warning(disable : 271 310)
41kmp_bootstrap_lock_t __kmp_stdio_lock = KMP_BOOTSTRAP_LOCK_INITIALIZER(
43kmp_bootstrap_lock_t __kmp_console_lock = KMP_BOOTSTRAP_LOCK_INITIALIZER(
48static HANDLE __kmp_stdout = NULL;
49static HANDLE __kmp_stderr = NULL;
50static int __kmp_console_exists = FALSE;
51static kmp_str_buf_t __kmp_console_buf;
53void __kmp_close_console(
void) {
56 if (__kmp_console_exists) {
59 __kmp_str_buf_free(&__kmp_console_buf);
60 __kmp_console_exists = FALSE;
66static void __kmp_redirect_output(
void) {
67 __kmp_acquire_bootstrap_lock(&__kmp_console_lock);
69 if (!__kmp_console_exists) {
73 __kmp_str_buf_init(&__kmp_console_buf);
81 ho = GetStdHandle(STD_OUTPUT_HANDLE);
82 if (ho == INVALID_HANDLE_VALUE || ho == NULL) {
84 DWORD err = GetLastError();
93 he = GetStdHandle(STD_ERROR_HANDLE);
94 if (he == INVALID_HANDLE_VALUE || he == NULL) {
96 DWORD err = GetLastError();
105 __kmp_console_exists = TRUE;
107 __kmp_release_bootstrap_lock(&__kmp_console_lock);
111#define __kmp_stderr (stderr)
112#define __kmp_stdout (stdout)