[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:31094] Unknown HZ value
-
From:Nagato Yasushi
-
Date:Sat, 5 Nov 2011 01:33:03 +0900 (JST)
- Subject: [plamo:31094] Unknown HZ value
- From: Nagato Yasushi <nagato@xxxxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Sat, 05 Nov 2011 01:33:02 +0900 (JST)
ながとです
先日から、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 公開システム