[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v3 09/12] lib/uksched: Revisit public scheduling functions
Hi Costin, looking good, thanks. On 3/10/19 9:10 PM, Costin Lupu wrote: Currently, uk_sched_start and uk_sched_started are the only scheduler functions (which do not contain any thread reference) that are public. Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx> Reviewed-by: Florian Schmidt <florian.schmidt@xxxxxxxxx> --- lib/uksched/include/uk/sched.h | 18 ++++++++++++------ lib/uksched/sched.c | 1 + lib/ukschedcoop/schedcoop.c | 5 +---- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/uksched/include/uk/sched.h b/lib/uksched/include/uk/sched.h index 0e8f1e26..2538e02d 100644 --- a/lib/uksched/include/uk/sched.h +++ b/lib/uksched/include/uk/sched.h @@ -86,6 +86,7 @@ struct uk_sched { uk_sched_thread_get_tslice_func_t thread_get_tslice;/* internal */+ bool threads_started; struct uk_thread idle; struct uk_thread_list exited_threads; struct ukplat_ctx_callbacks plat_ctx_cbs; @@ -184,12 +185,6 @@ static inline struct uk_thread *uk_sched_get_idle(struct uk_sched *s) return &s->idle; }-/*- * Public scheduler functions - */ - -void uk_sched_start(struct uk_sched *sched) __noreturn; - #define uk_sched_init(s, yield_func, \ thread_add_func, thread_remove_func, \ thread_set_prio_func, thread_get_prio_func, \ @@ -205,6 +200,17 @@ void uk_sched_start(struct uk_sched *sched) __noreturn; uk_sched_register((s)); \ } while (0)+/*+ * Public scheduler functions + */ + +void uk_sched_start(struct uk_sched *sched) __noreturn; + +static inline bool uk_sched_started(struct uk_sched *sched) +{ + return sched->threads_started; +} +/** Internal thread scheduling functions diff --git a/lib/uksched/sched.c b/lib/uksched/sched.c index 5f6bc685..a6f49d67 100644 --- a/lib/uksched/sched.c +++ b/lib/uksched/sched.c @@ -121,6 +121,7 @@ struct uk_sched *uk_sched_create(struct uk_alloc *a, size_t prv_size) return NULL; }+ sched->threads_started = false;sched->allocator = a; UK_TAILQ_INIT(&sched->exited_threads); sched->prv = (void *) sched + sizeof(struct uk_sched); diff --git a/lib/ukschedcoop/schedcoop.c b/lib/ukschedcoop/schedcoop.c index c19a276a..27afad2b 100644 --- a/lib/ukschedcoop/schedcoop.c +++ b/lib/ukschedcoop/schedcoop.c @@ -36,7 +36,6 @@struct schedcoop_private {struct uk_thread_list thread_list; - int threads_started; };#ifdef SCHED_DEBUG@@ -175,9 +174,8 @@ static void idle_thread_fn(void *unused __unused) { struct uk_thread *current = uk_thread_current(); struct uk_sched *s = current->sched; - struct schedcoop_private *prv = s->prv;- prv->threads_started = 1;+ s->threads_started = true; ukplat_lcpu_enable_irq();while (1) {@@ -206,7 +204,6 @@ struct uk_sched *uk_schedcoop_init(struct uk_alloc *a)prv = sched->prv;UK_TAILQ_INIT(&prv->thread_list); - prv->threads_started = 0;uk_sched_idle_init(sched, NULL, idle_thread_fn); -- 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |