-
Notifications
You must be signed in to change notification settings - Fork 52
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
manual: typos and other questions #142
Comments
Thank you for taking the time to make a detailed write-up. The feedback is greatly appreciated. The fixes that I mention below are from #143.
Changed to 'has four distinct entry points: init, notified and, potentially, protected, fault.' because I don't want to introduce the concept of child PDs so early on.
Changed to 'system image'.
Fixed.
The PD still has all of those scheduling attributes, it just depends what the user decides to be explicit about. I think the entry points are an exception since they're not mentioned in the SDF section. I think it's better to leave the attributes details and whether or not they are optional to the SDF section.
It's a bit ambiguous with this wording. It would still be round robin but when each PD with be preempted would depend on its own period. I haven't fixed this in the manual yet because I think the whole scheduling section needs a closer look. This needs to be carefully done so I'll do it in a separate PR.
Fixed.
Yes the handling of the fault could be delayed. It entirely depends on the priority and scheduling attributes of the rest of the system. The default system fault handler has the highest priority and so will always receive the fault immediately. I will add something about this in the section.
Yes it is true that no entry points will be entered until I'm just trying to think what exactly we should mention in the scheduling part. Some of this should only be in the tutorial as we don't want to make the manual too heavy on getting people to understand how an event based system works. I will think about it.
Memory regions that are within main memory/RAM are zero-initialised by the kernel at boot time. This is now mentioned in the section on memory regions.
This is mentioned in the section on memory regions. I've added it to the SDF section and outlined all the possible values for the page size for each architecture Microkit supports.
Yes, this is not talking about scheduling contexts but a more abstract 'context'. It's just trying to say that the procedure executes inside the PD that provides the procedure.
Fixed.
If you're talking about the same channel notifying multiple times, then yes the notifications lead to a single execution of This is probably worth mentioning in the scheduling section of the manual.
Yes, partially. In general we want to avoid system calls as much as possible while still letting things progress. Another reason is that if you are notifying a PD with a higher priority, this will be guaranteed to call a context switch, something which you may not want to do in all cases.
Then when the
The motivation for this API (which is not in the mainline Microkit yet) is to only use one system call to notify another PD and wait on futher events. Let's say you are in
Yes, mentioned in the manual now.
Fixed. It's in the tutorial as well.
It's similar to
A fault causes the suspension of the PD, I will mention this in the section on faults. The monitor does not explicitly unsuspend the PD.
Fixed.
Not technically missing since they aren't upstreamed.
All fixed. |
Many thanks for writing a detailed manual about the use and rationale for the Microkit. It is an important resource. I've read the document in details recently; I have some suggestions and questions.
Overview
init
,notified
, optionally,protected
, andfault
if the program has children”Document Structure
Entry points
protected
is truly optional, never required; butfault
is required for a parent PD; unless I'm confused about use offault
, which is possible.)Scheduling
priority
) …” (so "optionality" is discussed/described for all abstractions in the same part of the text)notified
,protected
, orfault
will not execute untilinit
returns? I feel there are two important ways that a PD is different than a Linux process: (1) entry points are expected to return pretty quickly (in contrast, Linux'smain
may never return); (2) entry points are not interrupt-able/preempt-able by the invocation of another entry point in the same PD (in contrast,main
can be interrupted).Memory Regions
tail
andhead
are never explicitly initialized anywhere that I could see).page_size
? Smallest available on the given architecture?Protected procedure
Notification
notified
(e.g., because a higher priority PD is running)? Are these notifications coalesced, leading to a single execution of the relevantnotified
or willnotified
be executed as many times as the number of notifications received?notify
?notified
is already running?microkit_notify_delayed
do?Interrupts
microkit_irq_ack
?microkit_irq_ack
after handling an interrupt.microkit_irq_ack_delayed
; what does it do?Faults
libmicrokit
fault
nor its signature.microkit_notify_delayed
andmicrokit_irq_ack_delayed
Other small changes:
The text was updated successfully, but these errors were encountered: