Hi Gerwin, Thanks for the answer. On 2024-09-23 09:53, Gerwin Klein wrote:
While the manual currently is attempting to shortcut this difference and mostly just talks about objects, I think it is important to make the difference explicit even though it does sound cumbersome to spell it out each time.
The big shortcut is not mentioning pseudo objects at all currently.
It is also the case that almost all caps in seL4 carry additional information (for instance access rights). Two copies of a cap to the same object can have different access rights, no matter if that object is memory-backed or not.
That is totally different, access rights are properties of the cap, not the object they point to. That is clear to everyone and doesn't cause confusion. It's a concept people are familiar with. What does make things weird is if object state is stored in caps, because that causes for the user unexpected limitation to what you can do with the caps.
So, from my side the important distinction to make is between cap and object. Some objects need memory resources, some don’t. We could call those pseudo objects, but I think that distinction is less important.
In that case I'll add all the missing objects to the Kernel Objects chapter.
And we should decide whether we are invoking caps or objects. That part doesn’t really matter, so I’m sure there will be strong opinions about it ;-). I think it makes sense to say that we are invoking object methods because people are familiar with that concept from OO, and to do that you need to present a cap to the object, which may provide additional state (access rights, mapping info, etc). This is the same for all kinds of objects.
This to me seems just semantics. However you say it, it's clear what the intention is, so I think I'll aim for consistency within chapters, but not much more than that. Greetings, Indan