[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH 2/8] lib/uksched: Add function for allocating scheduler common info
This patch needs slight changes to cleanly apply to staging, related to 1c6eca07 ("plat/*: Replace uk_printd() with uk_pr_*() equivalents"). It also should use those macros itself. I pointed out the three locations below (two deletions, one addition) where this is necessary to cleanly apply and be up-to-date with current usage. Other than that, for the general logic of the patch: Reviewed-by: Florian Schmidt <florian.schmidt@xxxxxxxxx> On 9/18/18 5:27 PM, Costin Lupu wrote: We introduce uk_sched_create function which allocates the memory needed for schedulers data. It also initializes data that is common to all schedulers. Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx> --- lib/uksched/exportsyms.uk | 1 + lib/uksched/include/uk/sched.h | 2 ++ lib/uksched/sched.c | 18 ++++++++++++++++++ lib/ukschedcoop/schedcoop.c | 27 ++++----------------------- 4 files changed, 25 insertions(+), 23 deletions(-) diff --git a/lib/uksched/exportsyms.uk b/lib/uksched/exportsyms.uk index 9dc133c..45a9694 100644 --- a/lib/uksched/exportsyms.uk +++ b/lib/uksched/exportsyms.uk @@ -2,6 +2,7 @@ uk_sched_default_init uk_sched_register uk_sched_get_default uk_sched_set_default +uk_sched_create uk_sched_start uk_sched_idle_init uk_sched_thread_create diff --git a/lib/uksched/include/uk/sched.h b/lib/uksched/include/uk/sched.h index bbfe442..d2fc8df 100644 --- a/lib/uksched/include/uk/sched.h +++ b/lib/uksched/include/uk/sched.h @@ -114,6 +114,8 @@ static inline void uk_sched_thread_remove(struct uk_sched *s, * Internal scheduler functions */+struct uk_sched *uk_sched_create(struct uk_alloc *a, size_t prv_size);+ void uk_sched_idle_init(struct uk_sched *sched, void *stack, void (*function)(void *));diff --git a/lib/uksched/sched.c b/lib/uksched/sched.cindex 07e7aef..8276e15 100644 --- a/lib/uksched/sched.c +++ b/lib/uksched/sched.c @@ -109,6 +109,24 @@ int uk_sched_set_default(struct uk_sched *s) return 0; }+struct uk_sched *uk_sched_create(struct uk_alloc *a, size_t prv_size)+{ + struct uk_sched *sched = NULL; + + UK_ASSERT(a != NULL); + + sched = uk_malloc(a, sizeof(struct uk_sched) + prv_size); + if (sched == NULL) { + uk_printd(DLVL_WARN, "Could not allocate scheduler."); This now needs to be uk_pr_warn("Could not allocate scheduler.\n"); + return NULL; + } + + sched->allocator = a; + sched->prv = (void *) sched + sizeof(struct uk_sched); + + return sched; +} + void uk_sched_start(struct uk_sched *sched) { UK_ASSERT(sched != NULL); diff --git a/lib/ukschedcoop/schedcoop.c b/lib/ukschedcoop/schedcoop.c index dd22209..d78ca54 100644 --- a/lib/ukschedcoop/schedcoop.c +++ b/lib/ukschedcoop/schedcoop.c @@ -194,27 +194,16 @@ struct uk_sched *uk_schedcoop_init(struct uk_alloc *a)uk_printd(DLVL_INFO, "Initializing cooperative scheduler\n"); - sched = uk_malloc(a, sizeof(struct uk_sched));- if (sched == NULL) { - uk_printd(DLVL_WARN, "Could not allocate memory for scheduler."); This now needs to be uk_pr_warn("Could not allocate scheduler.\n"); - goto out_err; - } - - sched->allocator = a; + sched = uk_sched_create(a, sizeof(struct schedcoop_private)); + if (sched == NULL) + return NULL;ukplat_ctx_callbacks_init(&sched->plat_ctx_cbs, ukplat_ctx_sw); - prv = uk_malloc(a, sizeof(struct schedcoop_private));- if (prv == NULL) { - uk_printd(DLVL_WARN, - "Could not allocate memory for scheduler private data."); This now needs to be uk_pr_warn("Could not allocate memory for scheduler private data.\n"); - goto out_err; - } - + prv = sched->prv; UK_TAILQ_INIT(&prv->exited_threads); UK_TAILQ_INIT(&prv->thread_list); prv->threads_started = 0; - sched->prv = prv;uk_sched_idle_init(sched, NULL, idle_thread_fn); @@ -224,12 +213,4 @@ struct uk_sched *uk_schedcoop_init(struct uk_alloc *a)schedcoop_thread_remove);return sched;- -out_err: - if (prv) - uk_free(a, prv); - if (sched) - uk_free(a, sched); - - return 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |