9 #define USEC_PER_SEC 1000000
17 PC_FREQ0
, /* 1.193182Mhz */
18 PC_FREQ1
, /* 32.768 Khz */
26 void set(std::function
<void (void)> func
);
29 void set(T
*obj
, void (T::*method
)(void)) {
30 this->func
= std::bind(method
, obj
);
33 void update(uint64_t next_deadline
, TimeUnit unit
);
36 uint64_t get_deadline(void);
39 void marshal(Marshaller
*m
, const char *name
);
43 std::function
<void (void)> func
;
49 static TimeSource
*get_instance(void);
51 virtual uint64_t now(TimeUnit unit
) = 0;
52 virtual void arm(Timer
*timer
) = 0;
53 virtual void cancel(Timer
*timer
) = 0;
56 static inline uint64_t now(TimeUnit unit
)
58 return TimeSource::get_instance()->now(unit
);
61 uint64_t time_to_ns(uint64_t when
, TimeUnit unit
);
62 uint64_t ns_to_time(uint64_t when
, TimeUnit unit
);
64 void register_time_source(TimeSource
*ts
);