site_archiver@lists.apple.com Delivered-To: Darwin-kernel@lists.apple.com
I am not sure this is possible but here goes. I am working on a filesystem kernel driver on a 10.6 32bit kernel userspace application can send me write request (vnop_write_desc) with a UIO_USERSPACE64 uio. In my code path I pass this uio to the physio() function which try to assign the iovec to a bp->b_datap, to do so it CASTDOWN the 64bit iov_base address to 32bit breaking it.
So my question on a 32bit kernel is it possible to transform a 64bit userspace uio to a 32bit userspace uio?
Hmmm ... I'm not the expert, but I don't see a way to make that happen. I see what you mean ... b_datap is a uintptr_t, and I suppose it really should be a user_addr_t. I would guess that your only solution is to either compile your userspace applications be 32-bit (which would suck) or create a bounce buffer in your filesystem driver where you can use uiomove to get your data into the kernel address space and then use physio (which also sucks, but probably sucks less). --Ken _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-kernel mailing list (Darwin-kernel@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-kernel/site_archiver%40lists.a... This email sent to site_archiver@lists.apple.com