Re: Kernel -> user boundary
Re: Kernel -> user boundary
- Subject: Re: Kernel -> user boundary
- From: George André <email@hidden>
- Date: Tue, 28 Jan 2003 00:30:56 +0100
- Organization: Intelligraphics, Inc.
Hi Godfrey,
My problem starts inside msdosfs.kext, which is my kext.
I've changed this kext to rename certain files when created.
The only time I can do that unambiguously is at close() time
(when the filesystem receives close op). Using NDINIT/namei/VOP_RENAME
works ok and does what it's supposed to, but the problems
come from the following chown/chmod syscalls from the Finder.
Finder does that last on a file drag & copy operation.
Problem is that since I've changed the name, chown and chmod
fail inside their kernel implementations and never get down to me...
Thus, our friend the Finder puts up a nice dialog about not finding the
files. One of my solutions is to send the path name to the user process
and it will do the rename itself and thus defer this task.
I'm currently working on this approach: the user proc allocates mem with
vm_allocate(), the it uses mach_make_memory_entry_64() and then sends
the ipc_port_t to the kext thru mount args. (user proc is actually
spawned by mount_msdos). This allocated memory is then vm_mapped by the
kext and there you go... memory sharing. Is this approach something that
will work, or am I out chasing rabbits?
Thanks,
George.
Godfrey van der Linden wrote:
At 21:09 +0100 03-1-27, George Andri wrote:
Hi there,
I am aware of user -> kernel boundary crossing, like
Mach IPC, RPC, syscall, sysctl and ioctl.
But I'm interested ina kernel -> user *initiated* connection,
is there anything outthere? I have a kext that needs
to initiate communication with an user process.
I can alternatively let the user process initiate
the connection in one of the above ways and then pass
a data pool pointer, but that would be a lot harder.
IS there anything I can do or use to initiate a
kernel -> user crossing without user parts help?
Not really. Do you have a user land app that you are talking to? If so
it is pretty easy to emulate a kernel initiated event.
What do you want to happen in user land when the kernel hits something.
I guess what I'm asking is what problem are you actually trying to solve.
Godfrey van der Linden
_______________________________________________
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.