From 3400b4fc441b639c751592a9d40775f715fad998 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Tue, 23 Sep 2003 04:02:07 +0000 Subject: * dcrt0.cc (do_exit): Eliminate "C" linkage. Call events_terminate early. (exit_states): Move out of source file into header file. * winsup.h: Move exit_states here. Remove "C" linkage from do_exit declaration. * debug.cc (lock_debug): Remove explicit (and incorrect) external for exit_state. * sigproc.cc (sig_dispatch_pending): Don't flush signals if exiting. --- winsup/cygwin/dcrt0.cc | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) (limited to 'winsup/cygwin/dcrt0.cc') diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index c907399bf..470934a1b 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -956,26 +956,18 @@ __main (void) do_global_ctors (user_data->ctors, FALSE); } -enum exit_states - { - ES_NOT_EXITING = 0, - ES_THREADTERM, - ES_SIGNAL, - ES_CLOSEALL, - ES_SIGPROCTERMINATE, - ES_TITLE, - ES_HUP_PGRP, - ES_HUP_SID, - ES_TTY_TERMINATE, - ES_EVENTS_TERMINATE - }; - exit_states NO_COPY exit_state; extern CRITICAL_SECTION exit_lock; -extern "C" void __stdcall +void __stdcall do_exit (int status) { + if (exit_state < ES_EVENTS_TERMINATE) + { + exit_state = ES_EVENTS_TERMINATE; + events_terminate (); + } + EnterCriticalSection (&exit_lock); UINT n = (UINT) status; @@ -1059,12 +1051,6 @@ do_exit (int status) tty_terminate (); } - if (exit_state < ES_EVENTS_TERMINATE) - { - exit_state = ES_EVENTS_TERMINATE; - events_terminate (); - } - minimal_printf ("winpid %d, exit %d", GetCurrentProcessId (), n); myself->exit (n); } -- cgit v1.2.3