Ravenbrook / Projects / Memory Pool System / Master Product Sources / Design Documents

Memory Pool System Project


         THE DESIGN OF THE MEMORY POOL SYSTEM LIBRARY INTERFACE
                             design.mps.lib
                           incomplete design
                           richard 1996-09-03

INTRODUCTION

.intro: This document is the design of the MPS Library Interface, a part of the 
plinth.

.readership: Any MPS developer.  Any clients that are prepared to read this in 
order to get documentation.


GOALS

.goal: The goals of the MPS library interface are:

.goal.host: To control the dependency of the MPS on the hosted ISO C library so 
that the core MPS remains freestanding (see design.mps.exec-env).

.goal.free: To allow the core MPS convenient access to ISO C functionality that 
is provided on freestanding platforms (see design.mps.exec-env.std.com.free).


DESCRIPTION


Overview

.overview.access: The core MPS needs to access functionality that could be 
provided by an ISO C hosted environment.

.overview.hosted: The core MPS must not make direct use of any facilities in 
the hosted environment (design.mps.exec-env).  However, it is sensible to make 
use of them when the MPS is deployed in a hosted environment.

.overview.hosted.indirect: The core MPS does not make any direct use of hosted 
ISO C library facilities.  Instead, it indirects through the MPS Library 
Interface, impl.h.mpslib.

.overview.free: The core MPS can make direct use of freestanding ISO C library 
facilities and does not need to include any of the header files <limits.h>, 
<stdarg.h>, and <stddef.h> directly.

.overview.complete: The MPS Library Interface can be considered as the complete 
"interface to ISO" (in that it provides direct access to facilities that we get 
in a freestanding environment and equivalents of any functionality we require 
from the hosted environment).

.overview.provision.client: In a freestanding environment the client is 
expected to provide functions meeting this interface to the MPS.

.overview.provision.hosted: In a hosted environment, impl.c.mpsliban may be 
used.  It just maps impl.h.mpslib directly onto the ISO C library equivalents.



 - MPS Library Interface Diagram 


Outside the Interface

We provide impl.c.mpsliban to the client, for two reasons:

  1. he can use it to connect the MPS to the ISO C library if it exists,

  2. as an example of an implementation of the MPS Library Interface.


IMPLEMENTATION

.impl: The MPS Library Interface comprises a header file impl.h.mpslib 
(mpslib.h) and some documentation.

.impl.decl: The header file defines the interface to definitions which parallel 
those parts of the non-freestanding ISO headers which are used by the MPS.

.impl.include: The header file also includes the freestanding headers 
<limits.h>, <stdarg.h>, and <stddef.h> (and not <float.h>, though perhaps it 
should).


NOTES

.doc: User doc in doc.mps.guide.interface and doc.mps.guide.appendix-plinth.

ATTACHMENT
   "MPS Library Interface Diagram"

A. References

B. Document History

2002-06-07 RB Converted from MMInfo database design document.