cfad47cfa3/tads3/vminit.h
Commiter: Nikos Chantziaras
Author: Nikos Chantziaras
Revision: cfad47cfa3
File Size: 4.45 KB
(June 01, 2009 20:54 UTC) Almost 3 years ago
Initial commit.
/* $Header: d:/cvsroot/tads/tads3/VMINIT.H,v 1.2 1999/05/17 02:52:28 MJRoberts Exp $ */
/*
* Copyright (c) 1999, 2002 Michael J. Roberts. All Rights Reserved.
*
* Please see the accompanying license file, LICENSE.TXT, for information
* on using and copying this software.
*/
/*
Name
vminit.h - initialize and terminate a VM session
Function
Notes
VM initialization is configurable via the linker. To select a
configuration, link in exactly one of the vmcfgxxx.cpp object files.
Modified
04/06/99 MJRoberts - Creation
*/
#ifndef VMINIT_H
#define VMINIT_H
#include "vmglob.h"
/*
* Generic initialization function. Client code calls this function to
* initialize the VM. The actual implementation of this function is
* selected at link time from the several provided configurations.
*
* 'charset' is the name of the display character mapping that we should
* use. If 'charset' is null, we'll use the default character set
* obtained from the OS layer.
*/
void vm_initialize(struct vm_globals **vmg,
const struct vm_init_options *opts);
/*
* Initialization options - this structure is passed to vm_initialize to
* specify the configuration. (We pass this as a structure, rather than as
* individual parameters, because we internally have several different
* implementations of the initialization function that we choose from based
* on the VM link-time configuration. Packaging these arguments as a
* structure generally lets us avoid changes to the various implementations
* when we add new configuration parameters.)
*/
struct vm_init_options
{
vm_init_options(class CVmHostIfc *hi, class CVmMainClientIfc *ci,
const char *cs = 0, const char *lcs = 0)
{
hostifc = hi;
clientifc = ci;
charset = cs;
log_charset = lcs;
}
/* the host interface */
class CVmHostIfc *hostifc;
/* the client interface */
class CVmMainClientIfc *clientifc;
/* the display character set (or null to use the OS default) */
const char *charset;
/* the log file character set (or null to use the OS default) */
const char *log_charset;
};
/*
* Initialization, phase 2 - just before loading the image file
*/
void vm_init_before_load(VMG_ const char *image_filename);
/*
* Initialization, phase 3 - just after loading the image file
*/
void vm_init_after_load(VMG0_);
/*
* Terminate the VM. Deletes all objects created by vm_init(). This
* can be used to clean up memory after a program has finished
* executing.
*/
void vm_terminate(struct vm_globals *vmg, class CVmMainClientIfc *clientifc);
/* ------------------------------------------------------------------------ */
/*
* Private interface. Client code does not call any of the following
* routines; they're for use internally by the initialization mechanism
* only.
*/
/*
* Initialize the VM with in-memory pools. Creates all global objects
* necessary for the VM to run.
*/
void vm_init_in_mem(struct vm_globals **vmg, const vm_init_options *opts);
/* initialize the VM with the "flat" memory pool manager */
void vm_init_flat(struct vm_globals **vmg, const vm_init_options *opts);
/*
* Initialize the VM with swapping pools with the given maximum number
* of pages in memory.
*/
void vm_init_swap(struct vm_globals **vmg, size_t max_mem_pages,
const vm_init_options *opts);
/*
* Internal base initialization routine. Clients do not call this
* routine directly; it's for use by vm_init_in_mem(), vm_init_swap(),
* and any other vm_init_xxx routines.
*/
void vm_init_base(struct vm_globals **vmg, const vm_init_options *opts);
/*
* Initialize debugger-related objects. For non-debug versions, this
* doesn't need to do anything.
*/
void vm_init_debugger(VMG0_);
/*
* Get the amount of stack space to allocate as a reserve for handling
* stack overflows in the debugger. For non-debug versions, we don't
* normally use a reserve, since the reserve is only useful for manually
* recovering from stack overflows in the debugger.
*/
size_t vm_init_stack_reserve();
/*
* Termination - shut down the debugger. Notifies the debugger UI that
* we're terminating the executable.
*/
void vm_terminate_debug_shutdown(VMG0_);
/*
* termination - delete debugger-related objects, if any were allocated
* in vm_init_debugger()
*/
void vm_terminate_debug_delete(VMG0_);
#endif /* VMINIT_H */
|