Before we get started on the individual systems, I figured a small word about data types is in order. Almost everything in KOS uses the following conventions for data types. KOS' architecture specific type header (arch/type.h) defines types int8, int16, int32, and int64 to match signed integers of the appropriate number of bits. uint8, uint16, uint32, and uint64 are the same, but unsigned. All of those types have corresponding volatile versions with a 'v' prefix (vint8, vuint8, etc). Booleans or countsare often stored as int, but counts are also often uint32, depending on the circumstance. Functions that can return errors generally return them as a negative int, and success as a zero int. Strings are passed around as const char *. Individual characters are generally int. Several other misc types are defined, including some ANSI C compatibility types (u_short, etc) but those are the main ones.