diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-23 12:04:37 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-23 12:04:37 -0700 |
commit | 88ed86fee6651033de9b7038dac7869a9f19775a (patch) | |
tree | 38b638d2e7cba110ec271275738f221feb7e0a37 /arch | |
parent | 3856d30ded1fe43c6657927ebad402d25cd128f4 (diff) | |
parent | 59c7572e82d69483a66eaa67b46548baeb69ecf4 (diff) | |
download | linux-88ed86fee6651033de9b7038dac7869a9f19775a.tar.bz2 |
Merge branch 'proc' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc
* 'proc' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc: (35 commits)
proc: remove fs/proc/proc_misc.c
proc: move /proc/vmcore creation to fs/proc/vmcore.c
proc: move pagecount stuff to fs/proc/page.c
proc: move all /proc/kcore stuff to fs/proc/kcore.c
proc: move /proc/schedstat boilerplate to kernel/sched_stats.h
proc: move /proc/modules boilerplate to kernel/module.c
proc: move /proc/diskstats boilerplate to block/genhd.c
proc: move /proc/zoneinfo boilerplate to mm/vmstat.c
proc: move /proc/vmstat boilerplate to mm/vmstat.c
proc: move /proc/pagetypeinfo boilerplate to mm/vmstat.c
proc: move /proc/buddyinfo boilerplate to mm/vmstat.c
proc: move /proc/vmallocinfo to mm/vmalloc.c
proc: move /proc/slabinfo boilerplate to mm/slub.c, mm/slab.c
proc: move /proc/slab_allocators boilerplate to mm/slab.c
proc: move /proc/interrupts boilerplate code to fs/proc/interrupts.c
proc: move /proc/stat to fs/proc/stat.c
proc: move rest of /proc/partitions code to block/genhd.c
proc: move /proc/cpuinfo code to fs/proc/cpuinfo.c
proc: move /proc/devices code to fs/proc/devices.c
proc: move rest of /proc/locks to fs/locks.c
...
Diffstat (limited to 'arch')
-rw-r--r-- | arch/m68k/amiga/config.c | 21 | ||||
-rw-r--r-- | arch/m68k/atari/config.c | 15 | ||||
-rw-r--r-- | arch/m68k/atari/stram.c | 28 | ||||
-rw-r--r-- | arch/m68k/bvme6000/config.c | 11 | ||||
-rw-r--r-- | arch/m68k/kernel/setup.c | 35 | ||||
-rw-r--r-- | arch/m68k/mvme147/config.c | 10 | ||||
-rw-r--r-- | arch/m68k/mvme16x/config.c | 15 | ||||
-rw-r--r-- | arch/m68k/q40/config.c | 10 | ||||
-rw-r--r-- | arch/m68k/sun3/config.c | 12 | ||||
-rw-r--r-- | arch/m68k/sun3x/config.c | 12 | ||||
-rw-r--r-- | arch/x86/include/asm/pgtable.h | 3 | ||||
-rw-r--r-- | arch/x86/mm/pageattr.c | 11 |
12 files changed, 84 insertions, 99 deletions
diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c index 0a3f9e8ebde0..ab9862c3a136 100644 --- a/arch/m68k/amiga/config.c +++ b/arch/m68k/amiga/config.c @@ -15,6 +15,7 @@ #include <linux/types.h> #include <linux/kernel.h> #include <linux/mm.h> +#include <linux/seq_file.h> #include <linux/tty.h> #include <linux/console.h> #include <linux/rtc.h> @@ -93,7 +94,7 @@ static char amiga_model_name[13] = "Amiga "; static void amiga_sched_init(irq_handler_t handler); static void amiga_get_model(char *model); -static int amiga_get_hardware_list(char *buffer); +static void amiga_get_hardware_list(struct seq_file *m); /* amiga specific timer functions */ static unsigned long amiga_gettimeoffset(void); static int a3000_hwclk(int, struct rtc_time *); @@ -911,13 +912,11 @@ static void amiga_get_model(char *model) } -static int amiga_get_hardware_list(char *buffer) +static void amiga_get_hardware_list(struct seq_file *m) { - int len = 0; - if (AMIGAHW_PRESENT(CHIP_RAM)) - len += sprintf(buffer+len, "Chip RAM:\t%ldK\n", amiga_chip_size>>10); - len += sprintf(buffer+len, "PS Freq:\t%dHz\nEClock Freq:\t%ldHz\n", + seq_printf(m, "Chip RAM:\t%ldK\n", amiga_chip_size>>10); + seq_printf(m, "PS Freq:\t%dHz\nEClock Freq:\t%ldHz\n", amiga_psfreq, amiga_eclock); if (AMIGAHW_PRESENT(AMI_VIDEO)) { char *type; @@ -935,14 +934,14 @@ static int amiga_get_hardware_list(char *buffer) type = "Old or Unknown"; break; } - len += sprintf(buffer+len, "Graphics:\t%s\n", type); + seq_printf(m, "Graphics:\t%s\n", type); } #define AMIGAHW_ANNOUNCE(name, str) \ if (AMIGAHW_PRESENT(name)) \ - len += sprintf (buffer+len, "\t%s\n", str) + seq_printf (m, "\t%s\n", str) - len += sprintf (buffer + len, "Detected hardware:\n"); + seq_printf (m, "Detected hardware:\n"); AMIGAHW_ANNOUNCE(AMI_VIDEO, "Amiga Video"); AMIGAHW_ANNOUNCE(AMI_BLITTER, "Blitter"); @@ -975,15 +974,13 @@ static int amiga_get_hardware_list(char *buffer) AMIGAHW_ANNOUNCE(PCMCIA, "PCMCIA Slot"); #ifdef CONFIG_ZORRO if (AMIGAHW_PRESENT(ZORRO)) - len += sprintf(buffer+len, "\tZorro II%s AutoConfig: %d Expansion " + seq_printf(m, "\tZorro II%s AutoConfig: %d Expansion " "Device%s\n", AMIGAHW_PRESENT(ZORRO3) ? "I" : "", zorro_num_autocon, zorro_num_autocon == 1 ? "" : "s"); #endif /* CONFIG_ZORRO */ #undef AMIGAHW_ANNOUNCE - - return len; } /* diff --git a/arch/m68k/atari/config.c b/arch/m68k/atari/config.c index af031855f796..49c28cdbea5c 100644 --- a/arch/m68k/atari/config.c +++ b/arch/m68k/atari/config.c @@ -26,6 +26,7 @@ #include <linux/types.h> #include <linux/mm.h> +#include <linux/seq_file.h> #include <linux/console.h> #include <linux/init.h> #include <linux/delay.h> @@ -63,7 +64,7 @@ int atari_rtc_year_offset; /* local function prototypes */ static void atari_reset(void); static void atari_get_model(char *model); -static int atari_get_hardware_list(char *buffer); +static void atari_get_hardware_list(struct seq_file *m); /* atari specific irq functions */ extern void atari_init_IRQ (void); @@ -611,21 +612,21 @@ static void atari_get_model(char *model) } -static int atari_get_hardware_list(char *buffer) +static void atari_get_hardware_list(struct seq_file *m) { - int len = 0, i; + int i; for (i = 0; i < m68k_num_memory; i++) - len += sprintf(buffer+len, "\t%3ld MB at 0x%08lx (%s)\n", + seq_printf(m, "\t%3ld MB at 0x%08lx (%s)\n", m68k_memory[i].size >> 20, m68k_memory[i].addr, (m68k_memory[i].addr & 0xff000000 ? "alternate RAM" : "ST-RAM")); #define ATARIHW_ANNOUNCE(name, str) \ if (ATARIHW_PRESENT(name)) \ - len += sprintf(buffer + len, "\t%s\n", str) + seq_printf(m, "\t%s\n", str) - len += sprintf(buffer + len, "Detected hardware:\n"); + seq_printf(m, "Detected hardware:\n"); ATARIHW_ANNOUNCE(STND_SHIFTER, "ST Shifter"); ATARIHW_ANNOUNCE(EXTD_SHIFTER, "STe Shifter"); ATARIHW_ANNOUNCE(TT_SHIFTER, "TT Shifter"); @@ -654,6 +655,4 @@ static int atari_get_hardware_list(char *buffer) ATARIHW_ANNOUNCE(BLITTER, "Blitter"); ATARIHW_ANNOUNCE(VME, "VME Bus"); ATARIHW_ANNOUNCE(DSP56K, "DSP56001 processor"); - - return len; } diff --git a/arch/m68k/atari/stram.c b/arch/m68k/atari/stram.c index 04c69ffbea71..6ec3b7f33779 100644 --- a/arch/m68k/atari/stram.c +++ b/arch/m68k/atari/stram.c @@ -42,6 +42,7 @@ /* abbrev for the && above... */ #define DO_PROC #include <linux/proc_fs.h> +#include <linux/seq_file.h> #endif /* @@ -323,19 +324,16 @@ static int remove_region( BLOCK *block ) #ifdef DO_PROC -#define PRINT_PROC(fmt,args...) len += sprintf( buf+len, fmt, ##args ) +#define PRINT_PROC(fmt,args...) seq_printf( m, fmt, ##args ) -int get_stram_list( char *buf ) +static int stram_proc_show(struct seq_file *m, void *v) { - int len = 0; BLOCK *p; PRINT_PROC("Total ST-RAM: %8u kB\n", (stram_end - stram_start) >> 10); PRINT_PROC( "Allocated regions:\n" ); for( p = alloc_list; p; p = p->next ) { - if (len + 50 >= PAGE_SIZE) - break; PRINT_PROC("0x%08lx-0x%08lx: %s (", virt_to_phys(p->start), virt_to_phys(p->start+p->size-1), @@ -346,9 +344,27 @@ int get_stram_list( char *buf ) PRINT_PROC( "??)\n" ); } - return( len ); + return 0; +} + +static int stram_proc_open(struct inode *inode, struct file *file) +{ + return single_open(file, stram_proc_show, NULL); } +static const struct file_operations stram_proc_fops = { + .open = stram_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int __init proc_stram_init(void) +{ + proc_create("stram", 0, NULL, &stram_proc_fops); + return 0; +} +module_init(proc_stram_init); #endif diff --git a/arch/m68k/bvme6000/config.c b/arch/m68k/bvme6000/config.c index 65c9204ab9ac..c072595928c0 100644 --- a/arch/m68k/bvme6000/config.c +++ b/arch/m68k/bvme6000/config.c @@ -38,7 +38,6 @@ #include <asm/bvme6000hw.h> static void bvme6000_get_model(char *model); -static int bvme6000_get_hardware_list(char *buffer); extern void bvme6000_sched_init(irq_handler_t handler); extern unsigned long bvme6000_gettimeoffset (void); extern int bvme6000_hwclk (int, struct rtc_time *); @@ -82,15 +81,6 @@ static void bvme6000_get_model(char *model) sprintf(model, "BVME%d000", m68k_cputype == CPU_68060 ? 6 : 4); } - -/* No hardware options on BVME6000? */ - -static int bvme6000_get_hardware_list(char *buffer) -{ - *buffer = '\0'; - return 0; -} - /* * This function is called during kernel startup to initialize * the bvme6000 IRQ handling routines. @@ -127,7 +117,6 @@ void __init config_bvme6000(void) mach_set_clock_mmss = bvme6000_set_clock_mmss; mach_reset = bvme6000_reset; mach_get_model = bvme6000_get_model; - mach_get_hardware_list = bvme6000_get_hardware_list; printk ("Board is %sconfigured as a System Controller\n", *config_reg_ptr & BVME_CONFIG_SW1 ? "" : "not "); diff --git a/arch/m68k/kernel/setup.c b/arch/m68k/kernel/setup.c index ea1e44da19b9..4d97bd2bd573 100644 --- a/arch/m68k/kernel/setup.c +++ b/arch/m68k/kernel/setup.c @@ -20,6 +20,7 @@ #include <linux/string.h> #include <linux/init.h> #include <linux/bootmem.h> +#include <linux/proc_fs.h> #include <linux/seq_file.h> #include <linux/module.h> #include <linux/initrd.h> @@ -80,7 +81,7 @@ void (*mach_sched_init) (irq_handler_t handler) __initdata = NULL; /* machine dependent irq functions */ void (*mach_init_IRQ) (void) __initdata = NULL; void (*mach_get_model) (char *model); -int (*mach_get_hardware_list) (char *buffer); +void (*mach_get_hardware_list) (struct seq_file *m); /* machine dependent timer functions */ unsigned long (*mach_gettimeoffset) (void); int (*mach_hwclk) (int, struct rtc_time*); @@ -467,9 +468,9 @@ const struct seq_operations cpuinfo_op = { .show = show_cpuinfo, }; -int get_hardware_list(char *buffer) +#ifdef CONFIG_PROC_HARDWARE +static int hardware_proc_show(struct seq_file *m, void *v) { - int len = 0; char model[80]; unsigned long mem; int i; @@ -479,17 +480,37 @@ int get_hardware_list(char *buffer) else strcpy(model, "Unknown m68k"); - len += sprintf(buffer + len, "Model:\t\t%s\n", model); + seq_printf(m, "Model:\t\t%s\n", model); for (mem = 0, i = 0; i < m68k_num_memory; i++) mem += m68k_memory[i].size; - len += sprintf(buffer + len, "System Memory:\t%ldK\n", mem >> 10); + seq_printf(m, "System Memory:\t%ldK\n", mem >> 10); if (mach_get_hardware_list) - len += mach_get_hardware_list(buffer + len); + mach_get_hardware_list(m); - return len; + return 0; +} + +static int hardware_proc_open(struct inode *inode, struct file *file) +{ + return single_open(file, hardware_proc_show, NULL); } +static const struct file_operations hardware_proc_fops = { + .open = hardware_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int __init proc_hardware_init(void) +{ + proc_create("hardware", 0, NULL, &hardware_proc_fops); + return 0; +} +module_init(proc_hardware_init); +#endif + void check_bugs(void) { #ifndef CONFIG_M68KFPU_EMU diff --git a/arch/m68k/mvme147/config.c b/arch/m68k/mvme147/config.c index 92fe50714112..43cdf476ffab 100644 --- a/arch/m68k/mvme147/config.c +++ b/arch/m68k/mvme147/config.c @@ -37,7 +37,6 @@ static void mvme147_get_model(char *model); -static int mvme147_get_hardware_list(char *buffer); extern void mvme147_sched_init(irq_handler_t handler); extern unsigned long mvme147_gettimeoffset (void); extern int mvme147_hwclk (int, struct rtc_time *); @@ -76,14 +75,6 @@ static void mvme147_get_model(char *model) sprintf(model, "Motorola MVME147"); } - -static int mvme147_get_hardware_list(char *buffer) -{ - *buffer = '\0'; - - return 0; -} - /* * This function is called during kernel startup to initialize * the mvme147 IRQ handling routines. @@ -104,7 +95,6 @@ void __init config_mvme147(void) mach_set_clock_mmss = mvme147_set_clock_mmss; mach_reset = mvme147_reset; mach_get_model = mvme147_get_model; - mach_get_hardware_list = mvme147_get_hardware_list; /* Board type is only set by newer versions of vmelilo/tftplilo */ if (!vme_brdtype) diff --git a/arch/m68k/mvme16x/config.c b/arch/m68k/mvme16x/config.c index 24cbc3030454..1521826fc3c7 100644 --- a/arch/m68k/mvme16x/config.c +++ b/arch/m68k/mvme16x/config.c @@ -17,6 +17,7 @@ #include <linux/types.h> #include <linux/kernel.h> #include <linux/mm.h> +#include <linux/seq_file.h> #include <linux/tty.h> #include <linux/console.h> #include <linux/linkage.h> @@ -42,7 +43,6 @@ extern t_bdid mvme_bdid; static MK48T08ptr_t volatile rtc = (MK48T08ptr_t)MVME_RTC_BASE; static void mvme16x_get_model(char *model); -static int mvme16x_get_hardware_list(char *buffer); extern void mvme16x_sched_init(irq_handler_t handler); extern unsigned long mvme16x_gettimeoffset (void); extern int mvme16x_hwclk (int, struct rtc_time *); @@ -93,26 +93,21 @@ static void mvme16x_get_model(char *model) } -static int mvme16x_get_hardware_list(char *buffer) +static void mvme16x_get_hardware_list(struct seq_file *m) { p_bdid p = &mvme_bdid; - int len = 0; if (p->brdno == 0x0162 || p->brdno == 0x0172) { unsigned char rev = *(unsigned char *)MVME162_VERSION_REG; - len += sprintf (buffer+len, "VMEchip2 %spresent\n", + seq_printf (m, "VMEchip2 %spresent\n", rev & MVME16x_CONFIG_NO_VMECHIP2 ? "NOT " : ""); - len += sprintf (buffer+len, "SCSI interface %spresent\n", + seq_printf (m, "SCSI interface %spresent\n", rev & MVME16x_CONFIG_NO_SCSICHIP ? "NOT " : ""); - len += sprintf (buffer+len, "Ethernet i/f %spresent\n", + seq_printf (m, "Ethernet i/f %spresent\n", rev & MVME16x_CONFIG_NO_ETHERNET ? "NOT " : ""); } - else - *buffer = '\0'; - - return (len); } /* diff --git a/arch/m68k/q40/config.c b/arch/m68k/q40/config.c index 9c7eefa3f98a..7110546e3c00 100644 --- a/arch/m68k/q40/config.c +++ b/arch/m68k/q40/config.c @@ -39,7 +39,6 @@ extern irqreturn_t q40_process_int(int level, struct pt_regs *regs); extern void q40_init_IRQ(void); static void q40_get_model(char *model); -static int q40_get_hardware_list(char *buffer); extern void q40_sched_init(irq_handler_t handler); static unsigned long q40_gettimeoffset(void); @@ -153,14 +152,6 @@ static void q40_get_model(char *model) sprintf(model, "Q40"); } -/* No hardware options on Q40? */ - -static int q40_get_hardware_list(char *buffer) -{ - *buffer = '\0'; - return 0; -} - static unsigned int serports[] = { 0x3f8,0x2f8,0x3e8,0x2e8,0 @@ -191,7 +182,6 @@ void __init config_q40(void) mach_reset = q40_reset; mach_get_model = q40_get_model; - mach_get_hardware_list = q40_get_hardware_list; #if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE) mach_beep = q40_mksound; diff --git a/arch/m68k/sun3/config.c b/arch/m68k/sun3/config.c index 732087d0735c..8dfaa201342e 100644 --- a/arch/m68k/sun3/config.c +++ b/arch/m68k/sun3/config.c @@ -11,6 +11,7 @@ #include <linux/types.h> #include <linux/kernel.h> #include <linux/mm.h> +#include <linux/seq_file.h> #include <linux/tty.h> #include <linux/console.h> #include <linux/init.h> @@ -46,16 +47,9 @@ extern volatile unsigned char* sun3_intreg; extern unsigned long availmem; unsigned long num_pages; -static int sun3_get_hardware_list(char *buffer) +static void sun3_get_hardware_list(struct seq_file *m) { - - int len = 0; - - len += sprintf(buffer + len, "PROM Revision:\t%s\n", - romvec->pv_monid); - - return len; - + seq_printf(m, "PROM Revision:\t%s\n", romvec->pv_monid); } void __init sun3_init(void) diff --git a/arch/m68k/sun3x/config.c b/arch/m68k/sun3x/config.c index 987891783a47..2b1ca2db070f 100644 --- a/arch/m68k/sun3x/config.c +++ b/arch/m68k/sun3x/config.c @@ -8,6 +8,7 @@ #include <linux/types.h> #include <linux/mm.h> +#include <linux/seq_file.h> #include <linux/console.h> #include <linux/init.h> @@ -31,16 +32,9 @@ void sun3_leds(unsigned int i) } -static int sun3x_get_hardware_list(char *buffer) +static void sun3x_get_hardware_list(struct seq_file *m) { - - int len = 0; - - len += sprintf(buffer + len, "PROM Revision:\t%s\n", - romvec->pv_monid); - - return len; - + seq_printf(m, "PROM Revision:\t%s\n", romvec->pv_monid); } /* diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index fb7d1e9985b5..c012f3b11671 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -348,7 +348,8 @@ static inline void native_pagetable_setup_start(pgd_t *base) {} static inline void native_pagetable_setup_done(pgd_t *base) {} #endif -extern int arch_report_meminfo(char *page); +struct seq_file; +extern void arch_report_meminfo(struct seq_file *m); #ifdef CONFIG_PARAVIRT #include <asm/paravirt.h> diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index 407d8784f669..f1dc1b75d166 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c @@ -65,23 +65,22 @@ static void split_page_count(int level) direct_pages_count[level - 1] += PTRS_PER_PTE; } -int arch_report_meminfo(char *page) +void arch_report_meminfo(struct seq_file *m) { - int n = sprintf(page, "DirectMap4k: %8lu kB\n", + seq_printf(m, "DirectMap4k: %8lu kB\n", direct_pages_count[PG_LEVEL_4K] << 2); #if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE) - n += sprintf(page + n, "DirectMap2M: %8lu kB\n", + seq_printf(m, "DirectMap2M: %8lu kB\n", direct_pages_count[PG_LEVEL_2M] << 11); #else - n += sprintf(page + n, "DirectMap4M: %8lu kB\n", + seq_printf(m, "DirectMap4M: %8lu kB\n", direct_pages_count[PG_LEVEL_2M] << 12); #endif #ifdef CONFIG_X86_64 if (direct_gbpages) - n += sprintf(page + n, "DirectMap1G: %8lu kB\n", + seq_printf(m, "DirectMap1G: %8lu kB\n", direct_pages_count[PG_LEVEL_1G] << 20); #endif - return n; } #else static inline void split_page_count(int level) { } |