[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:30008] Re: CONFIG_HZ とjiffie
-
From:早間義博
-
Date:Thu, 30 Jul 2009 16:41:02 +0900 (JST)
- Subject: [plamo:30008] Re: CONFIG_HZ とjiffie
- From: 早間義博<yossi@xxxxxxxxxxxxxx>
- Date: Thu, 30 Jul 2009 16:40:58 +0900 (JST)
早間です。
加藤さんありがとうございます。
>
> さて,この "Hertz" ですが,proc/sysinfo.c で取得されていま
> す.init_libproc という関数内で
>
> if(linux_version_code > LINUX_VERSION(2, 4, 0)){
> Hertz = find_elf_note(AT_CLKTCK);
> if(Hertz!=NOTE_NOT_FOUND) return;
> fputs("2.4+ kernel w/o ELF notes? -- report this\n", stderr);
> }
>
> というのがあって,
>
> static unsigned long find_elf_note(unsigned long findme){
> unsigned long *ep = (unsigned long *)environ;
> while(*ep++);
> while(*ep){
> if(ep[0]==findme) return ep[1];
> ep+=2;
> }
> return NOTE_NOT_FOUND;
> }
>
> という関数があります.これに AT_CLKTCK を入れているわけですが,これは
> find_elf_note を見ると分かるように,環境変数 (environ) から AT_CLKTCK
> を取得してるわけですね.
>
> # 外部変数 environ は man 7 environ 参照かな?
>
> AT_CLKTCK はカーネルから ELF の情報として渡されるみたいですね.で,こ
> んな感じで見ることが出来ますね.手元では
>
> % $ LD_SHOW_AUXV=1 ps | grep AT_CLKTCK
> AT_CLKTCK: 100
>
> となっていて 100 が正解です (ps の START の時間を得るという目的では).
>
> ----
> ここからは本多さんに教えていただいたのですが,kernel ソースの
> arch/x86/include/asm/param.h に
>
> #ifdef __KERNEL__
> # define HZ CONFIG_HZ /* Internal kernel timer frequency */
> # define USER_HZ 100 /* some user interfaces are */
> # define CLOCKS_PER_SEC (USER_HZ) /* in "ticks" like times() */
> #endif
>
> という所があって,USER_HZ が 100 になってるから,ですかね? カーネルの
> 内部的なタイマー間隔と,ユーザ空間から見える値はまた別ということですか
> ね?
>
> あと,/usr/include/asm/param.h には
>
> #ifndef HZ
> #define HZ 100
> #endif
>
結論としては、私の勘違いで Kernel Config の herz は jiffie とは
無関係だったのですね。
また、今時の Linux kernel は jiffie の単位は 1/100 秒で通常は変わ
らないと言うことですね。
# 無駄な事だったのですが kernel の設定を変えてコンパイルして見ました。
# いずれも HZ が 100 でわざわざkernel の設定や関数を使用して取得す
# る必要はありませんでした。
sysconf(_SC_CLK_TCK);
で
The corresponding variable is obsolete.
と言うのはどういう事になるのでしょう。
-- 早間
- References
-
- [plamo:29972] CONFIG_HZ とjiffie, 早間義博
- [plamo:30003] Re: CONFIG_HZ とjiffie, KATOH Yasufumi
[検索ページ]
[メール一覧]
Plamo ML 公開システム