diff --git a/include/nuttx/sched.h b/include/nuttx/sched.h index 91b75eec63f..53dbe6eae67 100644 --- a/include/nuttx/sched.h +++ b/include/nuttx/sched.h @@ -671,6 +671,7 @@ struct tcb_s #if !defined(CONFIG_DISABLE_PTHREAD) && !defined(CONFIG_PTHREAD_MUTEX_UNSAFE) FAR struct pthread_mutex_s *mhead; /* List of mutexes held by thread */ + spinlock_t mhead_lock; #endif /* CPU load monitoring support ********************************************/ @@ -726,10 +727,6 @@ struct tcb_s size_t level_deepest; size_t level; #endif - -#ifndef CONFIG_PTHREAD_MUTEX_UNSAFE - spinlock_t mutex_lock; -#endif }; /* struct task_tcb_s ********************************************************/ diff --git a/sched/init/nx_start.c b/sched/init/nx_start.c index 374de7501e0..3f4a4e1820c 100644 --- a/sched/init/nx_start.c +++ b/sched/init/nx_start.c @@ -451,8 +451,8 @@ static void idle_group_initialize(void) nxtask_joininit(tcb); -#ifndef CONFIG_PTHREAD_MUTEX_UNSAFE - spin_lock_init(&tcb->mutex_lock); +#if !defined(CONFIG_DISABLE_PTHREAD) && !defined(CONFIG_PTHREAD_MUTEX_UNSAFE) + spin_lock_init(&tcb->mhead_lock); #endif #ifdef CONFIG_SMP diff --git a/sched/pthread/pthread_create.c b/sched/pthread/pthread_create.c index 142b6df5286..108e1651028 100644 --- a/sched/pthread/pthread_create.c +++ b/sched/pthread/pthread_create.c @@ -223,7 +223,7 @@ int nx_pthread_create(pthread_trampoline_t trampoline, FAR pthread_t *thread, nxtask_joininit(&ptcb->cmn); #ifndef CONFIG_PTHREAD_MUTEX_UNSAFE - spin_lock_init(&ptcb->cmn.mutex_lock); + spin_lock_init(&ptcb->cmn.mhead_lock); #endif /* Bind the parent's group to the new TCB (we have not yet joined the diff --git a/sched/pthread/pthread_mutex.c b/sched/pthread/pthread_mutex.c index 34ecada6be0..3bd5e62c9c9 100644 --- a/sched/pthread/pthread_mutex.c +++ b/sched/pthread/pthread_mutex.c @@ -65,10 +65,10 @@ static void pthread_mutex_add(FAR struct pthread_mutex_s *mutex) /* Add the mutex to the list of mutexes held by this pthread */ - flags = spin_lock_irqsave(&rtcb->mutex_lock); + flags = spin_lock_irqsave(&rtcb->mhead_lock); mutex->flink = rtcb->mhead; rtcb->mhead = mutex; - spin_unlock_irqrestore(&rtcb->mutex_lock, flags); + spin_unlock_irqrestore(&rtcb->mhead_lock, flags); } /**************************************************************************** @@ -92,7 +92,7 @@ static void pthread_mutex_remove(FAR struct pthread_mutex_s *mutex) FAR struct pthread_mutex_s *prev; irqstate_t flags; - flags = spin_lock_irqsave(&rtcb->mutex_lock); + flags = spin_lock_irqsave(&rtcb->mhead_lock); /* Remove the mutex from the list of mutexes held by this task */ @@ -118,7 +118,7 @@ static void pthread_mutex_remove(FAR struct pthread_mutex_s *mutex) } mutex->flink = NULL; - spin_unlock_irqrestore(&rtcb->mutex_lock, flags); + spin_unlock_irqrestore(&rtcb->mhead_lock, flags); } /**************************************************************************** @@ -372,7 +372,7 @@ void pthread_mutex_inconsistent(FAR struct tcb_s *tcb) DEBUGASSERT(tcb != NULL); - flags = spin_lock_irqsave(&tcb->mutex_lock); + flags = spin_lock_irqsave(&tcb->mhead_lock); /* Remove and process each mutex held by this task */ @@ -390,5 +390,5 @@ void pthread_mutex_inconsistent(FAR struct tcb_s *tcb) mutex_unlock(&mutex->mutex); } - spin_unlock_irqrestore(&tcb->mutex_lock, flags); + spin_unlock_irqrestore(&tcb->mhead_lock, flags); } diff --git a/sched/task/task_fork.c b/sched/task/task_fork.c index 39dd755f40c..0176e57dfb5 100644 --- a/sched/task/task_fork.c +++ b/sched/task/task_fork.c @@ -164,8 +164,8 @@ FAR struct task_tcb_s *nxtask_setup_fork(start_t retaddr) nxtask_joininit(&child->cmn); -#ifndef CONFIG_PTHREAD_MUTEX_UNSAFE - spin_lock_init(&child->cmn.mutex_lock); +#if !defined(CONFIG_DISABLE_PTHREAD) && !defined(CONFIG_PTHREAD_MUTEX_UNSAFE) + spin_lock_init(&child->cmn.mhead_lock); #endif /* Allocate a new task group with the same privileges as the parent */ diff --git a/sched/task/task_init.c b/sched/task/task_init.c index 0fa96f99727..a2f49431390 100644 --- a/sched/task/task_init.c +++ b/sched/task/task_init.c @@ -126,8 +126,8 @@ int nxtask_init(FAR struct task_tcb_s *tcb, const char *name, int priority, nxtask_joininit(&tcb->cmn); #endif -#ifndef CONFIG_PTHREAD_MUTEX_UNSAFE - spin_lock_init(&tcb->cmn.mutex_lock); +#if !defined(CONFIG_DISABLE_PTHREAD) && !defined(CONFIG_PTHREAD_MUTEX_UNSAFE) + spin_lock_init(&tcb->cmn.mhead_lock); #endif /* Duplicate the parent tasks environment */