| [de18e330] | 1 | Submitted By: Joe Ciccone <jciccone@gmail.com> | 
|---|
|  | 2 | Date: 2011-01-30 | 
|---|
|  | 3 | Initial Package Version: 3.2.7 | 
|---|
|  | 4 | Origin: Fedora Git | 
|---|
|  | 5 | http://pkgs.fedoraproject.org/gitweb/?p=procps.git;a=blob_plain;f=procps-3.2.7-ps-cgroup.patch;h=b638c4f9a826040099f10e9282aad0d31ec5f03f;hb=HEAD | 
|---|
|  | 6 | http://pkgs.fedoraproject.org/gitweb/?p=procps.git;a=blob_plain;f=procps-3.2.8-ps-cgroup-suppress-root-group.patch;h=4b192c1fb4aa7684b7e57606713ca68690d77845;hb=HEAD | 
|---|
|  | 7 | Upstream Status: Unknown | 
|---|
|  | 8 | Description: Adds the ability for ps to output process(es) cgroups. | 
|---|
|  | 9 |  | 
|---|
|  | 10 | diff -Naur procps-3.2.8.orig/ps/output.c procps-3.2.8/ps/output.c | 
|---|
|  | 11 | --- procps-3.2.8.orig/ps/output.c       2009-05-10 15:24:50.000000000 -0400 | 
|---|
|  | 12 | +++ procps-3.2.8/ps/output.c    2011-01-30 12:58:30.530497002 -0500 | 
|---|
|  | 13 | @@ -1099,6 +1099,46 @@ | 
|---|
|  | 14 | return snprintf(outbuf, COLWID, "*"); | 
|---|
|  | 15 | } | 
|---|
|  | 16 |  | 
|---|
|  | 17 | +static int pr_cgroup(char *restrict const outbuf, const proc_t *restrict const pp){ | 
|---|
|  | 18 | +  char filename[48]; | 
|---|
|  | 19 | +  FILE *fd; | 
|---|
|  | 20 | +  int counter = 0, last_begin = 0, slash = 0; | 
|---|
|  | 21 | +  int c; | 
|---|
|  | 22 | +  int is_cgroup = 0; | 
|---|
|  | 23 | + | 
|---|
|  | 24 | +  outbuf[0]='\0'; | 
|---|
|  | 25 | +  snprintf(filename, sizeof filename, "/proc/%d/cgroup", pp->tgid); | 
|---|
|  | 26 | +  fd = fopen(filename, "r"); | 
|---|
|  | 27 | +  if (likely(fd == NULL)) goto fail; | 
|---|
|  | 28 | +  while (( (c = fgetc(fd)) != EOF) && (counter<665)) { | 
|---|
|  | 29 | +    if (is_cgroup == 0) { | 
|---|
|  | 30 | +      if (c == ':') { | 
|---|
|  | 31 | +        is_cgroup = 1; | 
|---|
|  | 32 | +        slash = 0; | 
|---|
|  | 33 | +        if (counter>0) | 
|---|
|  | 34 | +          outbuf[counter++]=';'; | 
|---|
|  | 35 | +      } | 
|---|
|  | 36 | +    }else | 
|---|
|  | 37 | +      if ((c == '\n') || (c == '\0')){ | 
|---|
|  | 38 | +        if (slash)  /* if the last char was a / this process is in the root cgroup which we should suppress */ | 
|---|
|  | 39 | +            counter = last_begin; | 
|---|
|  | 40 | +      else | 
|---|
|  | 41 | +            last_begin = counter; | 
|---|
|  | 42 | +        is_cgroup = 0; | 
|---|
|  | 43 | +      } else { | 
|---|
|  | 44 | +        slash = c == '/'; | 
|---|
|  | 45 | +        outbuf[counter++]=c; | 
|---|
|  | 46 | +  } | 
|---|
|  | 47 | +  } | 
|---|
|  | 48 | +  outbuf[counter]='\0'; | 
|---|
|  | 49 | +  close(fd); | 
|---|
|  | 50 | +  if (counter>0) | 
|---|
|  | 51 | +    return counter; | 
|---|
|  | 52 | +fail: | 
|---|
|  | 53 | +  outbuf[0] = '-'; | 
|---|
|  | 54 | +  outbuf[1] = '\0'; | 
|---|
|  | 55 | +  return 1; | 
|---|
|  | 56 | +} | 
|---|
|  | 57 |  | 
|---|
|  | 58 | /****************** FLASK & seLinux security stuff **********************/ | 
|---|
|  | 59 | // move the bulk of this to libproc sometime | 
|---|
|  | 60 | @@ -1293,6 +1333,7 @@ | 
|---|
|  | 61 | {"bsdtime",   "TIME",    pr_bsdtime,  sr_nop,     6,   0,    LNX, ET|RIGHT}, | 
|---|
|  | 62 | {"c",         "C",       pr_c,        sr_pcpu,    2,   0,    SUN, ET|RIGHT}, | 
|---|
|  | 63 | {"caught",    "CAUGHT",  pr_sigcatch, sr_nop,     9,   0,    BSD, TO|SIGNAL}, /*sigcatch*/ | 
|---|
|  | 64 | +{"cgroup",    "CGROUP",  pr_cgroup,   sr_nop,    35,   0,    LNX, PO|LEFT},  /* cgroups*/ | 
|---|
|  | 65 | {"class",     "CLS",     pr_class,    sr_sched,   3,   0,    XXX, TO|LEFT}, | 
|---|
|  | 66 | {"cls",       "CLS",     pr_class,    sr_sched,   3,   0,    HPU, TO|RIGHT}, /*says HPUX or RT*/ | 
|---|
|  | 67 | {"cmaj_flt",  "-",       pr_nop,      sr_cmaj_flt, 1,  0,    LNX, AN|RIGHT}, | 
|---|
|  | 68 | diff -Naur procps-3.2.8.orig/ps/ps.1 procps-3.2.8/ps/ps.1 | 
|---|
|  | 69 | --- procps-3.2.8.orig/ps/ps.1   2009-05-10 15:38:17.000000000 -0400 | 
|---|
|  | 70 | +++ procps-3.2.8/ps/ps.1        2011-01-30 12:58:08.382497001 -0500 | 
|---|
|  | 71 | @@ -904,6 +904,10 @@ | 
|---|
|  | 72 | displayed.  (alias\ \fBsig_catch\fR,\ \fBsigcatch\fR). | 
|---|
|  | 73 | T} | 
|---|
|  | 74 |  | 
|---|
|  | 75 | +cgroup CGROUP  T{ | 
|---|
|  | 76 | +display control groups to which the process belonges. | 
|---|
|  | 77 | +T} | 
|---|
|  | 78 | + | 
|---|
|  | 79 | class  CLS     T{ | 
|---|
|  | 80 | scheduling class of the process.  (alias\ \fBpolicy\fR,\ \fBcls\fR). | 
|---|
|  | 81 | Field's possible values are: | 
|---|