µEvLoop
A fast and lightweight event loop aimed at embedded platforms in C99.
system-queues.h
Go to the documentation of this file.
1 
5 #ifndef UEL_SYSTEM_QUEUES_H
6 #define UEL_SYSTEM_QUEUES_H
7 
9 #include <stdint.h>
11 
12 #include "uevloop/system/event.h"
13 #include "uevloop/config.h"
15 
24 typedef struct sysqueues uel_sysqueues_t;
25 struct sysqueues {
26 
28  #define UEL_SYSQUEUES_EVENT_QUEUE_SIZE (1<<UEL_SYSQUEUES_EVENT_QUEUE_SIZE_LOG2N)
35  uel_cqueue_t event_queue;
36 
37 
39  #define UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE (1<<UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE_LOG2N)
47  uel_cqueue_t schedule_queue;
48 };
49 
54 void uel_sysqueues_init(uel_sysqueues_t *queues);
55 
63 void uel_sysqueues_enqueue_event(uel_sysqueues_t *queues, uel_event_t *event);
64 
71 uel_event_t *uel_sysqueues_get_enqueued_event(uel_sysqueues_t *queues);
72 
79 uintptr_t uel_sysqueues_count_enqueued_events(uel_sysqueues_t *queues);
80 
88 void uel_sysqueues_schedule_event(uel_sysqueues_t *queues, uel_event_t *event);
89 
96 uel_event_t *uel_sysqueues_get_scheduled_event(uel_sysqueues_t *queues);
97 
104 uintptr_t uel_sysqueues_count_scheduled_events(uel_sysqueues_t *queues);
105 
106 #endif /* end of include guard: UEL_SYSTEM_QUEUES_H */
sysqueues::schedule_queue_buffer
void * schedule_queue_buffer[UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE]
The schedule queue buffer.
Definition: system-queues.h:41
uel_sysqueues_count_scheduled_events
uintptr_t uel_sysqueues_count_scheduled_events(uel_sysqueues_t *queues)
Counts the number of elements in the schedule queue.
uel_sysqueues_init
void uel_sysqueues_init(uel_sysqueues_t *queues)
Initialises a new uel_sysqueues_t.
event
Events are special messages passed around the core. They represent tasks to be run at some point by t...
Definition: event.h:58
UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE
#define UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE
Unrolls the UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE_LOG2N value to its power-of-two form.
Definition: system-queues.h:39
uel_sysqueues_get_enqueued_event
uel_event_t * uel_sysqueues_get_enqueued_event(uel_sysqueues_t *queues)
Pops an event from the event queue.
sysqueues::schedule_queue
uel_cqueue_t schedule_queue
The application's schedule queue.
Definition: system-queues.h:47
uel_sysqueues_enqueue_event
void uel_sysqueues_enqueue_event(uel_sysqueues_t *queues, uel_event_t *event)
Pushes an event into the event queue.
sysqueues::event_queue
uel_cqueue_t event_queue
The application's event queue.
Definition: system-queues.h:35
circular-queue.h
Defines circular queues, fast and efficient FIFO data structures.
event.h
Defines events and methods to configure events.
sysqueues::event_queue_buffer
void * event_queue_buffer[UEL_SYSQUEUES_EVENT_QUEUE_SIZE]
The event queue buffer.
Definition: system-queues.h:30
uel_sysqueues_count_enqueued_events
uintptr_t uel_sysqueues_count_enqueued_events(uel_sysqueues_t *queues)
Counts the number of elements in the event queue.
config.h
Central repository of system configuration. This is meant to be edited by the programmer as needed.
UEL_SYSQUEUES_EVENT_QUEUE_SIZE
#define UEL_SYSQUEUES_EVENT_QUEUE_SIZE
Unrolls the UEL_SYSQUEUES_EVENT_QUEUE_SIZE_LOG2N value to its power-of-two form.
Definition: system-queues.h:28
uel_sysqueues_schedule_event
void uel_sysqueues_schedule_event(uel_sysqueues_t *queues, uel_event_t *event)
Pushes an event into the schedule queue.
uel_sysqueues_get_scheduled_event
uel_event_t * uel_sysqueues_get_scheduled_event(uel_sysqueues_t *queues)
Pops an event from the schedule queue.
sysqueues
A container for the system's internal queues.
Definition: system-queues.h:25