libprocstat(3): retrieve process command line args and environment
Mikolaj Golub
trociny at FreeBSD.org
Sun Mar 17 09:19:45 UTC 2013
On Sun, Mar 17, 2013 at 08:30:33AM +0200, Konstantin Belousov wrote:
> On Sun, Mar 17, 2013 at 12:35:20AM +0200, Mikolaj Golub wrote:
> > A KPI that would be natural for my case:
> >
> > /* start a section that is going to be aligned to sizeof(Elf_Size),
> > using byte '0' for padding */
> > sbuf_padded_start(sb, sizeof(Elf_Size), 0);
> > /* write something to sbuf */
> > sbuf_bcat(sb, data, len);
> > /* align the sbuf section */
> > sbuf_pad(sb);
> >
> > This might look a little awkward and would add some overhead for the normal
> > case though...
> This looks fine, in fact. You might want to call it sbuf_start_section()
> and sbuf_end_section() ?
Ok, will try this way. Thanks.
...
> All you need is to reset req->oldidx. This could be done outside the
> sbuf interface, in the top level function implementing the sysctl ?
I am afraid at this level I don't know a value to reset req->oldidx
to. Reseting it to 0 I think is not a good solution?
> What you propose in the follow-up message should work too, I do not
> have any preference.
Ok. Thanks.
> > > Indents after the else clauses in kern_proc_out() are wrong.
> >
> > Do you mean indents after '#ifdef COMPAT_FREEBSD32' block? I did it
> > that way so if COMPAT_FREEBSD32 sections were removed from the code
> > the indentation would be correct. I saw this practice through the code
> > and used it myself before.
> The sections are not going to be removed. IMHO code should be formatted
> as if the preprocessor directive lines are not present. Could you point
> out an example of existing code consistent with your indentation ?
In kern/kern_proc.c my code (get_proc_vector, sysctl_kern_proc_auxv)
has such indentation. There were no objection when I introduced it, so
I thought it was a right way. But surely I didn't invented such
indentation myself. I don't recall if I used some particular examples
as a reference then, but here are several examples of such indentation
found by quick grep:
net/bpf.c-#ifdef BPF_JITTER
net/bpf.c- bf = bpf_jitter_enable != 0 ? d->bd_bfilter : NULL;
net/bpf.c- if (bf != NULL)
net/bpf.c- slen = (*(bf->func))(pkt, pktlen, pktlen);
net/bpf.c- else
net/bpf.c:#endif
net/bpf.c- slen = bpf_filter(d->bd_rfilter, pkt, pktlen, pktlen);
kern/kern_conf.c-#if 0
kern/kern_conf.c- if (dev->si_usecount == 0 &&
kern/kern_conf.c- (dev->si_flags & SI_CHEAPCLONE) && (dev->si_flags & SI_NAMED))
kern/kern_conf.c- ;
kern/kern_conf.c- else
kern/kern_conf.c:#endif
kern/kern_conf.c- if (dev->si_devsw == NULL && dev->si_refcount == 0) {
kern/kern_jail.c- if (SV_PROC_FLAG(td->td_proc, SV_ILP32)) {
kern/kern_jail.c- uint32_t hid32 = pr->pr_hostid;
kern/kern_jail.c-
kern/kern_jail.c- error = vfs_setopt(opts, "host.hostid", &hid32, sizeof(hid32));
kern/kern_jail.c- } else
kern/kern_jail.c:#endif
kern/kern_jail.c- error = vfs_setopt(opts, "host.hostid", &pr->pr_hostid,
netinet6/raw_ip6.c- /* Do not inject data into pcb. */
netinet6/raw_ip6.c- INP_RUNLOCK(last);
netinet6/raw_ip6.c- } else
netinet6/raw_ip6.c:#endif /* IPSEC */
netinet6/raw_ip6.c- if (last != NULL) {
netinet6/raw_ip6.c- if (last->inp_flags & INP_CONTROLOPTS ||
On the other hand there are many examples where indentation is used in
the way you prefer. I don't have any strong opinion about this so I
will do in the way you suggest.
--
Mikolaj Golub
More information about the freebsd-hackers
mailing list