From: Lennert B. <bu...@gn...> - 2002-01-03 10:01:47
|
The current state needs fixing. This is a try at it, but I'm not really an aesthetical expert, so you might not agree with it. --- linux-2.4.17-3um-jeff/arch/um/kernel/um_arch.c Thu Jan 3 02:18:00 2002 +++ linux-2.4.17-3um/arch/um/kernel/um_arch.c Wed Jan 2 15:06:59 2002 @@ -45,45 +45,39 @@ return(0); } -/* - * get_cpuinfo - Get information on one CPU for use by procfs. - * - * Prints info on the next CPU into buffer. Beware, doesn't check for - * buffer overflow. Current implementation of procfs assumes that the - * resulting data is <= 1K. - * - * Args: - * buffer -- you guessed it, the data buffer - * cpu_np -- Input: next cpu to get (start at 0). Output: Updated. - * - * Returns number of bytes written to buffer. - */ - -/* Copied from the -ac tree prematurely: - unsigned *cpu_np - unsigned n; - / * No SMP at the moment, so just toggle 0/1 * / - n = *cpu_np; - *cpu_np = 1; - if (n != 0) { - return (0); - } -*/ static int show_cpuinfo(struct seq_file *m, void *v) { - seq_printf(m, "processor\t: user-mode\n"); - seq_printf(m, "bogomips\t: %lu.%02lu\n", - loops_per_jiffy/(500000/HZ), - (loops_per_jiffy/(5000/HZ)) % 100); - seq_printf(m, "host\t\t: %s\n", host_info); + int index; + + if (v == (void *)thread_saved_pc) { + seq_printf(m, "host\t\t: %s\n", host_info); + seq_printf(m, "bogomips\t: %lu.%02lu\n", + loops_per_jiffy/(500000/HZ), + (loops_per_jiffy/(5000/HZ)) % 100); + seq_printf(m, "\n"); + return 0; + } + + index = (struct cpuinfo_um *)v - cpu_data; + if (cpu_online_map & (1<<index)) { + seq_printf(m, "processor\t: %d\n", index); + seq_printf(m, "status\t\t: online\n"); + seq_printf(m, "\n"); + } return(0); } static void *c_start(struct seq_file *m, loff_t *pos) { - return *pos < NR_CPUS ? cpu_data + *pos : NULL; + if (*pos == 0) + return (void *)thread_saved_pc; + + if (*pos - 1 < NR_CPUS) + return &cpu_data[*pos - 1]; + + return NULL; } static void *c_next(struct seq_file *m, void *v, loff_t *pos) |