diff --git a/proc/sysinfo.c b/proc/sysinfo.c index 7ef68c53..34f70ec6 100644 --- a/proc/sysinfo.c +++ b/proc/sysinfo.c @@ -158,6 +158,14 @@ static void old_Hertz_hack(void){ unsigned long long jiffies; unsigned h; char *restrict savelocale; + long hz; + +#ifdef _SC_CLK_TCK + if((hz = sysconf(_SC_CLK_TCK)) > 0){ + Hertz = hz; + return; + } +#endif savelocale = setlocale(LC_NUMERIC, NULL); setlocale(LC_NUMERIC, "C"); @@ -241,6 +249,7 @@ static int check_for_privs(void){ static void init_libproc(void) __attribute__((constructor)); static void init_libproc(void){ have_privs = check_for_privs(); + init_Linux_version(); /* Must be called before we check code */ // ought to count CPUs in /proc/stat instead of relying // on glibc, which foolishly tries to parse /proc/cpuinfo // diff --git a/proc/version.c b/proc/version.c index 69bae4f5..0c3a48f1 100644 --- a/proc/version.c +++ b/proc/version.c @@ -33,8 +33,7 @@ void display_version(void) { int linux_version_code; -static void init_Linux_version(void) __attribute__((constructor)); -static void init_Linux_version(void) { +void init_Linux_version(void) { static struct utsname uts; int x = 0, y = 0, z = 0; /* cleared in case sscanf() < 3 */ diff --git a/proc/version.h b/proc/version.h index 3769b847..04a75e94 100644 --- a/proc/version.h +++ b/proc/version.h @@ -14,6 +14,7 @@ EXTERN_C_BEGIN +void init_Linux_version(void); /* Get Linux version */ extern void display_version(void); /* display suite version */ extern const char procps_version[]; /* global buf for suite version */