proc.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * This file is subject to the terms and conditions of the GNU General Public
  3.  * License.  See the file "COPYING" in the main directory of this archive
  4.  * for more details.
  5.  *
  6.  * Copyright (C) 1995, 1996, 1999, 2001 Ralf Baechle
  7.  * Copyright (C) 2001 MIPS Technologies, Inc.
  8.  */
  9. #include <linux/delay.h>
  10. #include <linux/kernel.h>
  11. #include <linux/sched.h>
  12. #include <linux/smp.h>
  13. #include <asm/bootinfo.h>
  14. #include <asm/mipsregs.h>
  15. #include <asm/processor.h>
  16. #include <asm/watch.h>
  17. extern unsigned long unaligned_instructions;
  18. unsigned int vced_count, vcei_count;
  19. /*
  20.  * BUFFER is PAGE_SIZE bytes long.
  21.  *
  22.  * Currently /proc/cpuinfo is being abused to print data about the
  23.  * number of date/instruction cacheflushes.
  24.  */
  25. int get_cpuinfo(char *buffer)
  26. {
  27. char fmt [64];
  28. size_t len;
  29. len = sprintf(buffer, "cputtt: MIPSn");
  30. #if 0
  31. len += sprintf(buffer + len, "cpu modeltt: %s V%d.%dn",
  32.                cpu_name[mips_cputype <= CPU_LAST ?
  33.                         mips_cputype :
  34.                         CPU_UNKNOWN],
  35.                (version >> 4) & 0x0f,
  36.                version & 0x0f);
  37. len += sprintf(buffer + len, "system typett: %s %sn",
  38.        mach_group_names[mips_machgroup],
  39.        mach_group_to_name[mips_machgroup][mips_machtype]);
  40. #endif
  41. len += sprintf(buffer + len, "BogoMIPStt: %lu.%02lun",
  42.        (loops_per_jiffy + 2500) / (500000/HZ),
  43.                ((loops_per_jiffy + 2500) / (5000/HZ)) % 100);
  44. len += sprintf(buffer + len, "Number of cpustt: %dn", smp_num_cpus);
  45. #if defined (__MIPSEB__)
  46. len += sprintf(buffer + len, "byteordertt: big endiann");
  47. #endif
  48. #if defined (__MIPSEL__)
  49. len += sprintf(buffer + len, "byteordertt: little endiann");
  50. #endif
  51. len += sprintf(buffer + len, "unaligned accessest: %lun",
  52.        unaligned_instructions);
  53. len += sprintf(buffer + len, "wait instructiont: %sn",
  54.                wait_available ? "yes" : "no");
  55. len += sprintf(buffer + len, "microsecond timerst: %sn",
  56.                cyclecounter_available ? "yes" : "no");
  57. len += sprintf(buffer + len, "extra interrupt vectort: %sn",
  58.                dedicated_iv_available ? "yes" : "no");
  59. len += sprintf(buffer + len, "hardware watchpointt: %sn",
  60.                watch_available ? "yes" : "no");
  61. sprintf(fmt, "VCE%%c exceptionstt: %sn",
  62.         vce_available ? "%d" : "not available");
  63. len += sprintf(buffer + len, fmt, 'D', vced_count);
  64. len += sprintf(buffer + len, fmt, 'I', vcei_count);
  65. return len;
  66. }
  67. void init_irq_proc(void)
  68. {
  69. /* Nothing, for now.  */
  70. }