summaryrefslogtreecommitdiffstats
path: root/rtemsbsd/rtems/rtems-bsd-thread.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-03-24 10:02:45 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-03-24 15:20:57 +0100
commit8475e7aa0a46ea1ef96c03968a80530f0c44c0ef (patch)
treeaa1770cb186ea9d382141f1817e7ec545cfbc45d /rtemsbsd/rtems/rtems-bsd-thread.c
parentSLEEPQUEUE(9): Import from FreeBSD (diff)
downloadrtems-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.c16
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);
}
}