Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Jan 2013 09:25:00 +0200
From:      Mikolaj Golub <trociny@freebsd.org>
To:        Stanislav Sedov <stas@freebsd.org>
Cc:        freebsd-hackers@freebsd.org, Robert Watson <rwatson@freebsd.org>
Subject:   Re: libprocstat(3): retrieve process command line args and environment
Message-ID:  <20130123072459.GA48402@gmail.com>
In-Reply-To: <9679EEE4-BE52-493E-9188-CAECEE5E63D3@freebsd.org>
References:  <20130119151253.GB88025@gmail.com> <201301221201.06290.jhb@freebsd.org> <20130122211743.GA4490@gmail.com> <201301221648.50747.jhb@freebsd.org> <9679EEE4-BE52-493E-9188-CAECEE5E63D3@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Jan 22, 2013 at 02:17:39PM -0800, Stanislav Sedov wrote:
> 
> On Jan 22, 2013, at 1:48 PM, John Baldwin <jhb@freebsd.org> wrote:
> > 
> > Well, you could make procstat open a kvm handle in both cases (open a "live" 
> > handle in the procstat_open_sysctl() case).  It just seems rather silly to be 
> > duplicating code in the two interfaces.

In this particular case I prefer code duplication to opening a kvm
handle in procstat_open_sysctl(), as it looks a bit confusing. But I
can do this way if the agreement is reached.

> > More a question for Robert: does 
> > libprocstat intentionally duplicate the code in libkvm for other things as 
> > well in the live case?  (Like fetching the list of processes?)
> > 
> It does not actually has a duplicate code, the code for fetching the list of
> processes via sysctl is different from the KVM case.  The open file descriptors
> processing is different as well.  Because libprocstat implements almost the
> same functionality both for sysctl and mvm backends, it can be used to analyze
> both the live system and the kernel crash dumps.  The code Mikolaj proposed
> only implements the sysctl backend currently, so it does not seem to have
> any relation to KVM, so it will be a bit weird to make it open a KVM handle
> though it does not use it.

IMHO, after adding procstat_getargv and procstat_getargv, the usage of
kvm_getargv() and kvm_getenvv() (at least in the new code) may be
deprecated. As this is stated in the man page, BUGS section, "these
routines do not belong in the kvm interface". I suppose they are part
of libkvm because there was no a better place for them. procstat(1)
prefers direct sysctl to them (so, again, code duplication, which I am
going to remove adding procstat_getargv/envv).

-- 
Mikolaj Golub



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130123072459.GA48402>