site_archiver@lists.apple.com Delivered-To: darwin-dev@lists.apple.com On 8/1/06 at 1:24 PM, bierman@apple.com (Peter Bierman) wrote:
Assuming that you're willing to accept the stipulation that you can only look at your own processes, what sorts of information about said processes would you expect/want such an API to provide? To put it another way, if you could have your idea "process inspection API", what would might it look like?
Ideally, given a pid, I'd like an API returning the following ps values in a struct:
%cpu %mem command lim lstart nice ppid pri sl state time uid xstat
To solve my immediate problem, I'd settle for
lstart state time xstat
Does sysctl on kern.proc work for this? (See the example in the sysctl 3 man page.)
I grabbed some source described here: http://ezine.daemonnews.org/200205/sysctl-netbsd.html
I had to change some "struct proc" declarations to "struct extern_proc", but then it compiles. Running it against my local user didn't correctly sum up my CPU usage, but it did correctly count my processes.
Thanks for the link.. but I encountered the same result, it didn't return the CPU usage (just zeros), so I wonder if it suffers from the same "can't get stats from a running process" limitation as getrusage(). I pulled it into gdb and looked at the extern_proc p_rtime and p_cputicks fields. (Heck, I showed the whole struct and every time-like field was empty except __p_starttime.) This code looks familiar- I think I tried sysctl() for times on PPC long ago and then had to go to task_from_pid() to get real answers. :-). Thanks Jeffrey Johnson Macintosh Development Wavefunction, Inc. _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-dev mailing list (Darwin-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-dev/site_archiver%40lists.appl... This email sent to site_archiver@lists.apple.com