[lxc-devel] [PATCH] /proc/stat in lxcfs

Christian Brauner christianvanbrauner at gmail.com
Mon Feb 16 19:57:48 UTC 2015


> Quoting Christian Brauner (christianvanbrauner at gmail.com):
> > 
> > > > +        else if (sscanf(cpu_char, "%d", &cpu) != 1) {
> > > 
> > > This is an unorthodox (for lxc) coding style.  Could you explain
> > > exactly what you're doing here?  I would expect just:
> > > 
> > >     if (sscanf(cpu_char, "%d", &cpu) != 1))
> > >         continue;
> > >     if (!cpu_in_cpuset(cpu, cpuset))
> > >         continue;
> > 
> > Your way is the better way to do it. I adjusted and squased the PR and
> > post the patch again here as well:
> > 
> > commit 21c3c7ace34eaf5f19074e332222d050896b5cc3
> > Author: Christian Brauner <christianvanbrauner at gmail.com>
> > Date:   Sun Feb 15 11:31:31 2015 +0100
> > 
> >     Show cpu-average in /proc/stat and start cup numbering at 0
> 
> Note, your previous patch had a signed-off-by, but this one does not.
> I'll let Stéphane decide whether that's good enough :)
> 
> Thanks, Christian.
> 
> Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>

Well, then I'll do it again :)

commit 21c3c7ace34eaf5f19074e332222d050896b5cc3
Signed-off-by: Christian Brauner <christianvanbrauner at gmail.com>
Date:   Sun Feb 15 11:31:31 2015 +0100

    Show cpu-average in /proc/stat and start cup numbering at 0

diff --git a/lxcfs.c b/lxcfs.c
index d6fb101..d358829 100644
--- a/lxcfs.c
+++ b/lxcfs.c
@@ -1642,7 +1642,7 @@ static int proc_stat_read(char *buf, size_t size, off_t offset,
    nih_local char *cpuset = NULL;
    char *line = NULL;
    size_t linelen = 0, total_len = 0;
-   int curcpu = 0;
+   int curcpu = -1; /* cpu numbering starts at 0 */
    FILE *f;
 
    if (offset)
@@ -1662,16 +1662,21 @@ static int proc_stat_read(char *buf, size_t size, off_t offset,
    while (getline(&line, &linelen, f) != -1) {
        size_t l;
        int cpu;
+        char cpu_char[10]; /* That's a lot of cores */
        char *c;
 
-       if (sscanf(line, "cpu%d", &cpu) != 1) {
-           /* not a ^cpu line, just print it */
+       if (sscanf(line, "cpu%9[^ ]", cpu_char) != 1) {
+           /* not a ^cpuN line containing a number N, just print it */
            l = snprintf(buf, size, "%s", line);
            buf += l;
            size -= l;
            total_len += l;
            continue;
        }
+
+        if (sscanf(cpu_char, "%d", &cpu) != 1)
+                continue;
+
        if (!cpu_in_cpuset(cpu, cpuset))
            continue;
        curcpu ++;


Christian

> 
> > 
> > diff --git a/lxcfs.c b/lxcfs.c
> > index d6fb101..d358829 100644
> > --- a/lxcfs.c
> > +++ b/lxcfs.c
> > @@ -1642,7 +1642,7 @@ static int proc_stat_read(char *buf, size_t size, off_t offset,
> >     nih_local char *cpuset = NULL;
> >     char *line = NULL;
> >     size_t linelen = 0, total_len = 0;
> > -   int curcpu = 0;
> > +   int curcpu = -1; /* cpu numbering starts at 0 */
> >     FILE *f;
> >  
> >     if (offset)
> > @@ -1662,16 +1662,21 @@ static int proc_stat_read(char *buf, size_t size, off_t offset,
> >     while (getline(&line, &linelen, f) != -1) {
> >         size_t l;
> >         int cpu;
> > +        char cpu_char[10]; /* That's a lot of cores */
> >         char *c;
> >  
> > -       if (sscanf(line, "cpu%d", &cpu) != 1) {
> > -           /* not a ^cpu line, just print it */
> > +       if (sscanf(line, "cpu%9[^ ]", cpu_char) != 1) {
> > +           /* not a ^cpuN line containing a number N, just print it */
> >             l = snprintf(buf, size, "%s", line);
> >             buf += l;
> >             size -= l;
> >             total_len += l;
> >             continue;
> >         }
> > +
> > +        if (sscanf(cpu_char, "%d", &cpu) != 1)
> > +                continue;
> > +
> >         if (!cpu_in_cpuset(cpu, cpuset))
> >             continue;
> >         curcpu ++;
> > 
> > Christian
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20150216/2d77c7ff/attachment.sig>


More information about the lxc-devel mailing list