From 577e550698610ba46fb35c2288e110fd2135d507 Mon Sep 17 00:00:00 2001 From: anjiahao Date: Fri, 24 Dec 2021 10:42:09 +0800 Subject: [PATCH] libc/semaphore:sem_init change defult protocol Signed-off-by: anjiahao --- include/nuttx/mutex.h | 1 + include/semaphore.h | 5 ++++- libs/libc/semaphore/sem_getprotocol.c | 6 +++--- sched/semaphore/sem_holder.c | 2 +- sched/semaphore/sem_setprotocol.c | 4 ++-- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/include/nuttx/mutex.h b/include/nuttx/mutex.h index 129521f06d..814da6adcd 100644 --- a/include/nuttx/mutex.h +++ b/include/nuttx/mutex.h @@ -98,6 +98,7 @@ static inline int nxmutex_init(FAR mutex_t *mutex) return _SEM_ERRVAL(ret); } + _SEM_SETPROTOCOL(mutex, SEM_PRIO_INHERIT); return ret; } diff --git a/include/semaphore.h b/include/semaphore.h index 346e8d2d39..8d5a559338 100644 --- a/include/semaphore.h +++ b/include/semaphore.h @@ -48,7 +48,10 @@ /* Bit definitions for the struct sem_s flags field */ -#define PRIOINHERIT_FLAGS_DISABLE (1 << 0) /* Bit 0: Priority inheritance +#define PRIOINHERIT_FLAGS_ENABLE (1 << 0) /* Bit 0: Priority inheritance + * is enabled for this semaphore. */ + +#define PRIOINHERIT_FLAGS_DISABLE (0 << 0) /* Bit 0: Priority inheritance * is disabled for this semaphore. */ /**************************************************************************** diff --git a/libs/libc/semaphore/sem_getprotocol.c b/libs/libc/semaphore/sem_getprotocol.c index 2dfac140fe..6339d736ed 100644 --- a/libs/libc/semaphore/sem_getprotocol.c +++ b/libs/libc/semaphore/sem_getprotocol.c @@ -55,13 +55,13 @@ 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) + if ((sem->flags & PRIOINHERIT_FLAGS_ENABLE) != 0) { - *protocol = SEM_PRIO_NONE; + *protocol = SEM_PRIO_INHERIT; } else { - *protocol = SEM_PRIO_INHERIT; + *protocol = SEM_PRIO_NONE; } #else diff --git a/sched/semaphore/sem_holder.c b/sched/semaphore/sem_holder.c index e2cc379015..8564211c30 100644 --- a/sched/semaphore/sem_holder.c +++ b/sched/semaphore/sem_holder.c @@ -707,7 +707,7 @@ void nxsem_add_holder_tcb(FAR struct tcb_s *htcb, FAR sem_t *sem) * inheritance is effectively disabled. */ - if (htcb->flink != NULL && (sem->flags & PRIOINHERIT_FLAGS_DISABLE) == 0) + if (htcb->flink != NULL && (sem->flags & PRIOINHERIT_FLAGS_ENABLE) != 0) { /* Find or allocate a container for this new holder */ diff --git a/sched/semaphore/sem_setprotocol.c b/sched/semaphore/sem_setprotocol.c index ee1319cf03..ca8042afa1 100644 --- a/sched/semaphore/sem_setprotocol.c +++ b/sched/semaphore/sem_setprotocol.c @@ -82,7 +82,7 @@ int nxsem_set_protocol(FAR sem_t *sem, int protocol) /* Disable priority inheritance */ - sem->flags |= PRIOINHERIT_FLAGS_DISABLE; + sem->flags &= ~PRIOINHERIT_FLAGS_ENABLE; /* Remove any current holders */ @@ -93,7 +93,7 @@ int nxsem_set_protocol(FAR sem_t *sem, int protocol) /* Enable priority inheritance (dangerous) */ - sem->flags &= ~PRIOINHERIT_FLAGS_DISABLE; + sem->flags |= PRIOINHERIT_FLAGS_ENABLE; return OK; case SEM_PRIO_PROTECT: