88 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved.
 | 
						|
 *
 | 
						|
 * SPDX-License-Identifier: BSD-3-Clause
 | 
						|
 */
 | 
						|
 | 
						|
/*
 | 
						|
 * @file	mutex.h
 | 
						|
 * @brief	Mutex primitives for libmetal.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __METAL_MUTEX__H__
 | 
						|
#define __METAL_MUTEX__H__
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
/** \defgroup mutex Mutex Interfaces
 | 
						|
 *  @{ */
 | 
						|
 | 
						|
#include <metal/system/generic/mutex.h>
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief	Initialize a libmetal mutex.
 | 
						|
 * @param[in]	mutex	Mutex to initialize.
 | 
						|
 */
 | 
						|
static inline void metal_mutex_init(metal_mutex_t *mutex)
 | 
						|
{
 | 
						|
	__metal_mutex_init(mutex);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief	Deinitialize a libmetal mutex.
 | 
						|
 * @param[in]	mutex	Mutex to deinitialize.
 | 
						|
 */
 | 
						|
static inline void metal_mutex_deinit(metal_mutex_t *mutex)
 | 
						|
{
 | 
						|
	__metal_mutex_deinit(mutex);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief	Try to acquire a mutex
 | 
						|
 * @param[in]	mutex	Mutex to mutex.
 | 
						|
 * @return	0 on failure to acquire, non-zero on success.
 | 
						|
 */
 | 
						|
static inline int metal_mutex_try_acquire(metal_mutex_t *mutex)
 | 
						|
{
 | 
						|
	return __metal_mutex_try_acquire(mutex);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief	Acquire a mutex
 | 
						|
 * @param[in]	mutex	Mutex to mutex.
 | 
						|
 */
 | 
						|
static inline void metal_mutex_acquire(metal_mutex_t *mutex)
 | 
						|
{
 | 
						|
	__metal_mutex_acquire(mutex);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief	Release a previously acquired mutex.
 | 
						|
 * @param[in]	mutex	Mutex to mutex.
 | 
						|
 * @see metal_mutex_try_acquire, metal_mutex_acquire
 | 
						|
 */
 | 
						|
static inline void metal_mutex_release(metal_mutex_t *mutex)
 | 
						|
{
 | 
						|
	__metal_mutex_release(mutex);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief	Checked if a mutex has been acquired.
 | 
						|
 * @param[in]	mutex	mutex to check.
 | 
						|
 * @see metal_mutex_try_acquire, metal_mutex_acquire
 | 
						|
 */
 | 
						|
static inline int metal_mutex_is_acquired(metal_mutex_t *mutex)
 | 
						|
{
 | 
						|
	return __metal_mutex_is_acquired(mutex);
 | 
						|
}
 | 
						|
 | 
						|
/** @} */
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* __METAL_MUTEX__H__ */
 |