The current door_call interface is sortof busted -- it doesn't handle rbuf correctly, or cleanly.
I think we need a DoorArgumentsBuffer type which has a to_door_args() method that will emit the current type. That way we still can have a single thing to own each of these buffers -- if folks don't want or need to use that, they can construct a door_args_t themselves.
If rbuf.ptr() doesn't match the storage allocated for rbuf by the DoorArgumentsBuffer, then somebody will need to deallocate the old rbuf (since it wasn't used) and munmap the new rbuf (since it was mapped into the client's address space by the kernel) once it is no longer needed.
Originally posted by @robertdfrench in #6 (comment)
The current door_call interface is sortof busted -- it doesn't handle
rbufcorrectly, or cleanly.I think we need a
DoorArgumentsBuffertype which has ato_door_args()method that will emit the current type. That way we still can have a single thing to own each of these buffers -- if folks don't want or need to use that, they can construct adoor_args_tthemselves.If rbuf.ptr() doesn't match the storage allocated for rbuf by the DoorArgumentsBuffer, then somebody will need to deallocate the old rbuf (since it wasn't used) and
munmapthe new rbuf (since it was mapped into the client's address space by the kernel) once it is no longer needed.Originally posted by @robertdfrench in #6 (comment)