blob: e55ef706e271747e978d05bf94cc75a459747dda [file] [log] [blame]
David Hucdc51fb2021-04-06 18:10:46 +08001/*
2 * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8#ifndef __OS_WRAPPER_MUTEX_H__
9#define __OS_WRAPPER_MUTEX_H__
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15#include "common.h"
16
17/**
18 * \brief Creates a mutex for mutual exclusion of resources
19 *
20 * \return The handle of the created mutex on success or NULL on error
21 */
22void *os_wrapper_mutex_create(void);
23
24/**
25 * \brief Acquires a mutex that is created by \ref os_wrapper_mutex_create()
26 *
27 * \param[in] handle The handle of the mutex to acquire. Should be one of the
28 * handles returned by \ref os_wrapper_mutex_create()
29 * \param[in] timeout The maximum amount of time(in tick periods) for the
30 * thread to wait for the mutex to be available.
31 * If timeout is zero, the function will return immediately.
32 * Setting timeout to \ref OS_WRAPPER_WAIT_FOREVER will
33 * cause the thread to wait indefinitely
34 *
35 * \return \ref OS_WRAPPER_SUCCESS on success or \ref OS_WRAPPER_ERROR on error
36 */
37uint32_t os_wrapper_mutex_acquire(void *handle, uint32_t timeout);
38
39/**
40 * \brief Releases the mutex acquired previously
41 *
42
43 * \param[in] handle The handle of the mutex that has been acquired
44 *
45 * \return \ref OS_WRAPPER_SUCCESS on success or \ref OS_WRAPPER_ERROR on error
46 */
47uint32_t os_wrapper_mutex_release(void *handle);
48
49/**
50 * \brief Deletes a mutex that is created by \ref os_wrapper_mutex_create()
51 *
52 * \param[in] handle The handle of the mutex to be deleted
53 *
54 * \return \ref OS_WRAPPER_SUCCESS on success or \ref OS_WRAPPER_ERROR on error
55 */
56uint32_t os_wrapper_mutex_delete(void *handle);
57
58#ifdef __cplusplus
59}
60#endif
61
62#endif /* __OS_WRAPPER_MUTEX_H__ */