diff options
author | Marek Polacek <mmpolacek@gmail.com> | 2010-07-30 16:43:11 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-07-30 16:43:11 +0200 |
commit | 85a359afab4743e68977086bddac301ef0675ee1 (patch) | |
tree | ebd70751245449a64e507968dbe99a90b04a0ce3 | |
parent | 3fb4a5e6d86e52014502391d8dca25befa4ff9b4 (diff) | |
download | busybox-w32-85a359afab4743e68977086bddac301ef0675ee1.tar.gz busybox-w32-85a359afab4743e68977086bddac301ef0675ee1.tar.bz2 busybox-w32-85a359afab4743e68977086bddac301ef0675ee1.zip |
mpstat: do not use /sys to get number of CPUs. /proc should be ok.
function old new delta
get_cpu_nr - 137 +137
mpstat_main 1140 1131 -9
get_proc_cpu_nr 137 - -137
get_sys_cpu_nr 178 - -178
------------------------------------------------------------------------------
(add/remove: 1/2 grow/shrink: 0/1 up/down: 137/-324) Total: -187 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | procps/mpstat.c | 49 |
1 files changed, 1 insertions, 48 deletions
diff --git a/procps/mpstat.c b/procps/mpstat.c index 1199b98dd..7610a68fb 100644 --- a/procps/mpstat.c +++ b/procps/mpstat.c | |||
@@ -816,45 +816,11 @@ static void print_header(struct tm *t) | |||
816 | } | 816 | } |
817 | 817 | ||
818 | /* | 818 | /* |
819 | * Get number of processors in /sys | ||
820 | */ | ||
821 | static int get_sys_cpu_nr(void) | ||
822 | { | ||
823 | DIR *dir; | ||
824 | struct dirent *d; | ||
825 | struct stat buf; | ||
826 | char line[MAX_PF_NAME]; | ||
827 | int proc_nr = 0; | ||
828 | |||
829 | dir = opendir(SYSFS_DEVCPU); | ||
830 | if (!dir) | ||
831 | return 0; /* /sys not mounted */ | ||
832 | |||
833 | /* Get current file entry */ | ||
834 | while ((d = readdir(dir)) != NULL) { | ||
835 | if (starts_with_cpu(d->d_name) && isdigit(d->d_name[3])) { | ||
836 | snprintf(line, MAX_PF_NAME, "%s/%s", SYSFS_DEVCPU, | ||
837 | d->d_name); | ||
838 | line[MAX_PF_NAME - 1] = '\0'; | ||
839 | /* Get information about file */ | ||
840 | if (stat(line, &buf) < 0) | ||
841 | continue; | ||
842 | /* If found 'cpuN', we have one more processor */ | ||
843 | if (S_ISDIR(buf.st_mode)) | ||
844 | proc_nr++; | ||
845 | } | ||
846 | } | ||
847 | |||
848 | closedir(dir); | ||
849 | return proc_nr; | ||
850 | } | ||
851 | |||
852 | /* | ||
853 | * Get number of processors in /proc/stat | 819 | * Get number of processors in /proc/stat |
854 | * Return value '0' means one CPU and non SMP kernel. | 820 | * Return value '0' means one CPU and non SMP kernel. |
855 | * Otherwise N means N processor(s) and SMP kernel. | 821 | * Otherwise N means N processor(s) and SMP kernel. |
856 | */ | 822 | */ |
857 | static int get_proc_cpu_nr(void) | 823 | static int get_cpu_nr(void) |
858 | { | 824 | { |
859 | FILE *fp; | 825 | FILE *fp; |
860 | char line[256]; | 826 | char line[256]; |
@@ -881,19 +847,6 @@ static int get_proc_cpu_nr(void) | |||
881 | return proc_nr + 1; | 847 | return proc_nr + 1; |
882 | } | 848 | } |
883 | 849 | ||
884 | static int get_cpu_nr(void) | ||
885 | { | ||
886 | int n; | ||
887 | |||
888 | /* Try to use /sys, if possible */ | ||
889 | n = get_sys_cpu_nr(); | ||
890 | if (n == 0) | ||
891 | /* Otherwise use /proc/stat */ | ||
892 | n = get_proc_cpu_nr(); | ||
893 | |||
894 | return n; | ||
895 | } | ||
896 | |||
897 | /* | 850 | /* |
898 | * Get number of interrupts available per processor | 851 | * Get number of interrupts available per processor |
899 | */ | 852 | */ |