  Time awareness is critical to a broad range of emerging applications -- in
Cyber-Physical Systems and Internet of Things -- running on commodity platforms
and operating systems. Traditionally, time is synchronized across devices
through a best-effort background service whose performance is neither
observable nor controllable, thus consuming system resources independently of
application needs while not allowing the applications and OS services to adapt
to changes in uncertainty in system time. We advocate for rethinking how time
is managed in a system stack. In this paper, we propose a new clock model that
characterizes various sources of timing uncertainties in true time. We then
present a Kalman filter based time synchronization protocol that adapts to the
uncertainties exposed by the clock model. Our realization of a
uncertainty-aware clock model and synchronization protocol is based on a
standard embedded Linux platform.
