nclude/nuttx/semaphore: apply the semaphore wait function nxsem_wait_uninterruptible(). The function nxsem_wait_uninterruptible() is a wrapped version of nxsem_wait(), which is uninterruptible and convenient for use.
This commit is contained in:
parent
8980b08fae
commit
0c9a4ac4f9
@ -42,6 +42,7 @@
|
|||||||
|
|
||||||
#include <nuttx/config.h>
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
#include <semaphore.h>
|
#include <semaphore.h>
|
||||||
|
|
||||||
#include <nuttx/clock.h>
|
#include <nuttx/clock.h>
|
||||||
@ -523,6 +524,37 @@ int nxsem_setprotocol(FAR sem_t *sem, int protocol);
|
|||||||
|
|
||||||
int sem_setprotocol(FAR sem_t *sem, int protocol);
|
int sem_setprotocol(FAR sem_t *sem, int protocol);
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: nxsem_wait_uninterruptible
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* This function is wrapped version of nxsem_wait(), which is uninterruptible
|
||||||
|
* and convenient for use.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* sem - Semaphore descriptor.
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Zero(OK) - On success
|
||||||
|
* EINVAL - Invalid attempt to get the semaphore
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
static inline int nxsem_wait_uninterruptible(FAR sem_t *sem)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
/* Take the semaphore (perhaps waiting) */
|
||||||
|
|
||||||
|
ret = nxsem_wait(sem);
|
||||||
|
}
|
||||||
|
while (ret == -EINTR || ret == -ECANCELED);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
#undef EXTERN
|
#undef EXTERN
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user