Next: 1.2.3 Component Libraries
Up: 1.2 Road Map
Previous: 1.2.1 Interfaces
The OSKit's function libraries
provide basic low-level services
in a traditional C-language function-oriented style.
For example,
the OSKit provides libraries
exporting kernel bootstrap support,
standard C library functions,
and executable program loading.
These libraries are designed
to be usable and controllable in a very fine-grained manner,
generally on a function-by-function basis,
allowing the client OS to easily use particular library functions
while leaving out or individually overriding other functions.
The dependencies between library functions are minimized,
as are dependencies of library functions on other libraries;
where these dependencies inevitably exist,
they are well-defined and explicitly exposed to the OS developer.
In general, the implementation details of these libraries
are intentionally exposed rather than hidden.
The function libraries make only minimal use
of the OSKit's object-oriented COM interfaces,
instead generally defining their own function-oriented interfaces
in ordinary C header files.
This design strategy provides
maximum power and flexibility to the OS developer
at the cost of increasing the dependence of the client OS
on the implementation details of the libraries;
we have found this to be a good design tradeoff
for the low-level OSKit facilities
which usually must be customized extensively
in order to fit into any particular OS environment.
Following is a summary of
the function libraries currently provided by the OSKit
along with the chapter numbers in which each is described:
- 9
- liboskit_c:
A simple, minimal C library
which minimizes dependencies with the environment and between modules,
to provide common C library services in a restricted OS environment.
For example, this library provides
many standard string, memory, and other utility functions,
as well as a formatted I/O facility (e.g., printf)
designed for easy use in restricted environments such as kernels.
- 10
- liboskit_kern:
Kernel support code for setting up a basic OS kernel environment,
including providing default handlers for traps and interrupts and such.
This library includes many general utilities useful in kernel code,
such as functions to access special processor registers,
set up and manipulate page tables, and switch between processor modes
(e.g., between real and protected mode on the x86).
Also includes facilities for convenient source-level remote debugging
of OS kernels under development.
- 11
- liboskit_smp:
More kernel support code, this library deals with setting up
a multiprocessor system to the point where it can be used by
the operating system.
Also (to be) included are message-passing routines and
synchronization primitives, which are necessary to flush
remote TLBs.
- 4
- liboskit_com:
Utility functions for handling COM interfaces, and a suite
of generic wrapper components. These wrappers map one OSKit COM
interface to another, or implement simple functionality such as
synchronization by creating proxy COM objects that wrap the
COM objects provided by more primitive components.
- 6
- liboskit_dev:
This library provides default implementations
of the ``glue'' functions required by device drivers
and other ``large'' encapsulated components (networking, filesystems)
imported from other operating systems,
running in the OSKit Device Driver (née ``fdev'') framework.
(The framework's current name reveals its heritage; today,
a more accurate name would be the ``OS Environment'' framework.)
The default implementations of these functions
are designed for simple kernels using liboskit_kern;
for more elaborate kernel (or user-mode) environments,
the client OS will have to override
some or all of the functions in this library.
The following four libraries are provided mainly for convenience;
they are not as general or as well documented as the other libraries but
are still useful. See the source directories and READMEs for details.
-
- liboskit_startup:
Contains functions to start up and initialize
various OSKit components,
making it easier to write OSKit programs.
-
- liboskit_unsupp:
Contains various unsupported hacks and utilities.
-
- liboskit_unix:
Provides the necessary support to debug
and run certain OSKit components on FreeBSD in user-mode.
One can tweak this to run on Linux.
-
- liboskit_fudp:
Provides a ``Fake UDP'' implementation:
a restricted send-only no-fragmenting version of UDP. This can
be useful with the hpfq library (in Chapter 28).
Next: 1.2.3 Component Libraries
Up: 1.2 Road Map
Previous: 1.2.1 Interfaces
University of Utah Flux Research Group