Nexus Embedded Platform 0.1.0
Statically assembled reusable embedded mechanisms
Loading...
Searching...
No Matches
time.h
Go to the documentation of this file.
1
9#ifndef NEXUS_TIME_H
10#define NEXUS_TIME_H
11
12#include "nexus/core/status.h"
13#ifdef __cplusplus
14extern "C" {
15#endif
20typedef uint64_t nx_time_us_t;
21#define NX_DEADLINE_NEVER UINT64_MAX
26typedef struct {
28 void* context;
30
34typedef struct {
35 uint64_t ticks;
36 uint32_t previous;
37 uint32_t frequency_hz;
40
83nx_time_us_t nx_deadline_after(nx_time_us_t now, uint64_t duration_us);
100 uint32_t frequency_hz);
118 nx_time_us_t* time_us);
119#ifdef __cplusplus
120}
121#endif
122
123#endif
Small vendor-independent result vocabulary.
nx_result_t
Operation result; success at submission means admission only.
Definition status.h:21
State for extending one 32-bit free-running hardware counter.
Definition time.h:34
uint64_t ticks
Definition time.h:35
uint32_t frequency_hz
Definition time.h:37
uint32_t previous
Definition time.h:36
bool initialized
Definition time.h:38
An explicitly injected clock; its context outlives all borrowers.
Definition time.h:26
nx_time_us_t(* read)(void *context)
Definition time.h:27
void * context
Definition time.h:28
nx_result_t nx_clock32_initialize(nx_clock32_t *clock, uint32_t counter, uint32_t frequency_hz)
Initialize counter extension and its clock domain.
bool nx_deadline_expired(nx_time_us_t deadline, nx_time_us_t now)
Test an absolute deadline against a clock snapshot.
nx_time_us_t nx_time_now_us(void)
Read the selected provider's monotonic clock.
nx_time_us_t nx_deadline_after(nx_time_us_t now, uint64_t duration_us)
Add a duration without wrapping the monotonic domain.
uint64_t nx_time_us_t
Microseconds in one boot/clock domain; no wall-clock semantics.
Definition time.h:20
nx_result_t nx_clock32_observe(nx_clock32_t *clock, uint32_t counter, nx_time_us_t *time_us)
Extend a wrapping counter and convert to microseconds.