diff options
-rw-r--r-- | dix/main.c | 2 | ||||
-rw-r--r-- | doc/Xserver-spec.xml | 4 | ||||
-rw-r--r-- | hw/dmx/dmxinit.c | 6 | ||||
-rw-r--r-- | hw/kdrive/src/kdrive.c | 6 | ||||
-rw-r--r-- | hw/vfb/InitOutput.c | 6 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Configure.c | 2 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Helper.c | 4 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Init.c | 8 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Priv.h | 2 | ||||
-rw-r--r-- | hw/xfree86/common/xf86ShowOpts.c | 2 | ||||
-rw-r--r-- | hw/xnest/Init.c | 6 | ||||
-rw-r--r-- | hw/xquartz/darwin.c | 6 | ||||
-rw-r--r-- | hw/xwin/InitOutput.c | 10 | ||||
-rw-r--r-- | hw/xwin/winerror.c | 2 | ||||
-rw-r--r-- | include/os.h | 13 | ||||
-rw-r--r-- | os/log.c | 6 |
16 files changed, 47 insertions, 38 deletions
diff --git a/dix/main.c b/dix/main.c index 955b7ea9e..16575ceba 100644 --- a/dix/main.c +++ b/dix/main.c @@ -347,7 +347,7 @@ int main(int argc, char *argv[], char *envp[]) if (dispatchException & DE_TERMINATE) { - ddxGiveUp(); + ddxGiveUp(EXIT_NO_ERROR); break; } diff --git a/doc/Xserver-spec.xml b/doc/Xserver-spec.xml index 7d7f9152c..b14e4897e 100644 --- a/doc/Xserver-spec.xml +++ b/doc/Xserver-spec.xml @@ -4680,8 +4680,8 @@ An Example implementation is miPushPixels() in Xserver/mi/mipushpxl.c.</para> <title>Shutdown Procedures</title> <para> <blockquote><programlisting> - void AbortDDX() - void ddxGiveUp() + void AbortDDX(enum ExitCode error) + void ddxGiveUp(enum ExitCode error) </programlisting></blockquote> Some hardware may require special work to be done before the server exits so that it is not left in an intermediate state. As explained diff --git a/hw/dmx/dmxinit.c b/hw/dmx/dmxinit.c index 74b358244..bc1509b35 100644 --- a/hw/dmx/dmxinit.c +++ b/hw/dmx/dmxinit.c @@ -821,7 +821,7 @@ static void dmxSetDefaultFontPath(char *fp) /** This function is called in Xserver/os/utils.c from \a AbortServer(). * We must ensure that backend and console state is restored in the * event the server shutdown wasn't clean. */ -void AbortDDX(void) +void AbortDDX(enum ExitCode error) { int i; @@ -842,9 +842,9 @@ void ddxBeforeReset(void) /** This function is called in Xserver/dix/main.c from \a main() when * dispatchException & DE_TERMINATE (which is the only way to exit the * main loop without an interruption. */ -void ddxGiveUp(void) +void ddxGiveUp(enum ExitCode error) { - AbortDDX(); + AbortDDX(error); } /** This function is called in Xserver/os/osinit.c from \a OsInit(). */ diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c index f034ce463..8dd039e1d 100644 --- a/hw/kdrive/src/kdrive.c +++ b/hw/kdrive/src/kdrive.c @@ -232,7 +232,7 @@ KdProcessSwitch (void) } void -AbortDDX(void) +AbortDDX(enum ExitCode error) { KdDisableScreens (); if (kdOsFuncs) @@ -249,9 +249,9 @@ AbortDDX(void) } void -ddxGiveUp (void) +ddxGiveUp (enum ExitCode error) { - AbortDDX (); + AbortDDX (error); } Bool kdDumbDriver; diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c index 53f82f9e2..31ed50533 100644 --- a/hw/vfb/InitOutput.c +++ b/hw/vfb/InitOutput.c @@ -150,7 +150,7 @@ vfbBitsPerPixel(int depth) } void -ddxGiveUp(void) +ddxGiveUp(enum ExitCode error) { int i; @@ -201,9 +201,9 @@ ddxGiveUp(void) } void -AbortDDX(void) +AbortDDX(enum ExitCode error) { - ddxGiveUp(); + ddxGiveUp(error); } #ifdef __APPLE__ diff --git a/hw/xfree86/common/xf86Configure.c b/hw/xfree86/common/xf86Configure.c index 975266943..ab0751507 100644 --- a/hw/xfree86/common/xf86Configure.c +++ b/hw/xfree86/common/xf86Configure.c @@ -749,7 +749,7 @@ DoConfigure(void) bail: OsCleanup(TRUE); - AbortDDX(); + AbortDDX(EXIT_ERR_CONFIGURE); fflush(stderr); exit(0); } diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c index 3cdffdb43..f8e6c8b41 100644 --- a/hw/xfree86/common/xf86Helper.c +++ b/hw/xfree86/common/xf86Helper.c @@ -1198,9 +1198,9 @@ xf86LogInit(void) } void -xf86CloseLog(void) +xf86CloseLog(enum ExitCode error) { - LogClose(); + LogClose(error); } diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index 5347bbfc0..71926f8e7 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -902,7 +902,7 @@ OsVendorInit(void) */ void -ddxGiveUp(void) +ddxGiveUp(enum ExitCode error) { int i; @@ -929,7 +929,7 @@ ddxGiveUp(void) if (xorgHWOpenConsole) xf86CloseConsole(); - xf86CloseLog(); + xf86CloseLog(error); /* If an unexpected signal was caught, dump a core for debugging */ if (xf86Info.caughtSignal) @@ -946,7 +946,7 @@ ddxGiveUp(void) */ void -AbortDDX(void) +AbortDDX(enum ExitCode error) { int i; @@ -979,7 +979,7 @@ AbortDDX(void) * This is needed for an abnormal server exit, since the normal exit stuff * MUST also be performed (i.e. the vt must be left in a defined state) */ - ddxGiveUp(); + ddxGiveUp(error); } void diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h index 5d91ab367..1fe3d7e0d 100644 --- a/hw/xfree86/common/xf86Priv.h +++ b/hw/xfree86/common/xf86Priv.h @@ -140,7 +140,7 @@ extern _X_EXPORT pmWait (*xf86PMConfirmEventToOs)(int fd,pmEvent event); /* xf86Helper.c */ extern _X_EXPORT void xf86LogInit(void); -extern _X_EXPORT void xf86CloseLog(void); +extern _X_EXPORT void xf86CloseLog(enum ExitCode error); /* xf86Init.c */ extern _X_EXPORT Bool xf86LoadModules(char **list, pointer *optlist); diff --git a/hw/xfree86/common/xf86ShowOpts.c b/hw/xfree86/common/xf86ShowOpts.c index c0fa80ac7..a8059168d 100644 --- a/hw/xfree86/common/xf86ShowOpts.c +++ b/hw/xfree86/common/xf86ShowOpts.c @@ -124,7 +124,7 @@ void DoShowOptions (void) { } bail: OsCleanup (TRUE); - AbortDDX (); + AbortDDX (EXIT_ERR_DRIVERS); fflush (stderr); exit (0); } diff --git a/hw/xnest/Init.c b/hw/xnest/Init.c index ea0669a6a..af57518ba 100644 --- a/hw/xnest/Init.c +++ b/hw/xnest/Init.c @@ -114,16 +114,16 @@ CloseInput(void) /* * DDX - specific abort routine. Called by AbortServer(). */ -void AbortDDX(void) +void AbortDDX(enum ExitCode error) { xnestDoFullGeneration = True; xnestCloseDisplay(); } /* Called by GiveUp(). */ -void ddxGiveUp(void) +void ddxGiveUp(enum ExitCode error) { - AbortDDX(); + AbortDDX(error); } #ifdef __APPLE__ diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c index 73685b0d4..f19d7bf30 100644 --- a/hw/xquartz/darwin.c +++ b/hw/xquartz/darwin.c @@ -766,9 +766,9 @@ void ddxUseMsg( void ) * ddxGiveUp -- * Device dependent cleanup. Called by dix before normal server death. */ -void ddxGiveUp( void ) +void ddxGiveUp( enum ExitCode error ) { - ErrorF( "Quitting Xquartz\n" ); + LogClose(error); } @@ -779,7 +779,7 @@ void ddxGiveUp( void ) * are closed. */ _X_NORETURN -void AbortDDX( void ) { +void AbortDDX( enum ExitCode error ) { ErrorF( " AbortDDX\n" ); OsAbort(); } diff --git a/hw/xwin/InitOutput.c b/hw/xwin/InitOutput.c index 22ef8da76..4fe5053b3 100644 --- a/hw/xwin/InitOutput.c +++ b/hw/xwin/InitOutput.c @@ -191,7 +191,7 @@ ddxBeforeReset (void) /* See Porting Layer Definition - p. 57 */ void -ddxGiveUp (void) +ddxGiveUp (enum ExitCode error) { int i; @@ -228,7 +228,7 @@ ddxGiveUp (void) g_pszLogFile = LogInit (g_pszLogFile, NULL); g_fLogInited = TRUE; } - LogClose (); + LogClose (error); /* * At this point we aren't creating any new screens, so @@ -258,12 +258,12 @@ ddxGiveUp (void) /* See Porting Layer Definition - p. 57 */ void -AbortDDX (void) +AbortDDX (enum ExitCode error) { #if CYGDEBUG winDebug ("AbortDDX\n"); #endif - ddxGiveUp (); + ddxGiveUp (error); } #ifdef __CYGWIN__ @@ -901,7 +901,7 @@ ddxUseMsg(void) g_pszLogFile = LogInit (g_pszLogFile, NULL); g_fLogInited = TRUE; } - LogClose (); + LogClose (EXIT_NO_ERROR); /* Notify user where UseMsg text can be found.*/ if (!g_fNoHelpMessageBox) diff --git a/hw/xwin/winerror.c b/hw/xwin/winerror.c index 5e32d090d..0440d13ff 100644 --- a/hw/xwin/winerror.c +++ b/hw/xwin/winerror.c @@ -81,7 +81,7 @@ OsVendorFatalError (void) g_fLogInited = TRUE; g_pszLogFile = LogInit (g_pszLogFile, NULL); } - LogClose (); + LogClose (EXIT_ERR_ABORT); winMessageBoxF ( "A fatal error has occurred and " PROJECT_NAME " will now exit.\n" \ diff --git a/include/os.h b/include/os.h index 506dc5d2a..a553f5783 100644 --- a/include/os.h +++ b/include/os.h @@ -459,8 +459,15 @@ typedef struct { /* stuff for FlushCallback */ extern _X_EXPORT CallbackListPtr FlushCallback; -extern _X_EXPORT void AbortDDX(void); -extern _X_EXPORT void ddxGiveUp(void); +enum ExitCode { + EXIT_NO_ERROR = 0, + EXIT_ERR_ABORT = 1, + EXIT_ERR_CONFIGURE = 2, + EXIT_ERR_DRIVERS = 3, +}; + +extern _X_EXPORT void AbortDDX(enum ExitCode error); +extern _X_EXPORT void ddxGiveUp(enum ExitCode error); extern _X_EXPORT int TimeSinceLastInputEvent(void); /* strcasecmp.c */ @@ -508,7 +515,7 @@ typedef enum { } MessageType; extern _X_EXPORT const char *LogInit(const char *fname, const char *backup); -extern _X_EXPORT void LogClose(void); +extern _X_EXPORT void LogClose(enum ExitCode error); extern _X_EXPORT Bool LogSetParameter(LogParameter param, int value); extern _X_EXPORT void LogVWrite(int verb, const char *f, va_list args) _X_ATTRIBUTE_PRINTF(2,0); extern _X_EXPORT void LogWrite(int verb, const char *f, ...) _X_ATTRIBUTE_PRINTF(2,3); @@ -231,9 +231,11 @@ LogInit(const char *fname, const char *backup) } void -LogClose(void) +LogClose(enum ExitCode error) { if (logFile) { + ErrorF("Server terminated %s (%d). Closing log file.\n", + (error == EXIT_NO_ERROR) ? "successfully" : "with error", error); fclose(logFile); logFile = NULL; } @@ -411,7 +413,7 @@ AbortServer(void) CloseWellKnownConnections(); OsCleanup(TRUE); CloseDownDevices(); - AbortDDX(); + AbortDDX(EXIT_ERR_ABORT); fflush(stderr); if (CoreDump) OsAbort(); |