oveRTOS C API
Embedded RTOS framework — build system, configuration, and portable C API
Loading...
Searching...
No Matches
eventgroup.h
1/*
2 * Copyright (C) 2026 Kamil Lulko <kamil.lulko@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 *
6 * This file is part of oveRTOS.
7 */
8
30#ifndef OVE_EVENTGROUP_H
31#define OVE_EVENTGROUP_H
32
33#include "ove/types.h"
34#include "ove_config.h"
35#include "ove/storage.h"
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
48#define OVE_EG_WAIT_ALL 0x01
49
58#define OVE_EG_CLEAR_ON_EXIT 0x02
59
60#ifdef CONFIG_OVE_EVENTGROUP
61
74 ove_eventgroup_storage_t *storage);
75
86
96#ifdef OVE_HEAP_EVENTGROUP
98
109#elif !defined(__ZIG_CIMPORT__) /* !OVE_HEAP_EVENTGROUP — zero-heap mode */
110
111#define ove_eventgroup_create(peg) \
112 ({ static ove_eventgroup_storage_t _ove_stor_; \
113 ove_eventgroup_init((peg), &_ove_stor_); })
114#define ove_eventgroup_destroy(eg) ove_eventgroup_deinit(eg)
115
116#endif /* OVE_HEAP_EVENTGROUP */
117
132 ove_eventbits_t bits);
133
145 ove_eventbits_t bits);
146
169 ove_eventbits_t bits,
170 uint32_t flags, uint32_t timeout_ms,
171 ove_eventbits_t *result);
172
187
198
199#else /* !CONFIG_OVE_EVENTGROUP */
200
201static inline int ove_eventgroup_create(ove_eventgroup_t *eg) { (void)eg; return OVE_ERR_NOT_SUPPORTED; }
202static inline void ove_eventgroup_destroy(ove_eventgroup_t eg) { (void)eg; }
203static inline ove_eventbits_t ove_eventgroup_set_bits(ove_eventgroup_t eg, ove_eventbits_t bits) { (void)eg; (void)bits; return 0; }
204static inline ove_eventbits_t ove_eventgroup_clear_bits(ove_eventgroup_t eg, ove_eventbits_t bits) { (void)eg; (void)bits; return 0; }
205static inline int ove_eventgroup_wait_bits(ove_eventgroup_t eg, ove_eventbits_t bits, uint32_t flags, uint32_t timeout_ms, ove_eventbits_t *result) { (void)eg; (void)bits; (void)flags; (void)timeout_ms; (void)result; return OVE_ERR_NOT_SUPPORTED; }
206static inline ove_eventbits_t ove_eventgroup_set_bits_from_isr(ove_eventgroup_t eg, ove_eventbits_t bits) { (void)eg; (void)bits; return 0; }
207static inline ove_eventbits_t ove_eventgroup_get_bits(ove_eventgroup_t eg) { (void)eg; return 0; }
208
209#endif /* CONFIG_OVE_EVENTGROUP */
210
211#ifdef __cplusplus
212}
213#endif
214
/* end of ove_eventgroup group */
216
217#endif /* OVE_EVENTGROUP_H */
ove_eventbits_t ove_eventgroup_set_bits_from_isr(ove_eventgroup_t eg, ove_eventbits_t bits)
Set bits in the event group from an ISR.
void ove_eventgroup_deinit(ove_eventgroup_t eg)
Deinitialise a statically-allocated event group.
void ove_eventgroup_destroy(ove_eventgroup_t eg)
Destroy a heap-allocated event group.
ove_eventbits_t ove_eventgroup_clear_bits(ove_eventgroup_t eg, ove_eventbits_t bits)
Clear one or more bits in the event group.
ove_eventbits_t ove_eventgroup_get_bits(ove_eventgroup_t eg)
Read the current bit value of the event group without blocking.
int ove_eventgroup_init(ove_eventgroup_t *eg, ove_eventgroup_storage_t *storage)
Initialise an event group using caller-provided static storage.
int ove_eventgroup_create(ove_eventgroup_t *eg)
Allocate and initialise a heap-backed event group.
int ove_eventgroup_wait_bits(ove_eventgroup_t eg, ove_eventbits_t bits, uint32_t flags, uint32_t timeout_ms, ove_eventbits_t *result)
Block until one or all of the requested bits are set.
ove_eventbits_t ove_eventgroup_set_bits(ove_eventgroup_t eg, ove_eventbits_t bits)
Set one or more bits in the event group from task context.
#define OVE_ERR_NOT_SUPPORTED
The requested feature is not supported by the active backend.
Definition types.h:38
struct ove_eventgroup * ove_eventgroup_t
Opaque handle for an event-group (bit-field) object.
Definition types.h:97
uint32_t ove_eventbits_t
Bit-mask type used by the event-group API.
Definition types.h:153