!195 feat: L0新增posix接口sem_getvalue

Merge pull request !195 from x_xiny/master
This commit is contained in:
openharmony_ci 2021-06-24 07:15:06 +00:00 committed by Gitee
commit eca03e5ed6
3 changed files with 32 additions and 0 deletions

View File

@ -186,3 +186,21 @@ int sem_timedwait(sem_t *sem, const struct timespec *timeout)
return 0; return 0;
} }
int sem_getvalue(sem_t *sem, int *currVal)
{
UINT32 ret;
if ((sem == NULL) || (currVal == NULL)) {
errno = EINVAL;
return -1;
}
ret = LOS_SemGetValue(sem->s_handle, currVal);
if (ret) {
errno = EINVAL;
return -1;
}
return LOS_OK;
}

View File

@ -285,6 +285,8 @@ extern UINT32 LOS_SemPend(UINT32 semHandle, UINT32 timeout);
*/ */
extern UINT32 LOS_SemPost(UINT32 semHandle); extern UINT32 LOS_SemPost(UINT32 semHandle);
extern UINT32 LOS_SemGetValue(UINT32 semHandle, INT32 *currVal);
/** /**
* @ingroup los_sem * @ingroup los_sem
* Semaphore control structure. * Semaphore control structure.

View File

@ -312,4 +312,16 @@ LITE_OS_SEC_TEXT UINT32 LOS_SemPost(UINT32 semHandle)
return LOS_OK; return LOS_OK;
} }
LITE_OS_SEC_TEXT UINT32 LOS_SemGetValue(UINT32 semHandle, INT32 *currVal)
{
LosSemCB *sem = GET_SEM(semHandle);
if (semHandle >= (UINT32)LOSCFG_BASE_IPC_SEM_LIMIT) {
OS_RETURN_ERROR(LOS_ERRNO_SEM_INVALID);
}
*currVal = sem->semCount;
return 0;
}
#endif /* (LOSCFG_BASE_IPC_SEM == 1) */ #endif /* (LOSCFG_BASE_IPC_SEM == 1) */