The current CMU Mach 3.0 microkernel exports simple timestamp and delay abstractions through host\_get\_time() and a timeout parameter to mach\_msg(). While this is sufficient for many purposes, it does not provide the precision or generality required for a variety of real-time applications. In this paper we describe extensions to CMU's Mach 3.0 which provide users with flexible time-based synchronization and timestamp services. Additionally, we will describe how timing and scheduling services are integrated to allow real-time applications to handle timing faults.