X-Git-Url: http://git.meshlink.io/?p=meshlink;a=blobdiff_plain;f=src%2Fmeshlink_queue.h;h=d075f1c8497b887ea17cc0e171c39a6c4fcda7f0;hp=fc751a8fdd4abbdb2cf55c1fc2ff023468023350;hb=963c5055505f2fc117cd5efa06eaa02c9b2bf85d;hpb=b67296418c51784d39a24c3041e2cb199bee06f2 diff --git a/src/meshlink_queue.h b/src/meshlink_queue.h index fc751a8f..d075f1c8 100644 --- a/src/meshlink_queue.h +++ b/src/meshlink_queue.h @@ -36,7 +36,20 @@ typedef struct meshlink_queue_item { struct meshlink_queue_item *next; } meshlink_queue_item_t; -static inline bool meshlink_queue_push(meshlink_queue_t *queue, void *data) { +static inline void meshlink_queue_init(meshlink_queue_t *queue) { + queue->head = NULL; + queue->tail = NULL; + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_DEFAULT); + pthread_mutex_init(&queue->mutex, &attr); +} + +static inline void meshlink_queue_exit(meshlink_queue_t *queue) { + pthread_mutex_destroy(&queue->mutex); +} + +static inline __attribute__((__warn_unused_result__)) bool meshlink_queue_push(meshlink_queue_t *queue, void *data) { meshlink_queue_item_t *item = malloc(sizeof(*item)); if(!item) { @@ -57,7 +70,7 @@ static inline bool meshlink_queue_push(meshlink_queue_t *queue, void *data) { return true; } -static inline void *meshlink_queue_pop(meshlink_queue_t *queue) { +static inline __attribute__((__warn_unused_result__)) void *meshlink_queue_pop(meshlink_queue_t *queue) { meshlink_queue_item_t *item; void *data; pthread_mutex_lock(&queue->mutex);