time.h¶
Defines
-
EMB_TICK_NS¶
-
EMB_TIMEOUT_MAX_TICKS¶
-
EMB_DURATION_(x)¶
-
EMB_TIMEOUT_(x)¶
-
EMB_INSTANT_(x)¶
-
EMB_NS_TO_TICKS(n)¶
-
EMB_US_TO_TICKS(n)¶
-
EMB_MS_TO_TICKS(n)¶
-
EMB_SEC_TO_TICKS(n)¶
-
EMB_TICKS(n)¶
-
EMB_NS(n)¶
-
EMB_US(n)¶
-
EMB_MS(n)¶
-
EMB_SEC(n)¶
-
EMB_NO_WAIT¶
-
EMB_WAIT_FOREVER¶
-
EMB_TIMEOUT(d)¶
-
EMB_TIMEOUT_IS_FOREVER(t)¶
-
EMB_TIMEOUT_IS_NO_WAIT(t)¶
-
EMB_DURATION_IS_ZERO(d)¶
Typedefs
-
typedef struct emb_instant emb_instant_t¶
-
typedef struct emb_duration emb_duration_t¶
-
typedef struct emb_timeout emb_timeout_t¶
Functions
-
static inline uint64_t emb_mul_sat_u64(uint64_t a, uint64_t b)¶
emb_mul_sat_u64() - Multiply unsigned values with saturation.
Context: thread isr prekernel Blocking: no Timing: O(1) Ownership: none Configuration: Requirements: API-023 Since: 0.2 Stability: yes
Return: a * b, or UINT64_MAX when the mathematical product overflows. This conversion helper is also used by the public duration macros.
- Parameters:
a – First unsigned factor.
b – Second unsigned factor.
-
static inline emb_tick_t emb_ns_to_ticks(uint64_t ns)¶
emb_ns_to_ticks() - Convert nanoseconds to ticks, rounding up.
Context: thread isr prekernel Blocking: no Timing: O(1) Ownership: none Configuration: Requirements: API-023 KRN-TIM-007 Since: 0.2 Stability: yes
Return: ceil(ns / CONFIG_EMB_TICK_NS), saturated to EMB_TICK_MAX. The addition needed for rounding is itself checked for overflow.
- Parameters:
ns – Unsigned nanosecond duration; zero converts to zero.
-
emb_instant_t emb_time_now(void)¶
emb_time_now() - Read the kernel monotonic clock.
Context: thread isr prekernel Blocking: no Timing: O(1) Ownership: none Configuration: Requirements: KRN-TIM-001 KRN-TIM-032 Since: 0.2 Stability: yes
Return: the current instant; zero before kernel start, wrapping with the configured tick width. Use emb_instant_before() for 32-bit ordering.
-
emb_timeout_t emb_timeout_from_duration(emb_duration_t d)¶
emb_timeout_from_duration() - A timeout that waits at most
d.
Context: thread isr prekernel Blocking: no Timing: O(1) Ownership: none Configuration: Requirements: API-023 KRN-TIM-022 Since: 0.2 Stability: yes
- Parameters:
d – The duration; saturates to EMB_TIMEOUT_MAX_TICKS so a finite wait never reads as EMB_WAIT_FOREVER (SPEC-001 §7.3, SPEC-003 §5.2).
-
emb_instant_t emb_instant_add(emb_instant_t t, emb_duration_t d)¶
- Add a duration to a kernel-clock instant.
Saturates at EMB_TICK_MAX in the 64-bit profile; wraps in the 32-bit profile, whose instant space is circular (SPEC-003 §5.2).
Context: thread isr prekernel Blocking: no Timing: O(1) Ownership: none Configuration: Requirements: API-022 API-023 KRN-TIM-022 Since: 0.2 Stability: yes
- Parameters:
t – Kernel-clock instant to advance.
d – Duration to add; scheduling comparisons still require the 32-bit half-range window.
-
emb_duration_t emb_instant_sub(emb_instant_t later, emb_instant_t earlier)¶
emb_instant_sub() -
laterminusearlier, zero whenlateris not afterearlier.
Context: thread isr prekernel Blocking: no Timing: O(1) Ownership: none Configuration: Requirements: API-022 KRN-TIM-003 Since: 0.2 Stability: yes
- Parameters:
later – Candidate later instant, within the 32-bit comparison window if applicable.
earlier – Reference instant on the same kernel clock.
-
bool emb_instant_before(emb_instant_t a, emb_instant_t b)¶
emb_instant_before() - Is
abeforeb? Wrap-safe in the 32-bit profile.
Context: thread isr prekernel Blocking: no Timing: O(1) Ownership: none Configuration: Requirements: API-022 KRN-TIM-003 KRN-TIM-022 Since: 0.2 Stability: yes
- Parameters:
a – First instant on the kernel clock.
b – Second instant; 32-bit ordering requires separation less than half the counter range.
-
uint64_t emb_duration_to_ns(emb_duration_t d)¶
- Exact ticks-to-nanoseconds conversion, saturating.
Context: thread isr prekernel Blocking: no Timing: O(1) Ownership: none Configuration: Requirements: API-023 Since: 0.2 Stability: yes
- Parameters:
d – Duration in kernel ticks; multiplication saturates to UINT64_MAX.
-
bool emb_duration_is_saturated(emb_duration_t d)¶
emb_duration_is_saturated() - Does
dhold the saturated tick value?
Context: thread isr prekernel Blocking: no Timing: O(1) Ownership: none Configuration: Requirements: API-023 Since: 0.2 Stability: yes
- Parameters:
d – Duration to inspect; true means ticks == EMB_TICK_MAX, including an explicitly supplied maximum.
-
struct emb_instant¶
- #include <time.h>
Public Members
-
emb_tick_t ticks¶
-
emb_tick_t ticks¶
-
struct emb_duration¶
- #include <time.h>
Public Members
-
emb_tick_t ticks¶
-
emb_tick_t ticks¶
-
struct emb_timeout¶
- #include <time.h>
Public Members
-
emb_tick_t ticks¶
-
emb_tick_t ticks¶