I've joined Denis
Huber's project on developing a real-time checkpoint/restore
component for Genode.
(
https://sourceforge.net/p/genode/mailman/message/35211808/ )
In order to improve
our process of memory checkpointing we would like to distinguish
reading memory accesses from writing memory accesses.
While we do not
care about reading, we are highly interested in detecting the
occurrence of writing accesses.
At the moment our
way to detect the access to a specific memory region is to detach
the
corresponding dataspace and handle
the pagefault which is produced
when the component tries to access the dataspace.
We are aware that
it
is possible to determine whether a writing or a reading access
triggered a pagefault but we don't want to increase
the amount of
pagefaults by detaching dataspaces after every time they were only
read. It would be cool if writing would cause an error
which is is
not produced by reading.
As a solution to
this we thought of adding the possibility to make a RAM dataspace
read-only, something which is similar to „mprotect“ in Linux.
With this feature we would not need to detach dataspaces but
writing
accesses would still produce faults which we could track in order
to
detect them.
Is such an alteration of RAM dataspaces possible? If yes, how would you do it?
What kind of fault would be triggered if someone tries to write to a read-only memory?
Are we able to get information about such a fault in Genode?
We are using Genode on top of the Fiasco.OC.
Thanks in advance!
Kind Regards,
David