timecounter
agtimer_get_timecount_default(struct timecounter *tc)
agtimer_get_timecount_sun50i(struct timecounter *tc)
tick_get_timecount(struct timecounter *tc)
sys_tick_get_timecount(struct timecounter *tc)
rpcc_get_timecount(struct timecounter *tc)
u_int rpcc_get_timecount(struct timecounter *);
struct timecounter rpcc_timecounter = {
get_tsc_and_timecount(struct timecounter *tc, uint64_t *tsc, uint64_t *count)
calculate_tc_delay(struct timecounter *tc, uint64_t count1, uint64_t count2)
measure_tsc_freq(struct timecounter *tc)
struct timecounter *reference = tsc_timecounter.tc_priv;
cpu_recalibrate_tsc(struct timecounter *tc)
struct timecounter *reference = tsc_timecounter.tc_priv;
tsc_get_timecount_lfence(struct timecounter *tc)
tsc_get_timecount_rdtscp(struct timecounter *tc)
u_int tsc_get_timecount_lfence(struct timecounter *tc);
u_int tsc_get_timecount_rdtscp(struct timecounter *tc);
struct timecounter tsc_timecounter = {
u_int i8254_get_timecount(struct timecounter *tc);
u_int i8254_simple_get_timecount(struct timecounter *tc);
static struct timecounter i8254_timecounter = {
if (timecounter->tc_get_timecount == i8254_get_timecount) {
i8254_simple_get_timecount(struct timecounter *tc)
i8254_get_timecount(struct timecounter *tc)
agtimer_get_timecount(struct timecounter *tc)
u_int agtimer_get_timecount(struct timecounter *);
static struct timecounter agtimer_timecounter = {
amptimer_get_timecount(struct timecounter *tc)
u_int amptimer_get_timecount(struct timecounter *);
static struct timecounter amptimer_timecounter = {
agtimer_get_timecount_default(struct timecounter *tc)
agtimer_get_timecount_sun50i(struct timecounter *tc)
u_int agtimer_get_timecount_default(struct timecounter *);
u_int agtimer_get_timecount_sun50i(struct timecounter *);
static struct timecounter agtimer_timecounter = {
u_int dmtimer_get_timecount(struct timecounter *);
static struct timecounter dmtimer_timecounter = {
dmtimer_get_timecount(struct timecounter *tc)
u_int gptimer_get_timecount(struct timecounter *);
static struct timecounter gptimer_timecounter = {
gptimer_get_timecount(struct timecounter *tc)
sxitimer_get_timecount(struct timecounter *tc)
u_int sxitimer_get_timecount(struct timecounter *);
static struct timecounter sxitimer_timecounter = {
itmr_get_timecount(struct timecounter *tc)
u_int itmr_get_timecount(struct timecounter *);
struct timecounter itmr_timecounter = {
u_int i8254_get_timecount(struct timecounter *tc);
u_int i8254_simple_get_timecount(struct timecounter *tc);
static struct timecounter i8254_timecounter = {
if (timecounter->tc_get_timecount == i8254_get_timecount) {
i8254_simple_get_timecount(struct timecounter *tc)
i8254_get_timecount(struct timecounter *tc)
geodesc_get_timecount(struct timecounter *tc)
u_int geodesc_get_timecount(struct timecounter *tc);
struct timecounter geodesc_timecounter = {
gscpm_get_timecount(struct timecounter *tc)
u_int gscpm_get_timecount(struct timecounter *tc);
struct timecounter gscpm_timecounter = {
ichpcib_get_timecount(struct timecounter *tc)
u_int ichpcib_get_timecount(struct timecounter *tc);
struct timecounter ichpcib_timecounter = {
rs780e_get_timecount(struct timecounter *arg)
u_int rs780e_get_timecount(struct timecounter *);
struct timecounter rs780e_timecounter = {
u_int clock_get_tc(struct timecounter *);
struct timecounter clock_tc = {
clock_get_tc(struct timecounter *tc)
tb_get_timecount(struct timecounter *tc)
u_int tb_get_timecount(struct timecounter *);
static struct timecounter tb_timecounter = {
u_int cp0_get_timecount(struct timecounter *);
struct timecounter cp0_timecounter = {
cp0_get_timecount(struct timecounter *tc)
extern struct timecounter cp0_timecounter;
ioclock_get_timecount(struct timecounter *tc)
u_int ioclock_get_timecount(struct timecounter *);
struct timecounter ioclock_timecounter = {
u_int tb_get_timecount(struct timecounter *);
static struct timecounter tb_timecounter = {
tb_get_timecount(struct timecounter *tc)
u_int tb_get_timecount(struct timecounter *);
static struct timecounter tb_timecounter = {
tb_get_timecount(struct timecounter *tc)
sh_timecounter_get(struct timecounter *tc)
struct timecounter tc;
u_int sh_timecounter_get(struct timecounter *);
u_int stick_get_timecount(struct timecounter *);
struct timecounter stick_timecounter = {
stick_get_timecount(struct timecounter *tc)
u_int tick_get_timecount(struct timecounter *);
struct timecounter tick_timecounter = {
u_int sys_tick_get_timecount(struct timecounter *);
struct timecounter sys_tick_timecounter = {
tick_get_timecount(struct timecounter *tc)
sys_tick_get_timecount(struct timecounter *tc)
extern void cpu_recalibrate_tsc(struct timecounter *);
acpihpet_gettime(struct timecounter *tc)
u_int acpihpet_gettime(struct timecounter *tc);
static struct timecounter hpet_timecounter = {
extern void cpu_recalibrate_tsc(struct timecounter *);
acpi_get_timecount(struct timecounter *tc)
u_int acpi_get_timecount(struct timecounter *tc);
static struct timecounter acpi_timecounter = {
struct timecounter *tc = &sc->sc_hpet_timecounter;
amdpcib_get_timecount(struct timecounter *tc)
struct timecounter sc_hpet_timecounter;
u_int amdpcib_get_timecount(struct timecounter *tc);
amdpm_get_timecount(struct timecounter *tc)
u_int amdpm_get_timecount(struct timecounter *tc);
static struct timecounter amdpm_timecounter = {
struct timecounter sc_timecounter;
u_int glxpcib_get_timecount(struct timecounter *tc);
struct timecounter *tc = &sc->sc_timecounter;
glxpcib_get_timecount(struct timecounter *tc)
struct timecounter sc_timecounter;
mcx_timecounter_read(struct timecounter *tc)
struct timecounter *tc = &sc->sc_timecounter;
u_int tcpcib_hpet_get_timecount(struct timecounter *tc);
struct timecounter *tc = &sc->sc_hpet_timecounter;
tcpcib_hpet_get_timecount(struct timecounter *tc)
struct timecounter sc_hpet_timecounter;
u_int viapm_get_timecount(struct timecounter *tc);
static struct timecounter viapm_timecounter = {
viapm_get_timecount(struct timecounter *tc)
struct timecounter hv_timecounter = {
hv_gettime(struct timecounter *tc)
u_int hv_gettime(struct timecounter *);
uint64_t pvclock_get(struct timecounter *);
uint pvclock_get_timecount(struct timecounter *);
struct timecounter pvclock_timecounter = {
pvclock_get(struct timecounter *tc)
pvclock_get_timecount(struct timecounter *tc)
struct timecounter *sc_tc;
struct timecounter *timecounter = &dummy_timecounter; /* [T] */
static SLIST_HEAD(, timecounter) tc_list = SLIST_HEAD_INITIALIZER(tc_list);
struct timecounter *tc;
u_int dummy_get_timecount(struct timecounter *);
tc_init(struct timecounter *tc)
if (tc->tc_quality < timecounter->tc_quality)
if (tc->tc_quality == timecounter->tc_quality &&
tc->tc_frequency < timecounter->tc_frequency)
timecounter = tc;
tc_reset_quality(struct timecounter *tc, int quality)
struct timecounter *best = &dummy_timecounter, *tmp;
if (timecounter == tc) {
dummy_get_timecount(struct timecounter *tc)
timecounter = best;
static struct timecounter dummy_timecounter = {
static struct timecounter *last_tc = NULL;
struct timecounter *active_tc;
active_tc = timecounter;
struct timecounter *th_counter; /* [W] */
struct timecounter *newtc, *tc;
tc = timecounter;
timecounter = newtc;
struct timecounter *tc;
(void)timecounter->tc_get_timecount(timecounter);
(void)timecounter->tc_get_timecount(timecounter);
*old = timecounter->tc_freq_adj;
timecounter->tc_freq_adj = *new;
extern struct timecounter *timecounter;
void tc_init(struct timecounter *tc);
void tc_reset_quality(struct timecounter *, int);
struct timecounter;
typedef u_int timecounter_get_t(struct timecounter *);
SLIST_ENTRY(timecounter) tc_next; /* [I] */