X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fs390%2Fappldata%2Fappldata_os.c;h=99ddd3bf2fbaac6bb2e5ef49fbd43e7c16bac0f2;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=58ad2cf48eeec26c7b7b4871e953d2cf694f644a;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/arch/s390/appldata/appldata_os.c b/arch/s390/appldata/appldata_os.c index 58ad2cf48..99ddd3bf2 100644 --- a/arch/s390/appldata/appldata_os.c +++ b/arch/s390/appldata/appldata_os.c @@ -49,7 +49,7 @@ struct appldata_os_per_cpu { u32 per_cpu_softirq; /* ... spent in softirqs */ u32 per_cpu_iowait; /* ... spent while waiting for I/O */ // <-- New in 2.6 -}; +} __attribute__((packed)); struct appldata_os_data { u64 timestamp; @@ -75,7 +75,7 @@ struct appldata_os_data { /* per cpu data */ struct appldata_os_per_cpu os_cpu[0]; -}; +} __attribute__((packed)); static struct appldata_os_data *appldata_os_data; @@ -98,8 +98,7 @@ static inline void appldata_print_debug(struct appldata_os_data *os_data) LOAD_INT(a2), LOAD_FRAC(a2)); P_DEBUG("nr_cpus = %u\n", os_data->nr_cpus); - for (i = 0; i < NR_CPUS; i++) { - if (!cpu_online(i)) continue; + for (i = 0; i < os_data->nr_cpus; i++) { P_DEBUG("cpu%u : user = %u, nice = %u, system = %u, " "idle = %u, irq = %u, softirq = %u, iowait = %u\n", i, @@ -124,7 +123,7 @@ static inline void appldata_print_debug(struct appldata_os_data *os_data) */ static void appldata_get_os_data(void *data) { - int i; + int i, j; struct appldata_os_data *os_data; os_data = data; @@ -139,21 +138,23 @@ static void appldata_get_os_data(void *data) os_data->avenrun[1] = avenrun[1] + (FIXED_1/200); os_data->avenrun[2] = avenrun[2] + (FIXED_1/200); - for (i = 0; i < num_online_cpus(); i++) { - os_data->os_cpu[i].per_cpu_user = - kstat_cpu(i).cpustat.user; - os_data->os_cpu[i].per_cpu_nice = - kstat_cpu(i).cpustat.nice; - os_data->os_cpu[i].per_cpu_system = - kstat_cpu(i).cpustat.system; - os_data->os_cpu[i].per_cpu_idle = - kstat_cpu(i).cpustat.idle; - os_data->os_cpu[i].per_cpu_irq = - kstat_cpu(i).cpustat.irq; - os_data->os_cpu[i].per_cpu_softirq = - kstat_cpu(i).cpustat.softirq; - os_data->os_cpu[i].per_cpu_iowait = - kstat_cpu(i).cpustat.iowait; + j = 0; + for_each_online_cpu(i) { + os_data->os_cpu[j].per_cpu_user = + cputime_to_jiffies(kstat_cpu(i).cpustat.user); + os_data->os_cpu[j].per_cpu_nice = + cputime_to_jiffies(kstat_cpu(i).cpustat.nice); + os_data->os_cpu[j].per_cpu_system = + cputime_to_jiffies(kstat_cpu(i).cpustat.system); + os_data->os_cpu[j].per_cpu_idle = + cputime_to_jiffies(kstat_cpu(i).cpustat.idle); + os_data->os_cpu[j].per_cpu_irq = + cputime_to_jiffies(kstat_cpu(i).cpustat.irq); + os_data->os_cpu[j].per_cpu_softirq = + cputime_to_jiffies(kstat_cpu(i).cpustat.softirq); + os_data->os_cpu[j].per_cpu_iowait = + cputime_to_jiffies(kstat_cpu(i).cpustat.iowait); + j++; } os_data->timestamp = get_clock();