[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:31094] Unknown HZ value



ながとです

先日から、plamo64-0.21 の kernel を 3.0.8 + tuxonice にして
使っているのですが、suspend/resume 後に ps コマンドや w コマンドを
実行すると Unknown HZ value が表示されたりする問題に出くわして
いました。(大きな実害は無かったのでしばらく放っていました)
念のため plamo の original kernel 2.6.39.4 でも様子をみてみたのですが、
ほんの時折 Unknown HZ value が表示されていることに気づきました。

そこで procps-3.2.8 を調べてみたところ、proc/sysinfo.c の中にある
初期化関数 init_libproc と init_Linux_version の呼び出し順が
定まっていないことが原因らしいことがわかりました。
一応修正 patch を用意したので、良ければご利用ください。

p.s.
ググってみたら、既に debian の方に同じ patch がありました ^-^;;
  http://patch-tracker.debian.org/patch/series/view/procps/1:3.2.8-9/proc_version_constructor.patch

-- 
Nagato, Yasushi <nagato@xxxxxxxxxxxxxxxxxxxxxxxxxxx>

diff -ur procps-3.2.8.orig/Makefile procps-3.2.8/Makefile
--- procps-3.2.8.orig/Makefile	2009-05-11 03:50:48.000000000 +0900
+++ procps-3.2.8/Makefile	2011-11-05 01:19:10.979511360 +0900
@@ -174,7 +174,7 @@
 # want this rule first, use := on ALL, and ALL not filled in yet
 all: do_all
 
--include */module.mk
+-include proc/module.mk ps/module.mk
 
 do_all:    $(ALL)
 
diff -ur procps-3.2.8.orig/proc/sysinfo.c procps-3.2.8/proc/sysinfo.c
--- procps-3.2.8.orig/proc/sysinfo.c	2008-03-24 13:33:43.000000000 +0900
+++ procps-3.2.8/proc/sysinfo.c	2011-11-05 01:19:10.979511360 +0900
@@ -222,6 +222,7 @@
   smp_num_cpus = sysconf(_SC_NPROCESSORS_ONLN);
   if(smp_num_cpus<1) smp_num_cpus=1; /* SPARC glibc is buggy */
 
+  init_Linux_version();
   if(linux_version_code > LINUX_VERSION(2, 4, 0)){ 
     Hertz = find_elf_note(AT_CLKTCK);
     if(Hertz!=NOTE_NOT_FOUND) return;
diff -ur procps-3.2.8.orig/proc/version.c procps-3.2.8/proc/version.c
--- procps-3.2.8.orig/proc/version.c	2003-01-29 10:11:43.000000000 +0900
+++ procps-3.2.8/proc/version.c	2011-11-05 01:19:10.989511385 +0900
@@ -33,8 +33,7 @@
 
 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 -ur procps-3.2.8.orig/proc/version.h procps-3.2.8/proc/version.h
--- procps-3.2.8.orig/proc/version.h	2002-12-15 09:08:32.000000000 +0900
+++ procps-3.2.8/proc/version.h	2011-11-05 01:27:24.660235429 +0900
@@ -17,6 +17,7 @@
 extern void display_version(void);	/* display suite version */
 extern const char procps_version[];		/* global buf for suite version */
 
+extern void init_Linux_version(void);
 extern int linux_version_code;		/* runtime version of LINUX_VERSION_CODE
 					   in /usr/include/linux/version.h */
 

Follow-Ups
[plamo:31095] Re: Unknown HZ value, S.Mihara
[plamo:31096] Re: Unknown HZ value, KATOH Yasufumi

[検索ページ] [メール一覧]
Plamo ML 公開システム