# Add the semaphore C files to the build
-CSRCS += sem_init.c sem_getvalue.c
-
-ifeq ($(CONFIG_PRIORITY_INHERITANCE),y)
-CSRCS += sem_getprotocol.c
-endif
+CSRCS += sem_init.c sem_getprotocol.c sem_getvalue.c
# Add the semaphore directory to the build
#include <tinyara/semaphore.h>
-#ifdef CONFIG_PRIORITY_INHERITANCE
-
/****************************************************************************
* Public Functions
****************************************************************************/
{
DEBUGASSERT(sem != NULL && protocol != NULL);
+#ifdef CONFIG_PRIORITY_INHERITANCE
if ((sem->flags & PRIOINHERIT_FLAGS_DISABLE) != 0) {
- return SEM_PRIO_NONE;
+ *protocol = SEM_PRIO_NONE;
} else {
- return SEM_PRIO_INHERIT;
+ *protocol = SEM_PRIO_INHERIT;
}
-}
+#else
+ *protocol = SEM_PRIO_NONE;
+#endif
-#endif /* CONFIG_PRIORITY_INHERITANCE */
+ return OK;
+}
*
****************************************************************************/
-#ifdef CONFIG_PRIORITY_INHERITANCE
int sem_getprotocol(FAR sem_t *sem, FAR int *protocol);
-#else
-#define sem_getprotocol(s,p) do { *(p) == SEM_PRIO_NONE); } while (0)
-#endif
/****************************************************************************
* Function: sem_setprotocol
*
****************************************************************************/
-#ifdef CONFIG_PRIORITY_INHERITANCE
int sem_setprotocol(FAR sem_t *sem, int protocol);
-#else
-#define sem_setprotocol(s,p) ((p) == SEM_PRIO_NONE ? 0 : -ENOSYS);
-#endif
#undef EXTERN
#ifdef __cplusplus
# Add semaphore-related files to the build
CSRCS += sem_destroy.c sem_wait.c sem_trywait.c sem_timedwait.c
-CSRCS += sem_post.c sem_recover.c sem_reset.c sem_waitirq.c
+CSRCS += sem_post.c sem_recover.c sem_reset.c sem_setprotocol.c sem_waitirq.c
ifeq ($(CONFIG_PRIORITY_INHERITANCE),y)
-CSRCS += sem_initialize.c sem_holder.c sem_setprotocol.c
+CSRCS += sem_initialize.c sem_holder.c
endif
# Include semaphore build support
#include "semaphore/semaphore.h"
-#ifdef CONFIG_PRIORITY_INHERITANCE
-
/****************************************************************************
* Public Functions
****************************************************************************/
switch (protocol) {
case SEM_PRIO_NONE:
+#ifdef CONFIG_PRIORITY_INHERITANCE
/* Disable priority inheritance */
sem->flags |= PRIOINHERIT_FLAGS_DISABLE;
/* Remove any current holders */
sem_destroyholder(sem);
+#endif
return OK;
case SEM_PRIO_INHERIT:
+#ifdef CONFIG_PRIORITY_INHERITANCE
/* Enable priority inheritance (dangerous) */
sem->flags &= ~PRIOINHERIT_FLAGS_DISABLE;
return OK;
+#endif
case SEM_PRIO_PROTECT:
/* Not yet supported */
set_errno(errcode);
return ERROR;
}
-
-#endif /* CONFIG_PRIORITY_INHERITANCE */
"sem_destroy", "semaphore.h", "", "int", "FAR sem_t*"
"sem_open", "semaphore.h", "defined(CONFIG_FS_NAMED_SEMAPHORES)", "FAR sem_t*", "FAR const char*", "int", "..."
"sem_post", "semaphore.h", "", "int", "FAR sem_t*"
-"sem_setprotocol","tinyara/semaphore.h","defined(CONFIG_PRIORITY_INHERITANCE)","int","FAR sem_t*","int"
+"sem_setprotocol","tinyara/semaphore.h","","int","FAR sem_t*","int"
"sem_timedwait", "semaphore.h", "", "int", "FAR sem_t*", "FAR const struct timespec *"
"sem_trywait", "semaphore.h", "", "int", "FAR sem_t*"
"sem_unlink", "semaphore.h", "defined(CONFIG_FS_NAMED_SEMAPHORES)", "int", "FAR const char*"