Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
c-utility/inc/azure_c_shared_utility/lock.h
- Committer:
- XinZhangMS
- Date:
- 2018-08-23
- Revision:
- 0:f7f1f0d76dd6
File content as of revision 0:f7f1f0d76dd6:
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
/** @file lock.h
* @brief A minimalistic platform agnostic lock abstraction for thread
* synchronization.
* @details The Lock component is implemented in order to achieve thread
* synchronization, as we may have a requirement to consume locks
* across different platforms. This component exposes some generic
* APIs so that it can be extended for platform specific
* implementations.
*/
#ifndef LOCK_H
#define LOCK_H
#include "azure_c_shared_utility/macro_utils.h"
#include "azure_c_shared_utility/umock_c_prod.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef void* LOCK_HANDLE;
#define LOCK_RESULT_VALUES \
LOCK_OK, \
LOCK_ERROR \
/** @brief Enumeration specifying the lock status.
*/
DEFINE_ENUM(LOCK_RESULT, LOCK_RESULT_VALUES);
/**
* @brief This API creates and returns a valid lock handle.
*
* @return A valid @c LOCK_HANDLE when successful or @c NULL otherwise.
*/
MOCKABLE_FUNCTION(, LOCK_HANDLE, Lock_Init);
/**
* @brief Acquires a lock on the given lock handle. Uses platform
* specific mutex primitives in its implementation.
*
* @param handle A valid handle to the lock.
*
* @return Returns @c LOCK_OK when a lock has been acquired and
* @c LOCK_ERROR when an error occurs.
*/
MOCKABLE_FUNCTION(, LOCK_RESULT, Lock, LOCK_HANDLE, handle);
/**
* @brief Releases the lock on the given lock handle. Uses platform
* specific mutex primitives in its implementation.
*
* @param handle A valid handle to the lock.
*
* @return Returns @c LOCK_OK when the lock has been released and
* @c LOCK_ERROR when an error occurs.
*/
MOCKABLE_FUNCTION(, LOCK_RESULT, Unlock, LOCK_HANDLE, handle);
/**
* @brief The lock instance is destroyed.
*
* @param handle A valid handle to the lock.
*
* @return Returns @c LOCK_OK when the lock object has been
* destroyed and @c LOCK_ERROR when an error occurs.
*/
MOCKABLE_FUNCTION(, LOCK_RESULT, Lock_Deinit, LOCK_HANDLE, handle);
#ifdef __cplusplus
}
#endif
#endif /* LOCK_H */