Skip to content

Clocks

include/time/clock.h View source View on GitHub
struct clock_base {
    size_t     freq_khz;
    fx32_32_t  clock_mult;
};
struct clock {
    uint64_t           (*read)(struct clock *);
    char               *name;
    fx32_32_t          mult;
    fx32_32_t          uncertainty_margin;
    size_t             frequency_khz;
    struct list_head   list_internal;
    enum clock_state   state;
    enum clock_flags   flags;
    enum clock_rating  rating;
    struct clock_base  *base;
    enum errno         (*enable)(struct clock *);
    void               (*disable)(struct clock *);
    void               (*suspend)(struct clock *);
    void               (*resume)(struct clock *);
    void               *private;
};
enum clock_rating {
    CLOCK_RATING_UNSUITABLE,
    CLOCK_RATING_BASE,
    CLOCK_RATING_GOOD,
    CLOCK_RATING_BETTER,
    CLOCK_RATING_BEST,
    CLOCK_RATING_MAX,
};
enum clock_flags {
    CLOCK_FLAG_NONE = 0,
    CLOCK_FLAG_WATCHDOG = 1,
    CLOCK_FLAG_HRES = 1 << 1,
    CLOCK_FLAG_UNSTABLE = 1 << 2,
    CLOCK_FLAG_TIMESTAMP_SOURCE = 1 << 3,
};
enum clock_state {
    CLOCK_STATE_OFF,
    CLOCK_STATE_ON,
};
struct clock * clock_create(const char *fmt);
void clock_register(struct clock *c);
fx32_32_t clock_frequency_to_mult(struct clock *clock);
time_t clock_cycles_to_ns(struct clock *clock, uint64_t cycles);