|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH 17/17] lib/ukboot: Updates for inlining with platform and scheduling changes
Changes:
* init the IRQ subsystem
* init the timer after memory allocator initialization
* enable the interrupts just before starting the application when scheduling is
not enabled
* using uk_sched_default_init for scheduler init
* using uk_sched_start which also starts the idle thread and enables the
interrupts
Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx>
---
lib/ukboot/boot.c | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/lib/ukboot/boot.c b/lib/ukboot/boot.c
index acbae6e..758ee50 100644
--- a/lib/ukboot/boot.c
+++ b/lib/ukboot/boot.c
@@ -43,12 +43,14 @@
#if LIBUKALLOC && LIBUKALLOCBBUDDY && LIBUKBOOT_INITALLOC
#include <uk/allocbbuddy.h>
#endif
-#if LIBUKSCHED && LIBUKSCHEDCOOP
-#include <uk/schedcoop.h>
+#if LIBUKSCHED
+#include <uk/sched.h>
#endif
#include <uk/arch/lcpu.h>
#include <uk/plat/bootstrap.h>
#include <uk/plat/memory.h>
+#include <uk/plat/lcpu.h>
+#include <uk/plat/irq.h>
#include <uk/plat/time.h>
#include <uk/essentials.h>
#include <uk/print.h>
@@ -109,6 +111,7 @@ void ukplat_entry(int argc, char *argv[])
struct thread_main_arg tma;
#if LIBUKALLOC || LIBUKSCHED
struct uk_alloc *a = NULL;
+ int rc;
#endif
#if LIBUKALLOC && LIBUKALLOCBBUDDY && LIBUKBOOT_INITALLOC
struct ukplat_memregion_desc md;
@@ -127,7 +130,6 @@ void ukplat_entry(int argc, char *argv[])
STRINGIFY(UK_CODENAME) " " STRINGIFY(UK_FULLVERSION));
#endif
- ukplat_time_init();
#if LIBUKALLOC && LIBUKALLOCBBUDDY && LIBUKBOOT_INITALLOC
/* initialize memory allocator
@@ -180,11 +182,17 @@ void ukplat_entry(int argc, char *argv[])
}
if (unlikely(!a))
uk_printd(DLVL_WARN, "No suitable memory region for memory
allocator. Continue without heap\n");
+
+ rc = ukplat_irq_init(a);
+ if (unlikely(rc != 0))
+ UK_CRASH("Could not initialize the platform IRQ subsystem.");
#endif
+ ukplat_time_init();
+
#if HAVE_SCHED
/* Init scheduler. */
- s = uk_schedcoop_init(a);
+ s = uk_sched_default_init(a);
if (unlikely(!s))
UK_CRASH("Could not initialize the scheduler.");
#endif
@@ -196,9 +204,10 @@ void ukplat_entry(int argc, char *argv[])
main_thread = uk_thread_create("main", main_thread_func, &tma);
if (unlikely(!main_thread))
UK_CRASH("Could not create main thread.");
- uk_thread_start(main_thread);
- uk_sched_run(s);
+ uk_sched_start(s);
#else
+ /* Enable interrupts before starting the application */
+ ukplat_lcpu_enable_irq();
main_thread_func(&tma);
#endif
}
--
2.1.4
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |