Re: [PATCH] Documentation: fix getdelays.c example -l option and segv
From: Michael Neuling
Date: Wed Aug 15 2007 - 04:14:33 EST
In message <46C2A505.7040008@xxxxxxxxxxxxxxxxxx> you wrote:
> Michael Neuling wrote:
> > Fix a couple of minor issues with the getdelays.c example code.
> >
> > Signed-off-by: Michael Neuling <mikey@xxxxxxxxxxx>
> > ---
> > Documentation/accounting/getdelays.c | 21 +++++++++++----------
> > 1 file changed, 11 insertions(+), 10 deletions(-)
> >
> > Index: linux-2.6-ozlabs/Documentation/accounting/getdelays.c
> > ===================================================================
> > --- linux-2.6-ozlabs.orig/Documentation/accounting/getdelays.c
> > +++ linux-2.6-ozlabs/Documentation/accounting/getdelays.c
> > @@ -196,7 +196,7 @@ void print_delayacct(struct taskstats *t
> > "IO %15s%15s\n"
> > " %15llu%15llu\n"
> > "MEM %15s%15s\n"
> > - " %15llu%15llu\n"
> > + " %15llu%15llu\n",
>
> This change looks good!
Looks like it was randomly removed in b663a79c191508f27cd885224b592a878c0ba0f6.
>
> > "count", "real total", "virtual total", "delay total",
> > t->cpu_count, t->cpu_run_real_total, t->cpu_run_virtual_total,
> > t->cpu_delay_total,
> > @@ -335,17 +335,17 @@ int main(int argc, char *argv[])
> > }
> > }
> >
> > - if (tid) {
> > - rc = send_cmd(nl_sd, id, mypid, TASKSTATS_CMD_GET,
> > - cmd_type, &tid, sizeof(__u32));
> > - PRINTF("Sent pid/tgid, retval %d\n", rc);
> > - if (rc < 0) {
> > - fprintf(stderr, "error sending tid/tgid cmd\n");
> > - goto done;
> > + do {
> > + if (tid) {
> > + rc = send_cmd(nl_sd, id, mypid, TASKSTATS_CMD_GET,
> > + cmd_type, &tid, sizeof(__u32));
> > + PRINTF("Sent pid/tgid, retval %d\n", rc);
> > + if (rc < 0) {
> > + fprintf(stderr, "error sending tid/tgid cmd\n")
;
> > + goto done;
> > + }
> > }
> > - }
> >
> > - do {
> > int i;
> >
> > rep_len = recv(nl_sd, &msg, sizeof(msg), 0);
> > @@ -430,6 +430,7 @@ int main(int argc, char *argv[])
> > }
> > na = (struct nlattr *) (GENLMSG_DATA(&msg) + len);
> > }
> > + sleep(2);
>
> Is this really required? a sleep() in the code. Why do we do multiple
> send_cmd()'s in the do loop? I'll test and get back.
I needed to send another command to receive more data. Without the per
loop send_cmd, I never got any more stats.
Should we receive more data without the additional send_cmd? I've been
running with:
./getdelays -d -p 1 -l
Mikey
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/