From e03e20b7f618a7044e9e4208087051dabc13a164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Kijewski?= Date: Fri, 18 Jul 2014 13:44:29 +0200 Subject: [PATCH] core: simplify mutex initializer --- core/include/mutex.h | 20 ++++++++++++++------ core/include/queue.h | 6 ++++++ core/mutex.c | 9 --------- 3 files changed, 20 insertions(+), 15 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 @@ -44,14 +44,22 @@ typedef struct mutex_t { } mutex_t; /** - * @brief Initializes a mutex object. - * - * @param[out] mutex pre-allocated mutex structure, must not be NULL. - * - * @return Always returns 1, always succeeds. + * @brief Static initializer for mutex_t. + * @details This initializer is preferrable to mutex_init(). */ -int mutex_init(mutex_t *mutex); +#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. + */ +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 #include #include @@ -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);