Hi Alexej,
The actual mapping code is now at http://pastebin.com/m56a949a5 The
objects in question are allocated through vm_pager_allocate with
OBJT_SWAP. Note that I'm not sure when OBJ_ONEMAPPING clearing
actually helps and when not -- I've more sprinkled it around the code
in the hope of circumventing what I suspect is a bug. (But I also
have to confess that I don't understand the internals of
vm_object_deallocate well enough to really say where the bug might be,
if there is one.) The code around lines 110-117 is my latest attempt
to fix. The earlier version simply wired the pages.
--Pekka
On 13 Mar 2009, at 20:18, Alexej Sokolov wrote:
hi ,
I had a problem with remapping too. Could I see your code?
here is my code, that some times on AMD64 runs wrong :
http://pastebin.com/m78da0b37
And now I solved the problem with remapping by using /dev/mem
device. It has mmap syscal. And it seems to be working without
problem.
Alexej
<
2009/3/13 Pekka Nikander <pekka.nikan...@nomadiclab.com>
As a part of a research project, I'm trying to build publish/
subscribe shared memory semantics where the idea is to first map an
vm_object as read/write to a publisher's memory space, and then a
COW shadow of that later to the subscriber processes' memory space.
I've got to the point where the code works most of the time, but at
certain scenarios (which are hard to classify and seem slightly
random) the mapping goes wrong, and either the subscriber process
has no physical mapping at the supposed address or there appears
some random page. To me it appears as if the vm_object, vm_map etc
data structures are OK, but somehow the pmaps don't get right. I'm
currently using 7.1 RELEASE on amd64, but I'm planning to try the
same on -CURRENT as soon as I get it properly ported. I even tried
calling pmap_enter_object explicitly before returning to the user
space, but it doesn't seem to help.
Another thing is that there may be some bugs related
OBJ_ONEMAPPING. We need to explicitly clear it at places, and
sometimes artificially bump up the vm_object reference count to
avoid code related to ONEMAPPING from trashing the object's
mappings. Is this a known issue?
Any advice?
--Pekka Nikander
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org
"
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"