summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/ipxe/time.h15
-rw-r--r--src/include/time.h4
2 files changed, 16 insertions, 3 deletions
diff --git a/src/include/ipxe/time.h b/src/include/ipxe/time.h
index 4c5bb2a00..89bf90e03 100644
--- a/src/include/ipxe/time.h
+++ b/src/include/ipxe/time.h
@@ -50,11 +50,24 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
/* 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 */
diff --git a/src/include/time.h b/src/include/time.h
index 462ac6999..ab93a3dbb 100644
--- a/src/include/time.h
+++ b/src/include/time.h
@@ -39,10 +39,10 @@ struct tm {
* @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;