Skip to content
Snippets Groups Projects
Commit e03e20b7 authored by René Kijewski's avatar René Kijewski
Browse files

core: simplify mutex initializer

parent e5d61428
No related branches found
No related tags found
No related merge requests found
......@@ -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.
......
......@@ -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`)
......
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment