Provide a mechanism to allow an arbitrary adjustment to be applied to
all subsequent calls to time().
Note that the underlying clock source (e.g. the RTC clock) will not be
changed; only the time as reported within iPXE will be affected.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
* 400.
*/
+/** Current system clock offset */
+signed long time_offset;
+
/** Days of week (for debugging) */
static const char *weekdays[] = {
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
/* Include all architecture-dependent time API headers */
#include <bits/time.h>
+extern signed long time_offset;
+
/**
- * Get current time in seconds
+ * Get current time in seconds (ignoring system clock offset)
*
* @ret time Time, in seconds
*/
time_t time_now ( void );
+/**
+ * Adjust system clock
+ *
+ * @v delta Clock adjustment, in seconds
+ */
+static inline __attribute__ (( always_inline )) void
+time_adjust ( signed long delta ) {
+
+ time_offset += delta;
+}
+
#endif /* _IPXE_TIME_H */
* @v t Time to fill in, or NULL
* @ret time Current time
*/
-static inline time_t time ( time_t *t ) {
+static inline __attribute__ (( always_inline )) time_t time ( time_t *t ) {
time_t now;
- now = time_now();
+ now = ( time_now() + time_offset );
if ( t )
*t = now;
return now;