[Barrelfish-users] Maybe a Bug of modify_flags
jhshi at cs.hku.hk
jhshi at cs.hku.hk
Sun May 20 15:57:40 CEST 2012
Hi,
For some reason, I need to work on x86_32 instead of x86_64. And I
found that x86_32's pmap->f.modify_flags is NYI. So I ported it from
x86_64, as described by my previous email (link). But then I found
that the port won't work properly. Personally, I don't think the
problem lies in the porting but in the modify_flags itself.
Here is my test case workflow:
First allocate two pages using frame_alloc and map them at some "safe"
virtual address as read-only using pmap->f.map. Then fill the two
pages with different content. Since they are read-only, page faults
will occur when filling. I catch them and map the fault page as
read-write using pmap->f.modify_flags in the fault handler. But then I
found that the two page's content are identical, which is not supposed
to be.
Then I found that if I allocate one frame for each page, instead of
one monolithic frame, everything is fine.
I've summarized my test in the attached C file, which should be
compiled and run under x86_32. Apology for not being able to test it
under X86_64 since I encounter some weird errors when compiling arch
x86_64. But if you substitute all the X86_32 to X86_64 in the test
file, it should work under x86_64 as well.
However, if the test goes all fine under x86_64, then please give some
hint about why its x86_32's port would fail.
Thanks in advance!
Regards,
Jinghao
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pmaptest.tgz
Type: application/x-compressed-tar
Size: 10240 bytes
Desc: not available
Url : https://lists.inf.ethz.ch/pipermail/barrelfish-users/attachments/20120520/3a11e895/attachment-0001.bin
More information about the Barrelfish-users
mailing list