kernel/semaphore: fix broken macros
authorHeesub Shin <heesub.shin@samsung.com>
Thu, 6 Apr 2017 02:11:50 +0000 (11:11 +0900)
committerHeesub Shin <heesub.shin@samsung.com>
Tue, 18 Apr 2017 03:02:11 +0000 (12:02 +0900)
Fixes compilation errors that might happen when
CONFIG_PRIORITY_INHERITANCE is not set.

Change-Id: I926c32914e928de03c11015aa64a63164f19d25c
Signed-off-by: Gregory Nutt <gnutt@nuttx.org>
[Shin: backported 4c8ec0d2 from NuttX]
Signed-off-by: Heesub Shin <heesub.shin@samsung.com>
lib/libc/semaphore/Make.defs
lib/libc/semaphore/sem_getprotocol.c
os/include/tinyara/semaphore.h
os/kernel/semaphore/Make.defs
os/kernel/semaphore/sem_setprotocol.c
os/syscall/syscall.csv

index 37f2056..56300e7 100644 (file)
 
 # 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
 
index 22be7a1..b7091a9 100644 (file)
@@ -61,8 +61,6 @@
 
 #include <tinyara/semaphore.h>
 
-#ifdef CONFIG_PRIORITY_INHERITANCE
-
 /****************************************************************************
  * Public Functions
  ****************************************************************************/
@@ -89,11 +87,15 @@ int sem_getprotocol(FAR sem_t *sem, FAR int *protocol)
 {
        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;
+}
index f5db2a9..b84ee5b 100644 (file)
@@ -162,11 +162,7 @@ int sem_reset(FAR sem_t *sem, int16_t count);
  *
  ****************************************************************************/
 
-#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
@@ -204,11 +200,7 @@ int sem_getprotocol(FAR sem_t *sem, FAR int *protocol);
  *
  ****************************************************************************/
 
-#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
index 5f0b1aa..4b90458 100644 (file)
 # 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
index 85ba240..e3eded7 100644 (file)
@@ -63,8 +63,6 @@
 
 #include "semaphore/semaphore.h"
 
-#ifdef CONFIG_PRIORITY_INHERITANCE
-
 /****************************************************************************
  * Public Functions
  ****************************************************************************/
@@ -113,6 +111,7 @@ int sem_setprotocol(FAR sem_t *sem, int protocol)
 
        switch (protocol) {
        case SEM_PRIO_NONE:
+#ifdef CONFIG_PRIORITY_INHERITANCE
                /* Disable priority inheritance */
 
                sem->flags |= PRIOINHERIT_FLAGS_DISABLE;
@@ -120,13 +119,16 @@ int sem_setprotocol(FAR sem_t *sem, int protocol)
                /* 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 */
@@ -142,5 +144,3 @@ int sem_setprotocol(FAR sem_t *sem, int protocol)
        set_errno(errcode);
        return ERROR;
 }
-
-#endif /* CONFIG_PRIORITY_INHERITANCE */
index ed2677d..2bd106a 100644 (file)
 "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*"