Interface: Refine OS wrapper APIs
For the following OS wrapper APIs
os_wrapper_thread_new
os_wrapper_thread_get_id
os_wrapper_thread_get_priority
os_wrapper_semaphore_create
os_wrapper_mutex_create
They return the corresponding IDs or priorities on success and
OS_WRAPPER_ERROR on failure.
This makes the "OS_WRAPPER_ERROR" value invalid for thread IDs,
mutex IDs...etc on all OSes.
But it could be a valid value on some OSes.
This patch fixes this problem by
1. Changing mutex, semaphore and thread IDs to handles
2. For os_wrapper_thread_get_priority, putting outputs to
parameters and returning only success or error.
For the others, treating NULL return as error and others for
valid handles.
Change-Id: I19aa0415ce0ba4388fb96602fea8f10f702d8c45
Signed-off-by: Kevin Peng <kevin.peng@arm.com>
diff --git a/interface/include/os_wrapper/mutex.h b/interface/include/os_wrapper/mutex.h
index 2bdca0c..e55ef70 100644
--- a/interface/include/os_wrapper/mutex.h
+++ b/interface/include/os_wrapper/mutex.h
@@ -17,16 +17,15 @@
/**
* \brief Creates a mutex for mutual exclusion of resources
*
- * \return The ID of the created mutex on success or \ref OS_WRAPPER_ERROR on
- * error
+ * \return The handle of the created mutex on success or NULL on error
*/
-uint32_t os_wrapper_mutex_create(void);
+void *os_wrapper_mutex_create(void);
/**
* \brief Acquires a mutex that is created by \ref os_wrapper_mutex_create()
*
- * \param[in] mutex_id The ID of the mutex to acquire. Should be one of the IDs
- * returned by \ref os_wrapper_mutex_create()
+ * \param[in] handle The handle of the mutex to acquire. Should be one of the
+ * handles returned by \ref os_wrapper_mutex_create()
* \param[in] timeout The maximum amount of time(in tick periods) for the
* thread to wait for the mutex to be available.
* If timeout is zero, the function will return immediately.
@@ -35,25 +34,26 @@
*
* \return \ref OS_WRAPPER_SUCCESS on success or \ref OS_WRAPPER_ERROR on error
*/
-uint32_t os_wrapper_mutex_acquire(uint32_t mutex_id, uint32_t timeout);
+uint32_t os_wrapper_mutex_acquire(void *handle, uint32_t timeout);
/**
* \brief Releases the mutex acquired previously
*
- * \param[in] mutex_id The ID of the mutex that has been acquired
+
+ * \param[in] handle The handle of the mutex that has been acquired
*
* \return \ref OS_WRAPPER_SUCCESS on success or \ref OS_WRAPPER_ERROR on error
*/
-uint32_t os_wrapper_mutex_release(uint32_t mutex_id);
+uint32_t os_wrapper_mutex_release(void *handle);
/**
* \brief Deletes a mutex that is created by \ref os_wrapper_mutex_create()
*
- * \param[in] mutex_id The ID of the mutex to be deleted
+ * \param[in] handle The handle of the mutex to be deleted
*
* \return \ref OS_WRAPPER_SUCCESS on success or \ref OS_WRAPPER_ERROR on error
*/
-uint32_t os_wrapper_mutex_delete(uint32_t mutex_id);
+uint32_t os_wrapper_mutex_delete(void *handle);
#ifdef __cplusplus
}
diff --git a/interface/include/os_wrapper/semaphore.h b/interface/include/os_wrapper/semaphore.h
index 38b9a16..89b00a0 100644
--- a/interface/include/os_wrapper/semaphore.h
+++ b/interface/include/os_wrapper/semaphore.h
@@ -21,42 +21,41 @@
* \param[in] initial_count Starting count of the semaphore
* \param[in] name Name of the semaphore
*
- * \return Returns ID of the semaphore created, or \ref OS_WRAPPER_ERROR in case
- * of error
+ * \return Returns handle of the semaphore created, or NULL in case of error
*/
-uint32_t os_wrapper_semaphore_create(uint32_t max_count, uint32_t initial_count,
- const char *name);
+void *os_wrapper_semaphore_create(uint32_t max_count, uint32_t initial_count,
+ const char *name);
/**
* \brief Acquires the semaphore
*
- * \param[in] semaphore_id Semaphore ID
- * \param[in] timeout Timeout value
+ * \param[in] hanlde Semaphore handle
+ * \param[in] timeout Timeout value
*
* \return \ref OS_WRAPPER_SUCCESS in case of successful acquision, or
* \ref OS_WRAPPER_ERROR in case of error
*/
-uint32_t os_wrapper_semaphore_acquire(uint32_t semaphore_id, uint32_t timeout);
+uint32_t os_wrapper_semaphore_acquire(void *handle, uint32_t timeout);
/**
* \brief Releases the semaphore
*
- * \param[in] semaphore_id Semaphore ID
+ * \param[in] hanlde Semaphore handle
*
* \return \ref OS_WRAPPER_SUCCESS in case of successful release, or
* \ref OS_WRAPPER_ERROR in case of error
*/
-uint32_t os_wrapper_semaphore_release(uint32_t semaphore_id);
+uint32_t os_wrapper_semaphore_release(void *handle);
/**
* \brief Deletes the semaphore
*
- * \param[in] semaphore_id Semaphore ID
+ * \param[in] handle Semaphore handle
*
* \return \ref OS_WRAPPER_SUCCESS in case of successful release, or
* \ref OS_WRAPPER_ERROR in case of error
*/
-uint32_t os_wrapper_semaphore_delete(uint32_t semaphore_id);
+uint32_t os_wrapper_semaphore_delete(void *handle);
#ifdef __cplusplus
}
diff --git a/interface/include/os_wrapper/thread.h b/interface/include/os_wrapper/thread.h
index cfd2e13..8386bd5 100644
--- a/interface/include/os_wrapper/thread.h
+++ b/interface/include/os_wrapper/thread.h
@@ -28,27 +28,28 @@
* \param[in] arg Argument to pass to the function invoked by thread
* \param[in] priority Initial thread priority
*
- * \return Returns thread ID, or \ref OS_WRAPPER_ERROR in case of error
+ * \return Returns the thread handle created, or NULL in case of error
*/
-uint32_t os_wrapper_thread_new(const char *name, int32_t stack_size,
- os_wrapper_thread_func func, void *arg,
- uint32_t priority);
+void *os_wrapper_thread_new(const char *name, int32_t stack_size,
+ os_wrapper_thread_func func, void *arg,
+ uint32_t priority);
/**
- * \brief Gets current thread ID
+ * \brief Gets current thread handle
*
- * \return Returns thread ID, or \ref OS_WRAPPER_ERROR in case of error
+ * \return Returns the thread handle, or NULL in case of error
*/
-uint32_t os_wrapper_thread_get_id(void);
+void *os_wrapper_thread_get_handle(void);
/**
* \brief Gets thread priority
*
- * \param[in] id Thread ID
+ * \param[in] handle Thread handle
+ * \param[out] priority The priority of the thread
*
- * \return Returns thread priority value, or \ref OS_WRAPPER_ERROR in case of
- * error
+ * \return Returns \ref OS_WRAPPER_SUCCESS on success, or \ref OS_WRAPPER_ERROR
+ * in case of error
*/
-uint32_t os_wrapper_thread_get_priority(uint32_t id);
+uint32_t os_wrapper_thread_get_priority(void *handle, uint32_t *priority);
/**
* \brief Exits the calling thread