[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT PATCH v2 7/8] lib/uksched: Add function for killing threads



Looks good.

Reviewed-by: Florian Schmidt <florian.schmidt@xxxxxxxxx>

On 1/11/19 12:22 AM, Costin Lupu wrote:
Thread kill function replaces the thread destroy function as the
public function for triggering thread deaths.

Signed-off-by: Costin Lupu <costin.lupu@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 cd792bf..973999b 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 c3e2866..5800c07 100644
--- a/lib/uksched/include/uk/sched.h
+++ b/lib/uksched/include/uk/sched.h
@@ -215,6 +215,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 3267ab2..4c4e037 100644
--- a/lib/uksched/include/uk/thread.h
+++ b/lib/uksched/include/uk/thread.h
@@ -68,8 +68,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 ed55a64..3b7ebf3 100644
--- a/lib/uksched/sched.c
+++ b/lib/uksched/sched.c
@@ -228,6 +228,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 5616ee1..3536ea6 100644
--- a/lib/ukschedcoop/schedcoop.c
+++ b/lib/ukschedcoop/schedcoop.c
@@ -131,7 +131,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 0589d48..5c393c1 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;
  }


--
Dr. Florian Schmidt
フローリアン・シュミット
Research Scientist,
Systems and Machine Learning Group
NEC Laboratories Europe
Kurfürsten-Anlage 36, D-69115 Heidelberg
Tel.     +49 (0)6221 4342-265
Fax:     +49 (0)6221 4342-155
e-mail:  florian.schmidt@xxxxxxxxx
============================================================
Registered at Amtsgericht Mannheim, Germany, HRB728558

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.