From e03e20b7f618a7044e9e4208087051dabc13a164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Kijewski?= <rene.kijewski@fu-berlin.de> Date: Fri, 18 Jul 2014 13:44:29 +0200 Subject: [PATCH] core: simplify mutex initializer --- core/include/mutex.h | 18 +++++++++++++----- core/include/queue.h | 6 ++++++ core/mutex.c | 9 --------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/core/include/mutex.h b/core/include/mutex.h index 0cdff269d3..ba138a8415 100644 --- a/core/include/mutex.h +++ b/core/include/mutex.h @@ -43,15 +43,23 @@ typedef struct mutex_t { queue_node_t queue; } mutex_t; +/** + * @brief Static initializer for mutex_t. + * @details This initializer is preferrable to mutex_init(). + */ +#define MUTEX_INIT { 0, QUEUE_NODE_INIT } + /** * @brief Initializes a mutex object. - * + * @details For intialization of variables use MUTEX_INIT instead. + * Only use the function call for dynamically allocated mutexes. * @param[out] mutex pre-allocated mutex structure, must not be NULL. - * - * @return Always returns 1, always succeeds. */ -int mutex_init(mutex_t *mutex); - +static inline void mutex_init(mutex_t *mutex) +{ + mutex_t empty_mutex = MUTEX_INIT; + *mutex = empty_mutex; +} /** * @brief Tries to get a mutex, non-blocking. diff --git a/core/include/queue.h b/core/include/queue.h index a0e6aadfcc..8d9416f056 100644 --- a/core/include/queue.h +++ b/core/include/queue.h @@ -20,6 +20,7 @@ #ifndef __QUEUE_H #define __QUEUE_H +#include <stddef.h> #include <stdint.h> #include <inttypes.h> @@ -41,6 +42,11 @@ typedef struct queue_node_t { uint32_t priority; /**< queue node priority */ } queue_node_t; +/** + * @brief Static initializer for queue_node_t. + */ +#define QUEUE_NODE_INIT { NULL, 0, 0 } + /** * @brief attach `new_obj` to the tail of the queue (identified * `root`) diff --git a/core/mutex.c b/core/mutex.c index 180b3416bf..41fdcee818 100644 --- a/core/mutex.c +++ b/core/mutex.c @@ -35,15 +35,6 @@ static void mutex_wait(struct mutex_t *mutex); -void mutex_init(struct mutex_t *mutex) -{ - mutex->val = 0; - - mutex->queue.priority = 0; - mutex->queue.data = 0; - mutex->queue.next = NULL; -} - int mutex_trylock(struct mutex_t *mutex) { DEBUG("%s: trylocking to get mutex. val: %u\n", sched_active_thread->name, mutex->val); -- GitLab