When the OSKit is installed using make install, a set of standard ANSI/POSIX-defined header files, containing definitions and function prototypes for the minimal C library, are installed in the selected include directory under the subdirectory oskit/c/. For example, the version of the ANSI C header file string.h provided with the minimal C library is installed as prefix/include/oskit/c/string.h. These header files are installed in a subdirectory rather than in the top level include directory so that if the OSKit is installed in a standard place shared by other packages and/or system files, such as /usr or /usr/local, the minimal C library's header files will not conflict with header files provided by normal application-oriented C libraries, nor will applications ``accidentally'' use the minimal C library's header files when they really want the normal C library's header files.
There are two main ways a kernel or other program can explicitly use the OSKit minimal C library's header files. The first is by including the oskit/c/ prefix directly in all relevant #include statements; e.g., `#include <oskit/c/string.h>' instead of `#include <string.h>'. However, since this method effectively makes the client code somewhat specific to the OSKit minimal C library by hard-coding OSKit-specific pathnames into the #include statements, this method should generally only be used if for some reason the code in question is extremely dependent on the OSKit minimal C library in particular, and it would never make sense for it to include corresponding header files from a different C library.
For typical code using the minimal C library, which simply needs ``a printf'' or ``a strcpy,'' the preferred method of including the library's header files is to code the #include lines without the oskit/c/ prefix, just as in application code using an ordinary C library, and then add an appropriate -I (include directory) directive to the compiler command line so that the oskit/c/ directory will be scanned automatically for these header files before the top-level include directory and other include directories in the system are searched. Typically this -I directive can be added to the CFLAGS variable in the Makefile used to build the program in question. In fact, the OSKit itself uses this method to allow code in other toolkit components and in the minimal C library itself to make use of definitions and functions provided by the minimal C library. (Of course, these dependencies are clearly documented, so that if you want to use other OSKit components but not the minimal C library, or only part of the minimal C library, it is possible to do so cleanly.)
Except when otherwise noted, all of the definitions and functions described in this section are very simple, have few dependencies, and behave as in ordinary C libraries. Functions that are not self-contained and interact with the surrounding environment in non-trivial ways (e.g., the memory allocation functions) are described in more detail in later sections.