Library interface

author Richard Brooksby
date 1996-09-03
index terms pair: library interface; design
revision //
status incomplete design
tag design.mps.lib


.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.


.goal: The goals of the MPS library interface are: 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). To allow the core MPS convenient access to ISO C functionality that is provided on freestanding platforms (see design.mps.exec-env).



.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.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.


.impl: The MPS Library Interface comprises a header file impl.h.mpslib 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 header <stddef.h>.

Document History

  • 1996-09-03 RB Incomplete design.
  • 2002-06-07 RB Converted from MMInfo database design document.
  • 2013-05-23 GDR Converted to reStructuredText.