aboutsummaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authornodist <kevin.comas.git@gmail.com>2026-09-28 16:15:39 -0400
committernodist <kevin.comas.git@gmail.com>2026-09-28 16:15:39 -0400
commit2e908a7be31558cc98a9f0e97556e49ee5748c16 (patch)
tree3c8d8a7123d46b5e2b8f6a5c9943faf4c64c2efd /source
parent9a82127c476bf99556bbc69e181025afcba19d26 (diff)
inline some queue fns
Diffstat (limited to 'source')
-rw-r--r--source/queue.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/source/queue.c b/source/queue.c
index 6f36ce8..350c4e2 100644
--- a/source/queue.c
+++ b/source/queue.c
@@ -1,17 +1,9 @@
#include "kpl.h"
-void kpl_task_queue_init(kpl_task_queue *task_queue) {
- __atomic_store_n(&task_queue->dummy.next, NULL, __ATOMIC_RELAXED);
- __atomic_store_n(&task_queue->head, &task_queue->dummy, __ATOMIC_RELAXED);
- task_queue->tail = (kpl_task*) &task_queue->dummy;
-}
+extern inline void kpl_task_queue_init(kpl_task_queue *task_queue);
-void kpl_task_queue_add(kpl_task_queue *task_queue, kpl_task *task) {
- __atomic_store_n(&task->next, NULL, __ATOMIC_RELAXED);
- kpl_task *head = __atomic_exchange_n(&task_queue->head, task, __ATOMIC_SEQ_CST);
- __atomic_store_n(&head->next, task, __ATOMIC_RELEASE);
-}
+extern inline void kpl_task_queue_add(kpl_task_queue *task_queue, kpl_task *task);
kpl_task *kpl_task_queue_next(kpl_task_queue *task_queue) {
kpl_task *task = NULL;
@@ -45,7 +37,9 @@ bool kpl_ring_queue_init(kpl_ring_queue *ring_queue, int8_t size_pow2) {
if (size_pow2 < KPL_RING_QUEUE_MIN_POW2 || size_pow2 > KPL_RING_QUEUE_MAX_POW2)
return false;
size_t size = 1L << size_pow2;
- ring_queue->items = calloc(1, sizeof(kpl_ring_queue_item) * size);
+ ring_queue->mmap_size = KPL_PAGE_SIZE_ROUND(sizeof(kpl_ring_queue_item) * size);
+ ring_queue->items = mmap(NULL, ring_queue->mmap_size,
+ PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
ring_queue->items_mask = size - 1;
__atomic_store_n(&ring_queue->head_index, 0, __ATOMIC_RELAXED);
__atomic_store_n(&ring_queue->tail_index, 0, __ATOMIC_RELAXED);
@@ -54,9 +48,7 @@ bool kpl_ring_queue_init(kpl_ring_queue *ring_queue, int8_t size_pow2) {
return true;
}
-void kpl_ring_queue_free(kpl_ring_queue *ring_queue) {
- free(ring_queue->items);
-}
+extern inline void kpl_ring_queue_free(kpl_ring_queue *ring_queue);
bool kpl_ring_queue_add(kpl_ring_queue *ring_queue, void *data) {
for (;;) {