From 14eaa5c07225e1e815b1db119016c6fcb9442c10 Mon Sep 17 00:00:00 2001 From: Antti Kantee Date: Tue, 21 Apr 2015 11:18:31 +0000 Subject: [PATCH] allow bmk_sched_init() to pass an arg to the main function --- include/bmk-core/sched.h | 2 +- platform/baremetal/kernel.c | 4 ++-- platform/baremetal/sched.c | 5 ++--- platform/xen/xen/kernel.c | 2 +- platform/xen/xen/sched.c | 2 +- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/include/bmk-core/sched.h b/include/bmk-core/sched.h index 4193f75..d406e30 100644 --- a/include/bmk-core/sched.h +++ b/include/bmk-core/sched.h @@ -38,7 +38,7 @@ struct bmk_tcb { struct bmk_thread; -void bmk_sched_init(void (*)(void)); +void bmk_sched_init(void (*)(void *), void *); void bmk_sched(void); void bmk_sched_yield(void); diff --git a/platform/baremetal/kernel.c b/platform/baremetal/kernel.c index 9459df5..7e6f327 100644 --- a/platform/baremetal/kernel.c +++ b/platform/baremetal/kernel.c @@ -187,7 +187,7 @@ parsemem(uint32_t addr, uint32_t len) } static void -bmk_mainthread(void) +bmk_mainthread(void *notused) { _netbsd_init(); @@ -213,7 +213,7 @@ bmk_main(struct multiboot_info *mbi) bmk_isr_init(); /* enough already, jump to main thread */ - bmk_sched_init(bmk_mainthread); + bmk_sched_init(bmk_mainthread, NULL); } /* diff --git a/platform/baremetal/sched.c b/platform/baremetal/sched.c index 67159d2..c9466c6 100644 --- a/platform/baremetal/sched.c +++ b/platform/baremetal/sched.c @@ -451,13 +451,12 @@ bmk_sched_wake(struct bmk_thread *thread) } void -bmk_sched_init(void (*mainfun)(void)) +bmk_sched_init(void (*mainfun)(void *), void *arg) { struct bmk_thread *mainthread; struct bmk_thread initthread; - mainthread = bmk_sched_create("main", NULL, 0, - (void (*)(void *))mainfun, NULL, NULL, 0); + mainthread = bmk_sched_create("main", NULL, 0, mainfun, arg, NULL, 0); if (mainthread == NULL) bmk_platform_halt("failed to create main thread"); diff --git a/platform/xen/xen/kernel.c b/platform/xen/xen/kernel.c index ef3004e..1aa2e04 100644 --- a/platform/xen/xen/kernel.c +++ b/platform/xen/xen/kernel.c @@ -171,7 +171,7 @@ void _minios_start_kernel(start_info_t *si) init_gnttab(); /* Init scheduler. */ - bmk_sched_init(NULL); + bmk_sched_init(NULL, NULL); /* Init XenBus */ init_xenbus(); diff --git a/platform/xen/xen/sched.c b/platform/xen/xen/sched.c index fd3dc36..949d967 100644 --- a/platform/xen/xen/sched.c +++ b/platform/xen/xen/sched.c @@ -468,7 +468,7 @@ idle_thread_fn(void *unused) } void -bmk_sched_init(void (*notused)(void)) +bmk_sched_init(void (*notused)(void *), void *arg) { minios_printk("Initialising scheduler\n"); -- 2.39.5