diff --git a/src/xrt/auxiliary/util/u_wait.h b/src/xrt/auxiliary/util/u_wait.h
new file mode 100644
index 000000000..9baa4f62c
--- /dev/null
+++ b/src/xrt/auxiliary/util/u_wait.h
@@ -0,0 +1,55 @@
+// Copyright 2022, Collabora, Ltd.
+// SPDX-License-Identifier: BSL-1.0
+/*!
+ * @file
+ * @brief  Tiny file to implement precise waiting functions.
+ * @author Jakob Bornecrantz <jakob@collabora.com>
+ * @ingroup aux_util
+ */
+
+#pragma once
+
+#include "xrt/xrt_config_os.h"
+#include "os/os_time.h"
+
+#if defined(XRT_DOXYGEN)
+
+/*!
+ * OS specific tweak to wait time.
+ *
+ * @todo Measure on Windows.
+ * @ingroup aux_util
+ */
+#define U_WAIT_MEASURED_SCHEDULER_LATENCY_NS (uint64_t)(0)
+
+#elif defined(XRT_OS_LINUX) || defined(XRT_OS_ANDROID)
+#define U_WAIT_MEASURED_SCHEDULER_LATENCY_NS (uint64_t)(50 * 1000)
+#elif defined(XRT_OS_WINDOWS)
+#define U_WAIT_MEASURED_SCHEDULER_LATENCY_NS (uint64_t)(0)
+#else
+#error "Unsupported platform!"
+#endif
+
+
+/*!
+ * Waits until the given time using the @ref os_precise_sleeper.
+ *
+ * @ingroup aux_util
+ */
+static inline void
+u_wait_until(struct os_precise_sleeper *sleeper, uint64_t until_ns)
+{
+	uint64_t now_ns = os_monotonic_get_ns();
+
+	// Lets hope its not to late.
+	bool fuzzy_in_the_past = time_is_less_then_or_within_range(until_ns, now_ns, U_TIME_1MS_IN_NS);
+
+	// When we should wake up is in the past:ish.
+	if (fuzzy_in_the_past) {
+		return;
+	}
+
+	// Sufficiently in the future.
+	uint32_t delay = (uint32_t)(until_ns - now_ns - U_WAIT_MEASURED_SCHEDULER_LATENCY_NS);
+	os_precise_sleeper_nanosleep(sleeper, delay);
+}