1 |
--- procps-3.2.8/ps/output.c.cgroups 2009-05-10 23:24:50.000000000 +0400 |
2 |
+++ procps-3.2.8/ps/output.c 2010-09-18 11:41:40.000000000 +0400 |
3 |
@@ -1099,6 +1099,39 @@ static int pr_sgi_p(char *restrict const |
4 |
return snprintf(outbuf, COLWID, "*"); |
5 |
} |
6 |
|
7 |
+static int pr_cgroup(char *restrict const outbuf, const proc_t *restrict const pp){ |
8 |
+ char filename[48]; |
9 |
+ FILE *fd; |
10 |
+ int counter = 0; |
11 |
+ int c; |
12 |
+ int is_cgroup = 0; |
13 |
+ |
14 |
+ outbuf[0]='\0'; |
15 |
+ snprintf(filename, sizeof filename, "/proc/%d/cgroup", pp->tgid); |
16 |
+ fd = fopen(filename, "r"); |
17 |
+ if (likely(fd == NULL)) goto fail; |
18 |
+ while (( (c = fgetc(fd)) != EOF) && (counter<665)) { |
19 |
+ if (is_cgroup == 0) { |
20 |
+ if (c == ':') { |
21 |
+ is_cgroup = 1; |
22 |
+ if (counter>0) |
23 |
+ outbuf[counter++]=';'; |
24 |
+ } |
25 |
+ }else |
26 |
+ if ((c == '\n') || (c == '\0')) |
27 |
+ is_cgroup = 0; |
28 |
+ else |
29 |
+ outbuf[counter++]=c; |
30 |
+ } |
31 |
+ outbuf[counter]='\0'; |
32 |
+ close(fd); |
33 |
+ if (counter>0) |
34 |
+ return counter; |
35 |
+fail: |
36 |
+ outbuf[0] = '-'; |
37 |
+ outbuf[1] = '\0'; |
38 |
+ return 1; |
39 |
+} |
40 |
|
41 |
/****************** FLASK & seLinux security stuff **********************/ |
42 |
// move the bulk of this to libproc sometime |
43 |
@@ -1293,6 +1326,7 @@ static const format_struct format_array[ |
44 |
{"bsdtime", "TIME", pr_bsdtime, sr_nop, 6, 0, LNX, ET|RIGHT}, |
45 |
{"c", "C", pr_c, sr_pcpu, 2, 0, SUN, ET|RIGHT}, |
46 |
{"caught", "CAUGHT", pr_sigcatch, sr_nop, 9, 0, BSD, TO|SIGNAL}, /*sigcatch*/ |
47 |
+{"cgroup", "CGROUP", pr_cgroup, sr_nop, 35, 0, LNX, PO|LEFT}, /* cgroups*/ |
48 |
{"class", "CLS", pr_class, sr_sched, 3, 0, XXX, TO|LEFT}, |
49 |
{"cls", "CLS", pr_class, sr_sched, 3, 0, HPU, TO|RIGHT}, /*says HPUX or RT*/ |
50 |
{"cmaj_flt", "-", pr_nop, sr_cmaj_flt, 1, 0, LNX, AN|RIGHT}, |
51 |
--- procps-3.2.8/ps/ps.1.cgroups 2009-05-10 23:38:17.000000000 +0400 |
52 |
+++ procps-3.2.8/ps/ps.1 2010-09-18 11:42:19.000000000 +0400 |
53 |
@@ -904,6 +904,10 @@ width of the field, a 32 or 64 bits mask |
54 |
displayed. (alias\ \fBsig_catch\fR,\ \fBsigcatch\fR). |
55 |
T} |
56 |
|
57 |
+cgroup CGROUP T{ |
58 |
+display control groups to which the process belonges. |
59 |
+t} |
60 |
+ |
61 |
class CLS T{ |
62 |
scheduling class of the process. (alias\ \fBpolicy\fR,\ \fBcls\fR). |
63 |
Field's possible values are: |