参考代码

This commit is contained in:
LokLiang
2024-03-28 12:19:52 +08:00
commit 7b86aa3362
96 changed files with 19986 additions and 0 deletions

80
sal/esp32s3/kernel/os_mutex.c Executable file
View File

@@ -0,0 +1,80 @@
#include "os/os.h"
#include "os_util.h"
#include "semphr.h"
os_state os_mutex_create(os_mutex_t *mutex)
{
OS_ASS_HDL(!os_mutex_is_valid(mutex), mutex->handle);
mutex->handle = xSemaphoreCreateMutex();
if (mutex->handle == NULL)
{
OS_ERR("err %p\r\n", mutex->handle);
return OS_FAIL;
}
return OS_OK;
}
os_state os_mutex_delete(os_mutex_t *mutex)
{
OS_ASS_HDL(os_mutex_is_valid(mutex), mutex->handle);
vSemaphoreDelete(mutex->handle);
mutex->handle = NULL;
return OS_OK;
}
os_state os_mutex_lock(os_mutex_t *mutex, os_time_t wait_ms)
{
BaseType_t ret;
OS_ASS_HDL(os_mutex_is_valid(mutex), mutex->handle);
ret = xSemaphoreTake(mutex->handle, os_calc_msec_to_ticks(wait_ms));
if (ret != pdPASS)
{
OS_DBG("%s() fail @ %d, %u ms\n", __func__, __LINE__, wait_ms);
return OS_FAIL;
}
return OS_OK;
}
os_state os_mutex_unlock(os_mutex_t *mutex)
{
BaseType_t ret;
OS_ASS_HDL(os_mutex_is_valid(mutex), mutex->handle);
ret = xSemaphoreGive(mutex->handle);
if (ret != pdPASS)
{
OS_DBG("%s() fail @ %d\n", __func__, __LINE__);
return OS_FAIL;
}
return OS_OK;
}
os_thread_handle_t os_mutex_get_holder(os_mutex_t *mutex)
{
if (!os_mutex_is_valid(mutex))
{
return OS_INVALID_HANDLE;
}
return (os_thread_handle_t)xSemaphoreGetMutexHolder(mutex->handle);
}
bool os_mutex_is_valid(os_mutex_t *mutex)
{
if (mutex && mutex->handle)
{
return true;
}
else
{
return false;
}
}