Re: getting process info for a kext
Re: getting process info for a kext
- Subject: Re: getting process info for a kext
- From: Quinn <email@hidden>
- Date: Thu, 10 Jul 2003 10:02:37 +0100
At 13:33 -0700 10/6/03, Chris Silverberg wrote:
I have an existing kext that needs to be modified slightly to look at
process information.
The most supportable answer to this is to move the code that needs to
do the sysctl into user space. Might it be possible to do that part
of the work in user space?
Failing that, my next question is, what context is your KEXT running
in? Doing any sysctl work will require you to acquire the BSD system
funnel. If you're running in the context of an I/O Kit driver,
you're probably not holding any funnels. If you're running in an
NKE, you're probably holding the wrong (network) funnel.
Even if you're holding the right funnel, I don't think this is going
to work. sysctl expects to copy its data in to and out of the user
memory space of the current thread. Take a look at sysctl_int in
"xnu/bsd/kern/kern_sysctl.c"; see how it blindly calls copyin/copyout.
I believe that the traditional approach for accessing sysctl-like
things in the kernel is to just access the variables directly.
sysctl is specifically designed to allow user space code access to
these variables. It doesn't make a lot of sense to call it from
kernel code in the traditional UNIX model.
OTOH, now that we're concerned about binary compatibility for kernel
extensions it might make sense to support sysctl from kernel code.
Something to think about when we publish the Kernel Programming
Interfaces (KPI) specification for developer comment.
S+E
--
Quinn "The Eskimo!" <
http://www.apple.com/developer/>
Apple Developer Technical Support * Networking, Communications, Hardware
_______________________________________________
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.