Skip to content

Clocks

include/time/clock.h View source View on GitHub
struct clock_base (2 fields) source
§ freq_khz_t freq_khz
§ uint64_t clock_mult
struct clock (15 fields) source
§ uint64_t (*read)(struct clock *)

gives cycles

§ char *name
§ uint64_t mult

cycle to ns

§ fx32_32_t uncertainty_margin

ns per s

§ freq_khz_t frequency_khz
§ struct list_node list_internal
§ enum clock_state state
§ enum clock_flags flags
§ enum clock_rating rating
§ struct clock_base *base
§ enum err (*enable)(struct clock *)

these expect state changes from OFF/ON

§ void (*disable)(struct clock *)
§ void (*suspend)(struct clock *)
§ void (*resume)(struct clock *)
§ void *private
enum clock_rating (6 variants) source
§ CLOCK_RATING_UNSUITABLE
§ CLOCK_RATING_BASE
§ CLOCK_RATING_GOOD
§ CLOCK_RATING_BETTER
§ CLOCK_RATING_BEST
§ CLOCK_RATING_MAX
enum clock_flags (5 variants) source
§ CLOCK_FLAG_NONE = 0
§ CLOCK_FLAG_WATCHDOG = 1
§ CLOCK_FLAG_HRES = 1 << 1
§ CLOCK_FLAG_UNSTABLE = 1 << 2
§ CLOCK_FLAG_TIMESTAMP_SOURCE = 1 << 3

This clock is where all of the timestamp_t’s around the kernel are coming from

enum clock_state (2 variants) source
§ CLOCK_STATE_OFF
§ CLOCK_STATE_ON
struct clock * clock_create(const char *fmt)
source
void clock_register(struct clock *c)
source
void clock_unregister(struct clock *c)
source
void clock_suspend_all(void)
source
void clock_resume_all(void)
source
void clocks_init(void)
source
uint64_t clock_frequency_to_mult(struct clock *clock)
source
time_ns_t clock_cycles_to_ns(struct clock *clock, uint64_t cycles)
source