|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH v3 07/12] lib/uksched: Add function for killing threads
Thread kill function replaces the thread destroy function as the
public function for triggering thread deaths.
Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx>
Reviewed-by: Florian Schmidt <florian.schmidt@xxxxxxxxx>
---
lib/uksched/exportsyms.uk | 1 +
lib/uksched/include/uk/sched.h | 2 ++
lib/uksched/include/uk/thread.h | 4 ++--
lib/uksched/sched.c | 5 +++++
lib/ukschedcoop/schedcoop.c | 2 +-
plat/xen/xenbus/xs_comms.c | 2 +-
6 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/lib/uksched/exportsyms.uk b/lib/uksched/exportsyms.uk
index 3118383d..c67892c4 100644
--- a/lib/uksched/exportsyms.uk
+++ b/lib/uksched/exportsyms.uk
@@ -7,6 +7,7 @@ uk_sched_start
uk_sched_idle_init
uk_sched_thread_create
uk_sched_thread_destroy
+uk_sched_thread_kill
uk_sched_thread_sleep
uk_sched_thread_exit
uk_thread_init
diff --git a/lib/uksched/include/uk/sched.h b/lib/uksched/include/uk/sched.h
index e5630ed6..9e218688 100644
--- a/lib/uksched/include/uk/sched.h
+++ b/lib/uksched/include/uk/sched.h
@@ -217,6 +217,8 @@ struct uk_thread *uk_sched_thread_create(struct uk_sched
*sched,
void (*function)(void *), void *arg);
void uk_sched_thread_destroy(struct uk_sched *sched,
struct uk_thread *thread);
+void uk_sched_thread_kill(struct uk_sched *sched,
+ struct uk_thread *thread);
static inline
void uk_sched_thread_switch(struct uk_sched *sched,
diff --git a/lib/uksched/include/uk/thread.h b/lib/uksched/include/uk/thread.h
index 131268b4..f3891c29 100644
--- a/lib/uksched/include/uk/thread.h
+++ b/lib/uksched/include/uk/thread.h
@@ -69,8 +69,8 @@ UK_TAILQ_HEAD(uk_thread_list, struct uk_thread);
name, attr, function, data)
#define uk_thread_create(name, function, data) \
uk_thread_create_attr(name, NULL, function, data)
-#define uk_thread_destroy(thread) \
- uk_sched_thread_destroy(thread->sched, thread)
+#define uk_thread_kill(thread) \
+ uk_sched_thread_kill(thread->sched, thread)
void uk_thread_exit(struct uk_thread *thread);
int uk_thread_wait(struct uk_thread *thread);
diff --git a/lib/uksched/sched.c b/lib/uksched/sched.c
index a0d706f5..5f6bc685 100644
--- a/lib/uksched/sched.c
+++ b/lib/uksched/sched.c
@@ -222,6 +222,11 @@ void uk_sched_thread_destroy(struct uk_sched *sched,
struct uk_thread *thread)
uk_free(sched->allocator, thread);
}
+void uk_sched_thread_kill(struct uk_sched *sched, struct uk_thread *thread)
+{
+ uk_sched_thread_remove(sched, thread);
+}
+
void uk_sched_thread_sleep(__nsec nsec)
{
struct uk_thread *thread;
diff --git a/lib/ukschedcoop/schedcoop.c b/lib/ukschedcoop/schedcoop.c
index 2a646760..a3f265c6 100644
--- a/lib/ukschedcoop/schedcoop.c
+++ b/lib/ukschedcoop/schedcoop.c
@@ -128,7 +128,7 @@ static void schedcoop_schedule(struct uk_sched *s)
continue;
if (thread != prev)
- uk_thread_destroy(thread);
+ uk_sched_thread_destroy(s, thread);
}
}
diff --git a/plat/xen/xenbus/xs_comms.c b/plat/xen/xenbus/xs_comms.c
index 0589d48b..5c393c1e 100644
--- a/plat/xen/xenbus/xs_comms.c
+++ b/plat/xen/xenbus/xs_comms.c
@@ -617,6 +617,6 @@ void xs_comms_fini(void)
xsh.buf = NULL;
/* TODO stop thread, instead of killing it */
- uk_thread_destroy(xsh.thread);
+ uk_thread_kill(xsh.thread);
xsh.thread = NULL;
}
--
2.11.0
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |