提交 d4781527 编写于 作者: C Caoruihong

feat(cmsis): support max_count for osSemaphoreNew

Signed-off-by: NCaoruihong <crh.cao@huawei.com>
Change-Id: Iacb6cb7771ae32ea1ca645c72fda241e8e85d422
上级 11bca47b
......@@ -1087,8 +1087,9 @@ osStatus_t osMutexDelete(osMutexId_t mutex_id)
osSemaphoreId_t osSemaphoreNew(uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr)
{
UINT32 uwRet;
UINT32 uwRet = LOS_NOK;
UINT32 uwSemId;
UINT32 intSave;
UNUSED(attr);
......@@ -1096,14 +1097,16 @@ osSemaphoreId_t osSemaphoreNew(uint32_t max_count, uint32_t initial_count, const
return (osSemaphoreId_t)NULL;
}
if (1 == max_count) {
uwRet = LOS_BinarySemCreate((UINT16)initial_count, &uwSemId);
} else {
if (max_count > 0 && max_count <= OS_SEM_COUNTING_MAX_COUNT) {
uwRet = LOS_SemCreate((UINT16)initial_count, &uwSemId);
}
if (uwRet == LOS_OK) {
return (osSemaphoreId_t)(GET_SEM(uwSemId));
osSemaphoreId_t semaphore_id = (osSemaphoreId_t)(GET_SEM(uwSemId));
intSave = LOS_IntLock();
((LosSemCB *)semaphore_id)->maxSemCount = max_count;
LOS_IntRestore(intSave);
return semaphore_id;
} else {
return (osSemaphoreId_t)NULL;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册