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

Re: [Minios-devel] [UNIKRAFT PATCH 17/17] lib/ukboot: Updates for inlining with platform and scheduling changes



On 27.03.2018 14:29, Costin Lupu wrote:
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 | 18 ++++++++++++------
  1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/lib/ukboot/boot.c b/lib/ukboot/boot.c
index acbae6e..c178ebf 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>
@@ -127,7 +129,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 +181,15 @@ 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");
+
+       ukplat_irq_init(a);

Since the previous patch introduce ukplat_irq_init() returning an int, we should catch it here or comment why we can ignore errors.

  #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 +201,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
  }


_______________________________________________
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®.