Skip to main content

Cancelling POSIX syscalls in Managarm - an asynchronous microkernel-based OS

UB4.136 | Day 1 | 17:50 - 18:10 | Speakers: Geert Custers

Cancelling POSIX syscalls in Managarm - an asynchronous microkernel-based OS
A picture of a devroom at FOSDEM 2024

Stream opens at 17:50 (Europe/Brussels)

Notes

Abstract

One of the most idiosyncratic parts of POSIX compliance is signal support. On microkernels the implementation can prove to be quite difficult. One especially tricky part is the cancellation of POSIX syscalls when they are interrupted by signals, and the intricacies of EINTR side effects. Monolithic kernels inheritely have the bookkeeping required to implement this without extra overhead. In contrast, due to the generally distributed nature of microkernels, properly cancelling syscalls requires extra work. This is especially the case for Managarm, where (1) POSIX is implemented in a userspace server, (2) syscalls are asynchronous and (3) can involve multiple servers.

In this talk, we will explore the process of implementing syscall cancellation on Managarm. A brief overview of signal delivery is given, followed by a deep dive into the new lifetime of a Managarm POSIX request. Finally, we give a summary of the lessons learned while implementing cancellation in a fully asynchronous microkernel.

Attachments

Speakers

Geert Custers

Notice: The placeholder video image is licensed under CC BY-SA 4.0. The original image can be found hereChanges made to the image are: Cropped the image to a new ratio, part of the image was cut off.