Arax -8d09c51940345c86062e8ef2427c705ae66e5926
A Runtime Framework for Decoupling Applications from Heterogeneous Accelerators
Loading...
Searching...
No Matches
queue.h
Go to the documentation of this file.
1#ifndef UTILS_QUEUE_HEADER
2#define UTILS_QUEUE_HEADER
3#include <stddef.h>
4#include <stdint.h>
5#include <conf.h>
6#include "spinlock.h"
7
8#ifdef __cplusplus
9extern "C" {
10#endif /* ifdef __cplusplus */
11
15struct queue
16{
18 void * entries[UTILS_QUEUE_CAPACITY];
19
20 #ifdef UTILS_QUEUE_MPMC
21 utils_spinlock lock;
22 #endif
24 volatile uint16_t bottom __attribute__( ( aligned(CONF_CACHE_LINE) ) );
25
27 volatile uint16_t top __attribute__( ( aligned(CONF_CACHE_LINE) ) );
28} __attribute__( ( aligned(CONF_CACHE_LINE) ) );
29
30typedef struct queue utils_queue_s;
31
39
50
58void* utils_queue_push(utils_queue_s *q, void *data);
59
67
75#ifdef __cplusplus
76}
77#endif /* ifdef __cplusplus */
78
79#endif /* ifndef UTILS_QUEUE_HEADER */
struct queue __attribute__((aligned(CONF_CACHE_LINE)))
utils_queue_s * utils_queue_init(void *buff)
Definition queue.c:39
unsigned int utils_queue_used_slots(utils_queue_s *q)
Definition queue.c:51
void * utils_queue_peek(utils_queue_s *q)
Definition queue.c:126
void * utils_queue_pop(utils_queue_s *q)
Definition queue.c:63
void * utils_queue_push(utils_queue_s *q, void *data)
Definition queue.c:89
struct queue utils_queue_s
Definition queue.h:30
volatile uint32_t utils_spinlock
Definition spinlock.h:10
Definition queue.h:16
volatile uint16_t top __attribute__((aligned(CONF_CACHE_LINE)))
volatile uint16_t bottom __attribute__((aligned(CONF_CACHE_LINE)))
void * entries[UTILS_QUEUE_CAPACITY]
Definition queue.h:18