Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

143 lines
2.7 KiB

#include "insignia.h"
#include "host_def.h"
/*[
Name: terminate.c
Derived From: Base 2.0
Author: Rod MacGregor
Created On: Unknown
Sccs ID: @(#)terminate.c 1.23 06/15/94
Purpose: We are about to die, put the kernel back the way
that it was.
(c)Copyright Insignia Solutions Ltd., 1990. All rights reserved.
]*/
#include <stdlib.h>
#include <stdio.h>
#include TypesH
#include "xt.h"
#include "error.h"
#include "config.h"
#include "host_lpt.h"
#include "rs232.h"
#include "host_com.h"
#include "timer.h"
#include "cmos.h"
#include "fdisk.h"
#include "debug.h"
#include "gvi.h"
#include CpuH
#ifdef NOVELL
#include "novell.h"
#endif
#ifdef GISP_SVGA
#include HostHwVgaH
#include "hwvga.h"
#endif /* GISP_SVGA */
#ifdef LICENSING
#include "host_lic.h"
#endif
#include "emm.h"
#ifdef SEGMENTATION
/*
* The following #include specifies the code segment into which this
* module will by placed by the MPW C compiler on the Mac II running
* MultiFinder.
*/
#include "SOFTPC_INIT.seg"
#endif
IMPORT VOID host_applClose IPT0();
IMPORT VOID host_terminate IPT0();
void terminate()
{
SAVED BOOL already_called_terminate = FALSE;
UTINY i;
if (already_called_terminate)
{
assert0( NO, "Error: terminate called twice - exiting" );
exit(0);
}
else
already_called_terminate = TRUE;
#ifdef MSWDVR
WinTerm();
#endif
#ifdef SWIN_SNDBLST_NULL
sb_term();
#endif /* SWIN_SNDBLST_NULL */
#ifdef GISP_SVGA
/* Get back to window if we are full screen */
if( hostIsFullScreen( ) )
disableFullScreenVideo( FALSE );
#endif /* GISP_SVGA */
/* terminate COM and LPT devices */
#ifdef PC_CONFIG
/* PC_CONFIG style host_lpt_close() and
host_com_close() calls should be added
in here */
#else
for (i = 0 ; i < NUM_PARALLEL_PORTS; i++)
config_activate(C_LPT1_NAME + i, FALSE);
for (i = 0 ; i < NUM_SERIAL_PORTS; i++)
config_activate(C_COM1_NAME + i, FALSE);
#endif
/* Update the cmos.ram file */
cmos_update();
host_fdisk_term();
gvi_term(); /* close down the video adaptor */
#ifndef NTVDM
host_timer_shutdown(); /* Stop the timer */
#endif
#ifdef LIM
host_deinitialise_EM(); /* free memory or file used by EM */
#endif
config_activate(C_FLOPPY_A_DEVICE, FALSE);
#ifdef FLOPPY_B
config_activate(C_FLOPPY_B_DEVICE, FALSE);
#endif /* FLOPPY_B */
#ifdef SLAVEPC
config_activate(C_SLAVEPC_DEVICE, FALSE);
#endif /* SLAVEPC */
/*
* Do any cpu-specific termination bits.
*/
#ifdef CPU_30_STYLE
cpu_terminate();
#endif
#ifdef NOVELL
net_term(); /* Shutdown network */
#endif
#ifdef LICENSING
(*license_exit)(); /* Shutdown licensing system */
#endif
/*
* Do any host-specific termination bits.
*/
host_applClose();
host_terminate();
/*
* Seppuku.
*/
exit(0);
}