>Yes, p_args caches the arguments, but not always.  Right now, kernel
>does not cache arguments if the string is longer than 256 bytes.  Look
>for ps_arg_cache_limit in kern_exec.c.
>
>setproctitle() always informs the kernel with sysctl and sets the
>pointers in ps_strings. kern.proc.args sysctl first tries the p_args,
>and falls back to reading ps_strings and following the pointers if
>p_args is NULL.

Ah, that's what I get for scanning through years of updates too fast.
:-)

This seems a bit of a "worst of both worlds": there's now some
extra kernel code for poking through the ps_strings and the
pointer-vectors (this code is no longer in libkvm at all --
that was where I looked first and found the sysctl), for the "no
p_args" case.  It seems like perhaps there could just be a sysctl
to return the ps_strings address, and leave the "follow argv
pointers" code in libkvm, if there is to be code for that.

(The kernel saves a bit of time for the presumably-usual "p_args
not NULL" case, and finding the location of the ps_strings
structure when it *is* used is automatically correct.  So that
part is a straight-up improvement, at least.)

Not that big a deal either way, but it does seem as though there
should be documentation for ps_strings.

Chris
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to