[squeak-dev] Backing a Form with e.g. mmap() or shm
tonyg at leastfixedpoint.com
Thu Jun 23 18:16:12 UTC 2022
On 6/23/22 19:41, Eliot Miranda wrote:
> So in this use including the header in the first page would be ok?
Yes, this would be fine. Ideally the beginning of the data portion would
be page-aligned but I suspect the server may not actually care, and
anything 8- or 16-byte aligned would probably be just fine.
> Would the mapping be read-only from the perspective of the X server?
It could be, yes, but ideally it'd be possible to have it read-write so
that I could grab pixels from the server as well as send them.
The address of the mapping may have to be fixed for the lifetime of the
relationship with the server - I don't know why, but the address is
included in the wire protocol, not just the segment identifier. I need
to dig deeper.
> you need shmget to be run via the FFI or would it be OK to invoke it
> implicitly as part of a mapping allocation primitive?
It'd be OK if it were done primitively but I do need access to the shm
mmap incidentally can work as well but I need to implement fd passing
which is fiddly and involves sendmsg. I'm putting it off if I can :-)
> Would it be
> better to create the mapping via the FFI and provide the mapping to
> the allocation primitive?
It might be better if the primitives could cope with chunks of external
memory from arbitrary sources - then I could manage shm and/or mmap
myself via the FFI.
> How should the mapping be taken down?
By manual invocation of some kind of free()-analogue, I suspect; so from
the GC's point of view, the object holding the external bytevector is
permanent until explicitly, manually released. And I think it's probably
best if the image-side is responsible for deallocating the chunk of
memory too (obvs if it is supplied in a mechanism-agnostic way to the GC
this holds double!)
> Windows folks, how portable is this idea to other OS's,
> especially windows? (I'm guessing this is a standard facility on most
> leading OS's). So would it be worth evolving towards a cross-platform
If you get to hand chunks-o-RAM to the GC without having to talk about
how you got them, it might be pretty portable automatically.
> Would you be prepared to build the VM to test this? Perhaps even
> generate it from sources? To what extent would you be able to
> collaborate with e.g. Tom & myself in implementing this?
Yes, I would be happy building. I would also be happy generating from
sources, though I might have silly questions about the process for the
first couple of hours. I'd be happy to collaborate.
More information about the Squeak-dev