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

[MirageOS-devel] decision on oS module future (mirage/mirage-os-shim#7)



Dear all,

I'm back from holidays, and looking into completing the various outstanding 
merges for the new cross compilation scheme using Dune workspaces.  One PR we 
need to take a decision on is:

https://github.com/mirage/mirage-os-shim/pull/7

Hannes notes that a virtual module for `oS` is unsatisfactory from a 
composition perspective and a possible vendor lockin.  
  
My thoughts are that the OS module needs to disappear entirely ahead of the 
Mirage 4 release.  Its original purpose was to provide a set of core OS 
functionality without making every application a functor, and predates 
functoria and used the "linking hack".  I've recently merged a number of other 
changes to use OS_<backend> alternatives for target-specific functionality 
(e.g. OS_xen for mirage-block-xen).  Looking at the OS signature, it is very 
small now:

    module Lifecycle : sig
      val await_shutdown_request :
        ?can_poweroff:bool ->
        ?can_reboot:bool ->
        unit -> [`Poweroff | `Reboot] Lwt.t
    end

    module Main : sig
      val run : unit Lwt.t -> unit
      val at_enter : (unit -> unit Lwt.t) -> unit
      val at_exit_iter  : (unit -> unit) -> unit
      val at_enter_iter : (unit -> unit) -> unit
    end

    module Time : Mirage_time_lwt.S

Is this really worth keeping this shim over?  We could simply expose a HOOKS 
signature that could be specified as a functoria device, and OS.Time can be 
lifted to a TIME device for `sleep_ns`.  I don't know of any users of Lifecycle 
and think that can be deprecated and restored in a more general way as a 
hotplug event stream device in the future (e.g. so it can get backend-specific 
events from Xen or Solo5 as well as generic ones). 

Any objections to me taking a shot at removing the remainders of OS in my trees 
and seeing what mirage-skeleton looks like?

regards,
Anil
_______________________________________________
MirageOS-devel mailing list
MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/mirageos-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.