]>
Commit | Line | Data |
---|---|---|
d97c1442 | 1 | diff -Nru a/kernel/cpuset.c b/kernel/cpuset.c |
2 | --- a/kernel/cpuset.c Tue Oct 21 15:53:11 2003 | |
3 | +++ b/kernel/cpuset.c Tue Oct 21 15:53:11 2003 | |
4 | @@ -661,29 +661,33 @@ | |
5 | */ | |
6 | #ifdef CONFIG_CPUSETS_PROC | |
7 | ||
8 | +static struct cpuset *proc_cpusets_idx(loff_t n) | |
9 | +{ | |
10 | + struct cpuset *set; | |
11 | + | |
12 | + list_for_each_entry(set, &top_cpuset, list) { | |
13 | + if (n-- == 0) | |
14 | + return set; | |
15 | + } | |
16 | + return NULL; | |
17 | +} | |
18 | + | |
19 | static void *proc_cpusets_start(struct seq_file *m, loff_t *pos) | |
20 | { | |
21 | - loff_t n = *pos; | |
22 | - struct list_head *p; | |
23 | ||
24 | read_lock(&cpuset_lock); | |
25 | - if (!n) seq_puts(m, "cpusets info \n"); | |
26 | - | |
27 | - p = &top_cpuset.list; | |
28 | - while (n--) { | |
29 | - p = p->next; | |
30 | - if (p == &top_cpuset.list) | |
31 | - return NULL; | |
32 | - } | |
33 | - return list_entry(p, struct cpuset, list); | |
34 | + return (*pos == 0) ? SEQ_START_TOKEN : proc_cpusets_idx(*pos); | |
35 | } | |
36 | ||
37 | static void *proc_cpusets_next(struct seq_file *m, void *p, loff_t *pos) | |
38 | { | |
39 | - struct cpuset * cs = p; | |
40 | + struct cpuset * cs; | |
41 | ++*pos; | |
42 | - return cs->list.next == &top_cpuset.list ? NULL | |
43 | - : list_entry(cs->list.next, struct cpuset, list); | |
44 | + | |
45 | + cs = (p == SEQ_START_TOKEN) ? top_cpuset.list.next | |
46 | + : ((struct cpuset *)p)->list.next; | |
47 | + | |
48 | + return (cs == &top_cpuset.list) ? NULL : cs; | |
49 | } | |
50 | ||
51 | /* How many chars needed to print a long (as a mask) ? */ | |
52 | @@ -713,25 +717,28 @@ | |
53 | #else | |
54 | char maskbuf[CFL + 1]; | |
55 | #endif | |
56 | + if (p == SEQ_START_TOKEN) | |
57 | + seq_puts(m, "cpusets info \n"); | |
58 | + else { | |
59 | + seq_printf(m, "cpuset %d {\n" | |
60 | + "\tparent = %d\n" | |
61 | + "\tflags = %d\n" | |
62 | + "\tcount = %d\n" | |
63 | + "\thba = %d\n" | |
64 | + "\tuid & suid = %d & %d\n", | |
65 | + cs->id, cs->parent ? cs->parent->id : -1, | |
66 | + cs->flags, atomic_read(&cs->count), cs->has_been_attached, | |
67 | + cs->uid, cs->suid); | |
68 | + | |
69 | + sprint_mask(maskbuf, cs->cpus_allowed); | |
70 | + seq_printf(m,"\tcpus_allowed = %s\n", maskbuf); | |
71 | + sprint_mask(maskbuf, cs->cpus_reserved); | |
72 | + seq_printf(m,"\tcpus_reserved = %s\n", maskbuf); | |
73 | + sprint_mask(maskbuf, cs->cpus_strictly_reserved); | |
74 | + seq_printf(m,"\tcpus_strictly_reserved = %s\n", maskbuf); | |
75 | ||
76 | - seq_printf(m, "cpuset %d {\n" | |
77 | - "\tparent = %d\n" | |
78 | - "\tflags = %d\n" | |
79 | - "\tcount = %d\n" | |
80 | - "\thba = %d\n" | |
81 | - "\tuid & suid = %d & %d\n", | |
82 | - cs->id, cs->parent ? cs->parent->id : -1, | |
83 | - cs->flags, atomic_read(&cs->count), cs->has_been_attached, | |
84 | - cs->uid, cs->suid); | |
85 | - | |
86 | - sprint_mask(maskbuf, cs->cpus_allowed); | |
87 | - seq_printf(m,"\tcpus_allowed = %s\n", maskbuf); | |
88 | - sprint_mask(maskbuf, cs->cpus_reserved); | |
89 | - seq_printf(m,"\tcpus_reserved = %s\n", maskbuf); | |
90 | - sprint_mask(maskbuf, cs->cpus_strictly_reserved); | |
91 | - seq_printf(m,"\tcpus_strictly_reserved = %s\n", maskbuf); | |
92 | - | |
93 | - seq_printf(m, "}\n\n"); | |
94 | + seq_printf(m, "}\n\n"); | |
95 | + } | |
96 | ||
97 | return 0; | |
98 | } |