mirror of
https://github.com/open5gs/open5gs.git
synced 2025-11-21 23:18:10 +00:00
add build system using Core Library
This commit is contained in:
40
lib/core/include/core_queue.h
Normal file
40
lib/core/include/core_queue.h
Normal file
@@ -0,0 +1,40 @@
|
||||
#ifndef __CORE_QUEUE_H__
|
||||
#define __CORE_QUEUE_H__
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#define que_declare(__name, __type, __size) \
|
||||
struct { \
|
||||
int head, tail, size, used; \
|
||||
__type pool[(__size)]; \
|
||||
} __name
|
||||
|
||||
#define que_init(__pname, __size) \
|
||||
((__pname)->head = (__pname)->tail = 0, \
|
||||
(__pname)->used = 0, \
|
||||
(__pname)->size = __size)
|
||||
|
||||
#define que_push(__pname, __ptr_node) \
|
||||
((__pname)->used == ((__pname)->size) ? -1 : \
|
||||
(((__pname)->pool[(__pname)->head] = *(__ptr_node), \
|
||||
(__pname)->head = ((__pname)->head + 1) % ((__pname)->size), \
|
||||
++(__pname)->used)))
|
||||
|
||||
|
||||
#define que_pop(__pname, __ptr_node) \
|
||||
((__pname)->used == 0 ? -1 : \
|
||||
((*(__ptr_node) = (__pname)->pool[(__pname)->tail], \
|
||||
(__pname)->tail = ((__pname)->tail + 1) % ((__pname)->size), \
|
||||
--(__pname)->used)))
|
||||
|
||||
#define que_is_empty(__pname) ((__pname)->used == 0)
|
||||
|
||||
#define que_is_full(__pname) ((__pname)->used == (__pname)->size)
|
||||
|
||||
#define que_size(__pname) ((__pname)->size)
|
||||
|
||||
#define que_used(__pname) ((__pname)->used)
|
||||
|
||||
#define que_avail(__pname) (que_size(__pname) - que_used(__pname))
|
||||
|
||||
#endif /* ! __CORE_QUEUE_H__ */
|
||||
Reference in New Issue
Block a user