diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-03-24 10:02:45 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-03-24 15:20:57 +0100 |
commit | 8475e7aa0a46ea1ef96c03968a80530f0c44c0ef (patch) | |
tree | aa1770cb186ea9d382141f1817e7ec545cfbc45d /rtemsbsd/rtems/rtems-bsd-thread.c | |
parent | SLEEPQUEUE(9): Import from FreeBSD (diff) | |
download | rtems-libbsd-8475e7aa0a46ea1ef96c03968a80530f0c44c0ef.tar.bz2 |
SLEEPQUEUE(9): Port to RTEMS
Diffstat (limited to 'rtemsbsd/rtems/rtems-bsd-thread.c')
-rw-r--r-- | rtemsbsd/rtems/rtems-bsd-thread.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/rtemsbsd/rtems/rtems-bsd-thread.c b/rtemsbsd/rtems/rtems-bsd-thread.c index ef94188f..77057ba7 100644 --- a/rtemsbsd/rtems/rtems-bsd-thread.c +++ b/rtemsbsd/rtems/rtems-bsd-thread.c @@ -49,6 +49,7 @@ #include <sys/kthread.h> #include <sys/malloc.h> #include <sys/selinfo.h> +#include <sys/sleepqueue.h> #include <rtems/bsd/bsd.h> @@ -100,23 +101,14 @@ struct thread * rtems_bsd_thread_create(Thread_Control *thread, int wait) { struct thread *td = malloc(sizeof(*td), M_TEMP, M_ZERO | wait); - struct sleepqueue *sq = malloc(sizeof(*sq), M_TEMP, wait); + struct sleepqueue *sq = sleepq_alloc(); if (td != NULL && sq != NULL) { td->td_thread = thread; td->td_sleepqueue = sq; - - LIST_INIT(&sq->sq_free); - - _Thread_queue_Initialize( - &sq->sq_blocked, - THREAD_QUEUE_DISCIPLINE_PRIORITY, - STATES_WAITING_FOR_BSD_WAKEUP, - EWOULDBLOCK - ); } else { free(td, M_TEMP); - free(sq, M_TEMP); + sleepq_free(sq); td = NULL; } @@ -185,7 +177,7 @@ rtems_bsd_extension_thread_delete( if (td != NULL) { seltdfini(td); - free(td->td_sleepqueue, M_TEMP); + sleepq_free(td->td_sleepqueue); free(td, M_TEMP); } } |