summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/include/sys/sched.h2
-rw-r--r--sys/kern/kern_sched.c12
2 files changed, 14 insertions, 0 deletions
diff --git a/sys/include/sys/sched.h b/sys/include/sys/sched.h
index 7f5e65f..80f4d1c 100644
--- a/sys/include/sys/sched.h
+++ b/sys/include/sys/sched.h
@@ -37,6 +37,8 @@
void sched_init(void);
void sched_yield(void);
+void sched_detach(struct proc *td);
+
__dead void sched_enter(void);
void sched_enqueue_td(struct proc *td);
diff --git a/sys/kern/kern_sched.c b/sys/kern/kern_sched.c
index 01c3b8d..8e5c0e9 100644
--- a/sys/kern/kern_sched.c
+++ b/sys/kern/kern_sched.c
@@ -262,6 +262,18 @@ sched_yield(void)
}
void
+sched_detach(struct proc *td)
+{
+ struct sched_queue *queue;
+
+ spinlock_acquire(&tdq_lock);
+ queue = &qlist[td->priority];
+
+ TAILQ_REMOVE(&queue->q, td, link);
+ spinlock_release(&tdq_lock);
+}
+
+void
sched_init(void)
{
/* Setup the queues */