Browse Source

lib/posix: Port wait_q usage to new API

The pthread mutex changes went in with an adaptation to build with the
new wait queue API, but they did it by using the old dlist hooks
directly through typecasting and union assignment.  That... is sort of
the opposite of the intent to having the new API be abstracted.  The
pthread code worked, but failed once wait queues (on x86) stopped
being dlists.

Simple fix once I saw the problem, anyway.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
pull/7237/head
Andy Ross 7 years ago committed by Anas Nashif
parent
commit
f4b6daff4b
  1. 2
      include/posix/pthread.h
  2. 2
      lib/posix/pthread_mutex.c

2
include/posix/pthread.h

@ -157,7 +157,7 @@ static inline int pthread_condattr_destroy(pthread_condattr_t *att) @@ -157,7 +157,7 @@ static inline int pthread_condattr_destroy(pthread_condattr_t *att)
__in_section(_k_mutex, static, name) = \
{ \
.lock_count = 0, \
.wait_q = {SYS_DLIST_STATIC_INIT((sys_dlist_t *)&name.wait_q)}, \
.wait_q = _WAIT_Q_INIT(&name.wait_q), \
.owner = NULL, \
}

2
lib/posix/pthread_mutex.c

@ -95,7 +95,7 @@ int pthread_mutex_init(pthread_mutex_t *m, @@ -95,7 +95,7 @@ int pthread_mutex_init(pthread_mutex_t *m,
m->type = mattr->type;
sys_dlist_init((sys_dlist_t *)&m->wait_q);
_waitq_init(&m->wait_q);
return 0;
}

Loading…
Cancel
Save