PebbleOS
Loading...
Searching...
No Matches
Uptime and cycles

Monotonic time since the scheduler started, and the CPU cycle counter. More...

Functions

uint64_t pbl_uptime_ticks (void)
 Get the time since the scheduler started, in ticks.
 
uint64_t pbl_uptime_ms (void)
 Get the time since the scheduler started, in milliseconds.
 
static uint32_t pbl_cycle_get_32 (void)
 Read the CPU cycle counter.
 
uint32_t pbl_cycles_per_sec (void)
 Get the rate of the CPU cycle counter.
 

Detailed Description

Monotonic time since the scheduler started, and the CPU cycle counter.

Uptime counts kernel ticks, including those spent in tickless sleep, in 64 bits so it never wraps. The cycle counter is for short, precise measurements: it is 32 bits wide, its rate follows the CPU clock and it may stop while the CPU sleeps.

uint64_t start = pbl_uptime_ms();
do_work();
PBL_LOG_DBG("took %" PRIu32 " ms", (uint32_t)(pbl_uptime_ms() - start));
uint32_t c0 = pbl_cycle_get_32();
do_short_work();
uint32_t cycles = pbl_cycle_get_32() - c0;
static uint32_t pbl_cycle_get_32(void)
Read the CPU cycle counter.
Definition time.h:55
uint64_t pbl_uptime_ms(void)
Get the time since the scheduler started, in milliseconds.
#define PBL_LOG_DBG(fmt,...)
Log a routine debug message, possibly queued.
Definition logging.h:572

Function Documentation

◆ pbl_cycle_get_32()

static uint32_t pbl_cycle_get_32 ( void  )
static

Read the CPU cycle counter.

Privileged only. Wraps around; compare differences, not absolute values.

Returns
Current cycle count.

◆ pbl_cycles_per_sec()

uint32_t pbl_cycles_per_sec ( void  )

Get the rate of the CPU cycle counter.

Returns
Cycles per second at the current CPU clock.

◆ pbl_uptime_ms()

uint64_t pbl_uptime_ms ( void  )

Get the time since the scheduler started, in milliseconds.

Returns
Milliseconds elapsed, with tick resolution.

◆ pbl_uptime_ticks()

uint64_t pbl_uptime_ticks ( void  )

Get the time since the scheduler started, in ticks.

Returns
Ticks elapsed, at PBL_TICK_HZ.