ps_strings

Konstantin Belousov kostikbel at gmail.com
Mon Aug 19 07:44:58 UTC 2013


On Sun, Aug 18, 2013 at 04:05:11PM -0600, Chris Torek wrote:
> FreeBSD now, however, uses a per-process p_args field in the
> "proc" structure, with sysctl()s to set and get p_args.  (I had
> nothing to do with this new code, but I approve, as if anyone
> cares. :-) )  This removes the fixed-virtual-address limitation.
> The cost is a bit more kernel code (for the sysctl()s) and this
> per-process data, but there is no more messing-about with "where
> is ps_strings in this memory-layout / emulation" etc.  (Meanwhile
> libkvm still retrieves the arguments.  It just does it now with
> sysctl().)

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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20130819/90d032cb/attachment.sig>


More information about the freebsd-hackers mailing list