physio() to UIO_SYSSPACE
physio() to UIO_SYSSPACE
- Subject: physio() to UIO_SYSSPACE
- From: Sam Vaughan <email@hidden>
- Date: Tue, 7 Oct 2003 16:31:57 +1000
physio() seems to be aware of the possibility that it might be called
to do I/O to kernel memory, yet it sets the B_PHYS flag regardless.
This means that when the request hits the I/O kit in dkreadwrite,
IOMemoryDescriptor::withAddress() will get called with the user task
instead of the kernel task. The result is a failure in
IOGeneralMemoryDescriptor::prepare().
I'm currently circumventing this behaviour with a hack. If it's
UIO_SYSSPACE I mark the buffer in some way, then when my strategy
routine is called I check for the mark and clear the B_PHYS flag. This
works, but I'm curious to know if there's a better way.
Sam
_______________________________________________
darwin-kernel mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/darwin-kernel
Do not post admin requests to the list. They will be ignored.