Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split out C files between muen and hvt bindings #552

Merged
merged 1 commit into from
Apr 18, 2023

Conversation

dinosaure
Copy link
Collaborator

A minimal patch which splits time.c between Muen and HVT bindings. Instead to re-use the same code, we copy it to be able to change the Muen clock independantly than HVT.

@dinosaure dinosaure merged commit a576cf8 into master Apr 18, 2023
@dinosaure dinosaure deleted the split-out-muen-and-hvt branch April 18, 2023 09:50
dinosaure added a commit to dinosaure/opam-repository that referenced this pull request Apr 25, 2023
* Be able to build `spt`, `virtio`, `muen` and `xen` targets on OpenBSD
  (@adamsteen, Solo5/solo5#544). This change does not allow us to "run" these
  targets on OpenBSD
* Fix linker scripts with TLS (Thread Local Storage) sections
  (@palainp, @hannesm, @dinosaure, Solo5/solo5#542)
* Export TLS symbols (@palainp, @hannesm, @dinosaure, Solo5/solo5#546)
  **breaking change** due to Solo5/solo5#542 & Solo5/solo5#546, tenders must be
  **upgraded**. Indeed, solo5.0.7.* tenders will not be able to load correctly
  unikernels compiled with solo5.0.8.0. The internal ABI version for
  `solo5-hvt`/`solo5-spt` was upgraded accordingly.

  This version implements Thread Local Storage. The user can initialise a TLS
  block with `solo5_tls_init` on a pointer to `solo5_tls_size()` free bytes.
  Then, the user is able to set the `tp` (Thread Pointer) pointer via
  `solo5_set_tls_base(solo5_tls_tp_offset(tls_block))`. More details are
  available into `solo5.h`.

  Note: this change does not allow a Solo5 unikernel to use multiple cores! It
  only provides an API required by OCaml 5 / pthread to launch, at most, one
  thread.
* Fix tests reported by NixOS (@greydot, @ehmry, Solo5/solo5#547)
* Split out the `time.c` implementation between Muen and HVT
  (@dinosaure, @Kensan, Solo5/solo5#552)
* User hypercall instead of TSC-based clock when the user asks for the
  wall-clock (@dinosaure, @reynir, Solo5/solo5#549, Solo5/solo5#550)

  Note: only hvt & virtio are updated to avoid a clock drift on the wall-clock.
  Indeed, when the unikernel is suspended, the wall-clock is not updated. Muen
  & Xen still use a TSC-based wall-clock. The spt target was already in sync
  with the host's wall-clock.
* Improve the muen clock (@Kensan, Solo5/solo5#553)
* Fix the `.bss` section according to Solo5/solo5#542 & Solo5/solo5#546. The
  `.bss` section is tagged with `PT_LOAD`. Tenders are available to load this
  section properly. (@Kensan, @dinosaure, Solo5/solo5#551, Solo5/solo5#554)
* Fix the cross-compilation of Solo5 for `aarch64`
  (@dinosaure, @palainp, @hannes, Solo5/solo5#555)
dinosaure added a commit to dinosaure/opam-repository that referenced this pull request Apr 25, 2023
  (@adamsteen, Solo5/solo5#544). This change does not allow us to "run" these
  targets on OpenBSD
* Fix linker scripts with TLS (Thread Local Storage) sections
  (@palainp, @hannesm, @dinosaure, Solo5/solo5#542)
* Export TLS symbols (@palainp, @hannesm, @dinosaure, Solo5/solo5#546)
  **breaking change** due to Solo5/solo5#542 & Solo5/solo5#546, tenders must be
  **upgraded**. Indeed, solo5.0.7.* tenders will not be able to load correctly
  unikernels compiled with solo5.0.8.0. The internal ABI version for
  `solo5-hvt`/`solo5-spt` was upgraded accordingly.

  This version implements Thread Local Storage. The user can initialise a TLS
  block with `solo5_tls_init` on a pointer to `solo5_tls_size()` free bytes.
  Then, the user is able to set the `tp` (Thread Pointer) pointer via
  `solo5_set_tls_base(solo5_tls_tp_offset(tls_block))`. More details are
  available into `solo5.h`.

  Note: this change does not allow a Solo5 unikernel to use multiple cores! It
  only provides an API required by OCaml 5 / pthread to launch, at most, one
  thread.
* Fix tests reported by NixOS (@greydot, @ehmry, Solo5/solo5#547)
* Split out the `time.c` implementation between Muen and HVT
  (@dinosaure, @Kensan, Solo5/solo5#552)
* User hypercall instead of TSC-based clock when the user asks for the
  wall-clock (@dinosaure, @reynir, Solo5/solo5#549, Solo5/solo5#550)

  Note: only hvt & virtio are updated to avoid a clock drift on the wall-clock.
  Indeed, when the unikernel is suspended, the wall-clock is not updated. Muen
  & Xen still use a TSC-based wall-clock. The spt target was already in sync
  with the host's wall-clock.
* Improve the muen clock (@Kensan, Solo5/solo5#553)
* Fix the `.bss` section according to Solo5/solo5#542 & Solo5/solo5#546. The
  `.bss` section is tagged with `PT_LOAD`. Tenders are available to load this
  section properly. (@Kensan, @dinosaure, Solo5/solo5#551, Solo5/solo5#554)
* Fix the cross-compilation of Solo5 for `aarch64`
  (@dinosaure, @palainp, @hannes, Solo5/solo5#555)
dinosaure added a commit to dinosaure/opam-repository that referenced this pull request Apr 28, 2023
* Be able to build `spt`, `virtio`, `muen` and `xen` targets on OpenBSD
  (@adamsteen, Solo5/solo5#544). This change does not allow us to "run" these
  targets on OpenBSD
* Fix linker scripts with TLS (Thread Local Storage) sections
  (@palainp, @hannesm, @dinosaure, Solo5/solo5#542)
* Export TLS symbols (@palainp, @hannesm, @dinosaure, Solo5/solo5#546)
  **breaking change** due to Solo5/solo5#542 & Solo5/solo5#546, tenders must be
  **upgraded**. Indeed, solo5.0.7.* tenders will not be able to load correctly
  unikernels compiled with solo5.0.8.0. The internal ABI version for
  `solo5-hvt`/`solo5-spt` was upgraded accordingly.

  This version implements Thread Local Storage. The user can initialise a TLS
  block with `solo5_tls_init` on a pointer to `solo5_tls_size()` free bytes.
  Then, the user is able to set the `tp` (Thread Pointer) pointer via
  `solo5_set_tls_base(solo5_tls_tp_offset(tls_block))`. More details are
  available into `solo5.h`.

  Note: this change does not allow a Solo5 unikernel to use multiple cores! It
  only provides an API required by OCaml 5 / pthread to launch, at most, one
  thread.
* Fix tests reported by NixOS (@greydot, @ehmry, Solo5/solo5#547)
* Split out the `time.c` implementation between Muen and HVT
  (@dinosaure, @Kensan, Solo5/solo5#552)
* User hypercall instead of TSC-based clock when the user asks for the
  wall-clock (@dinosaure, @reynir, Solo5/solo5#549, Solo5/solo5#550)

  Note: only hvt & virtio are updated to avoid a clock drift on the wall-clock.
  Indeed, when the unikernel is suspended, the wall-clock is not updated. Muen
  & Xen still use a TSC-based wall-clock. The spt target was already in sync
  with the host's wall-clock.
* Improve the muen clock (@Kensan, Solo5/solo5#553)
* Fix the `.bss` section according to Solo5/solo5#542 & Solo5/solo5#546. The
  `.bss` section is tagged with `PT_LOAD`. Tenders are available to load this
  section properly. (@Kensan, @dinosaure, Solo5/solo5#551, Solo5/solo5#554)
* Fix the cross-compilation of Solo5 for `aarch64`
  (@dinosaure, @palainp, @hannesm, Solo5/solo5#555)
* Increase the Muen ABI (2 to 3) due to TLS changes (@Kensan, ocaml#557)
* Support lifecycle management for Muen (@Kensan, ocaml#557)
  The user is able to configure automatic restarting of unikernels that invokes
  `solo5_ext()`
* Fix the `test_fpu` test & ensure the alignment of variables (@Kensan, ocaml#557)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant