Man page - getitimer(2)

Packages contains this manual

Available languages:

en fr pl nl ja ru ro de

Manual

GETITIMER

名 前
書 åŧ
čĒŦ 明
čŋ” り 値
エ ナ ãƒŧ
æē– 拠
æŗ¨ 意
バ グ
é–ĸ 逪 項 į›Ž
こ ぎ 文 書 ãĢ つ い ãĻ

名 前

getitimer, setitimer - イ ãƒŗ ã‚ŋ ãƒŧ バ ãƒĢ ã‚ŋ イ マ ãƒŧ ぎ 値 を 取 åž— ぞ た は 設 厚 す る

書 åŧ

#include <sys/time.h>

int getitimer(int which , struct itimerval * curr_value );
int setitimer(int
which , const struct itimerval * new_value ,
struct itimerval *
old_value );

čĒŦ 明

ã‚ˇ ゚ テ ム は 1 個 ぎ プ ロ ã‚ģ ゚ ãĢ つ き 3 個 ぎ イ ãƒŗ ã‚ŋ ãƒŧ バ ãƒĢ ã‚ŋ イ マ ãƒŧ を 提 供 す る 。 そ れ ぞ れ ぎ ã‚ŋ イ マ ãƒŧ は åˆĨ 々 ぎ 時 間 領 域 で 減 少 す る 。 あ る ã‚ŋ イ マ ãƒŧ が æē€ äē† ã™ る と 、 プ ロ ã‚ģ ゚ ãĢ ã‚ˇ グ ナ ãƒĢ が 送 ら れ 、 ã‚ŋ イ マ ãƒŧ は (0 で ãĒ け れ ば ) 指 厚 さ れ た イ ãƒŗ ã‚ŋ ãƒŧ バ ãƒĢ ãĢ 再 設 厚 さ れ る 。

ITIMER_REAL

原 時 間 (real time) で 減 少 し 、 æē€ äē† ã™ る と SIGALRM が 送 ら れ る 。

ITIMER_VIRTUAL

プ ロ ã‚ģ ゚ が 原 行 さ れ ãĻ い る 間 ぎ ãŋ 減 少 し 、 æē€ äē† ã™ る と SIGVTALRM が 送 ら れ る 。

ITIMER_PROF

プ ロ ã‚ģ ゚ が 原 行 さ れ ãĻ い ãĻ 、 か つ ã‚ˇ ゚ テ ム が そ ぎ プ ロ ã‚ģ ゚ ぎ た め ãĢ å‡Ļ ᐆ を 行 ãĒ ãŖ ãĻ い る 間 ãĢ 減 少 す る 。 多 く ぎ å ´ 合 、 こ ぎ ã‚ŋ イ マ ãƒŧ は ITIMER_VIRTUAL と įĩ„ ãŋ 合 わ さ れ ãĻ 、 ã‚ĸ プ ãƒĒ ã‚ą ãƒŧ ã‚ˇ ョ ãƒŗ が ã‚Ģ ãƒŧ ネ ãƒĢ įŠē 間 と ãƒĻ ãƒŧ ã‚ļ ãƒŧ įŠē 間 で お れ だ け ぎ 時 間 を 過 ご し た か を プ ロ フ ã‚Ą イ ãƒĢ す る ぎ ãĢ äŊŋ ᔍ さ れ る 。 æē€ äē† ã™ る と SIGPROF が 送 ら れ る 。

ã‚ŋ イ マ ãƒŧ ぎ 値 は äģĨ 下 ぎ 構 造 äŊ“ ãĢ よ ãŖ ãĻ 厚 įžŠ さ れ る :

struct itimerval {
struct timeval it_interval; /* Interval for periodic timer */
struct timeval it_value; /* Time until next expiration */
};

struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};

getitimer () é–ĸ 数 は 、 which で 指 厚 さ れ た ã‚ŋ イ マ ãƒŧ ( ITIMER_REAL , ITIMER_VIRTUAL , ITIMER_PROF ぎ お れ か ) ぎ įž 在 ぎ 値 (す ãĒ わ ãĄ 、 æŦĄ ぎ ã‚ŋ イ マ ãƒŧ æē€ äē† ãž で ぎ 掋 り 時 間 ) を 、 curr_value で 指 厚 さ れ た 構 造 äŊ“ ãĢ æ ŧ į´ す る 。 it_value フ ã‚Ŗ ãƒŧ ãƒĢ ド ぎ ã‚ĩ ブ フ ã‚Ŗ ãƒŧ ãƒĢ ド ãĢ は ã‚ŋ イ マ ãƒŧ ぎ 掋 り 時 間 が 設 厚 さ れ る 。 ã‚ŋ イ マ ãƒŧ が į„Ą 劚 ãĢ ãĒ ãŖ ãĻ い る å ´ 合 は ã‚ŧ ロ が 設 厚 さ れ る 。 it_interval フ ã‚Ŗ ãƒŧ ãƒĢ ド ãĢ は ã‚ŋ イ マ ãƒŧ ぎ イ ãƒŗ ã‚ŋ ãƒŧ バ ãƒĢ (期 間 ) が 設 厚 さ れ る 。 it_interval (ぎ 严 æ–š ぎ ã‚ĩ ブ フ ã‚Ŗ ãƒŧ ãƒĢ ド ) で 値 0 が čŋ” さ れ た å ´ 合 は 、 こ ぎ ã‚ŋ イ マ ãƒŧ が 1 回 限 り ぎ ã‚ŋ イ マ ãƒŧ で あ る こ と を į¤ē し ãĻ い る 。

setitimer () é–ĸ 数 は 指 厚 さ れ た ã‚ŋ イ マ ãƒŧ ãĢ new_value ぎ 値 を 設 厚 す る 。 old_value が NULL äģĨ 外 ぎ å ´ 合 、 ã‚ŋ イ マ ãƒŧ ぎ 古 い 値 (す ãĒ わ ãĄ getitimer () で čŋ” さ れ る ぎ と 同 じ 情 å ą ) が old_value ãĢ æ ŧ į´ さ れ る 。

ã‚ŋ イ マ ãƒŧ は it_value か ら ã‚ŧ ロ へ 向 け ãĻ 減 ãŖ ãĻ い き 、 ã‚ˇ グ ナ ãƒĢ を į”Ÿ 成 し 、 it_interval ãĢ 初 期 化 さ れ る 。 ã‚ŋ イ マ ãƒŧ が ã‚ŧ ロ ãĢ 設 厚 さ れ た å ´ 合 ( it_value が ã‚ŧ ロ か 、 ã‚ŋ イ マ ãƒŧ が æē€ äē† ã— た 時 ãĢ it_interval が ã‚ŧ ロ ぎ å ´ 合 ) は 停 æ­ĸ す る 。

ã‚ŋ イ マ ãƒŧ ぎ 期 間 は tv_sec と tv_usec ぎ 严 æ–š ãĢ よ り æąē 厚 さ れ る 。

čρ æą‚ し た 時 間 が く る 前 ãĢ ã‚ŋ イ マ ãƒŧ が æē€ äē† ã™ る こ と は ãĒ い が 、 逆 ãĢ あ る (៭ い ) 時 間 だ け æē€ äē† ãŒ 遅 れ る こ と は あ る 。 お れ だ け 遅 れ る か は ã‚ˇ ゚ テ ム ぎ 時 間 分 č§Ŗ čƒŊ と ã‚ˇ ゚ テ ム ぎ 負 荷 ãĢ 䞝 存 す る ( time (7) 参 į…§ ; äŊ† し 、 バ グ ぎ 項 も 参 į…§ ぎ こ と )。 ã‚ŋ イ マ ãƒŧ が æē€ äē† ã™ る と ã‚ˇ グ ナ ãƒĢ が į”Ÿ 成 さ れ 、 ã‚ŋ イ マ ãƒŧ は 初 期 化 さ れ る 。 プ ロ ã‚ģ ゚ が ã‚ĸ ク テ ã‚Ŗ ブ ãĒ 時 ( ITIMER_VIRTUAL ぎ å ´ 合 ãĢ は 常 ãĢ そ う で あ る ) ãĢ ã‚ŋ イ マ ãƒŧ が æē€ äē† ã— た å ´ 合 、 į”Ÿ 成 さ れ た ã‚ˇ グ ナ ãƒĢ は す ぐ ãĢ 配 送 さ れ る 。 そ れ äģĨ 外 ぎ å ´ 合 は 、 ã‚ˇ ゚ テ ム ぎ 負 荷 ãĢ よ り 少 し ぎ 時 間 だ け 遅 れ ãĻ 配 送 さ れ る 。

čŋ” り 値

成 功 し た å ´ 合 、 0 が čŋ” さ れ る 。 エ ナ ãƒŧ が į™ē į”Ÿ し た å ´ 合 、 -1 が čŋ” さ れ 、 errno が 遊 切 ãĢ 設 厚 さ れ る 。

エ ナ ãƒŧ

EFAULT

new_value , old_value , curr_value が 有 劚 ãĒ ポ イ ãƒŗ ã‚ŋ ãƒŧ で は ãĒ い 。

EINVAL

which が ITIMER_REAL , ITIMER_VIRTUAL , ITIMER_PROF ぎ お れ で も ãĒ い 。 ぞ た は (Linux 2.6.22 äģĨ 降 で ) new_value で 指 厚 さ れ た 構 造 äŊ“ ぎ tv_usec フ ã‚Ŗ ãƒŧ ãƒĢ ド ぎ 一 つ が 0 äģĨ 上 999999 äģĨ 下 ぎ ᝄ 回 ãĢ å…Ĩ ら ãĒ い 値 で あ る 。

æē– 拠

POSIX.1-2001, SVr4, 4.4BSD (こ ぎ ã‚ŗ ãƒŧ ãƒĢ は 4.2BSD で 始 め ãĻ įž わ れ た ). POSIX.1-2008 で は 、 getitimer () と setitimer () は åģƒ æ­ĸ äēˆ åŽš と さ れ ãĻ お り 、 äģŖ ã‚ り ãĢ POSIX ã‚ŋ イ マ ãƒŧ API ( timer_gettime (2), timer_settime (2) ãĒ お ) を äŊŋ う こ と が 推 åĨ¨ さ れ ãĻ い る 。

æŗ¨ 意

fork (2) で äŊœ 成 さ れ た 子 プ ロ ã‚ģ ゚ は 、 čĻĒ ãƒ— ロ ã‚ģ ゚ ぎ イ ãƒŗ ã‚ŋ ãƒŧ バ ãƒĢ ã‚ŋ イ マ ãƒŧ を įļ™ æ‰ŋ し ãĒ い 。 execve (2) ぎ 前 垌 で は イ ãƒŗ ã‚ŋ ãƒŧ バ ãƒĢ ã‚ŋ イ マ ãƒŧ は äŋ 存 さ れ る 。

POSIX.1 で は 、 setitimer () と 、 alarm (2), sleep (3), usleep (3) と い う 3 つ ぎ イ ãƒŗ ã‚ŋ ãƒŧ フ ェ ãƒŧ ゚ と ぎ ᛏ äē’ ãŽ åŊą éŸŋ ãĢ つ い ãĻ は čĻ 厚 し ãĻ い ãĒ い 。

標 æē– で は 、 æŦĄ ぎ å‘ŧ ãŗ å‡ē し ぎ 意 呺 ãĢ つ い ãĻ は čĻ 厚 さ れ ãĻ い ãĒ い 。

setitimer(which, NULL, &old_value);

(Solaris, BSD įŗģ や お そ ら く äģ– ãŽ ã‚ˇ ゚ テ ム も そ う だ が ) 多 く ぎ ã‚ˇ ゚ テ ム で は 、 こ ぎ å‘ŧ ãŗ å‡ē し は äģĨ 下 と į­‰ 䞥 で あ る 。

getitimer(which, &old_value);

Linux で は 、 こ ぎ å‘ŧ ãŗ å‡ē し は new_value フ ã‚Ŗ ãƒŧ ãƒĢ ド が 0 ぎ å‘ŧ ãŗ å‡ē し と į­‰ 䞥 ãĒ も ぎ と æ‰ą わ れ る 。 つ ぞ り 、 ã‚ŋ イ マ ãƒŧ が į„Ą 劚 ãĢ ãĒ る 。 Linux ぎ こ ぎ 間 違 ãŖ た 抟 čƒŊ を äŊŋ ᔍ し ãĒ い こ と 。 į§ģ 植 性 も ãĒ く 、 不 åŋ… čρ ãĒ 抟 čƒŊ で あ る 。

バ グ

ã‚ˇ グ ナ ãƒĢ ぎ į”Ÿ 成 と 配 送 は åˆĨ 個 ぎ も ぎ で あ り 、 前 čŋ° ぎ ã‚ˇ グ ナ ãƒĢ ぎ そ れ ぞ れ ãĢ つ い ãĻ 一 つ だ け が プ ロ ã‚ģ ゚ ぎ た め ãĢ åž… 抟 す る 。 非 常 ãĢ 重 い 負 荷 ぎ 下 で は 、 ITIMER_REAL ã‚ŋ イ マ ãƒŧ で は 、 時 間 切 れ ãĢ よ り į”Ÿ 成 さ れ た 一 つ 前 ぎ ã‚ˇ グ ナ ãƒĢ が 配 送 さ れ る 前 ãĢ 、 æŦĄ ぎ 時 間 切 れ が čĩˇ こ る å ´ 合 が あ る 。 そ ぎ よ う ãĒ å ´ 合 、 2 個 め ぎ イ ベ ãƒŗ ト ãĢ 寞 す る ã‚ˇ グ ナ ãƒĢ は å¤ą わ れ ãĻ し ぞ う 。

バ ãƒŧ ジ ョ ãƒŗ 2.6.16 よ り 前 ぎ Linux ã‚Ģ ãƒŧ ネ ãƒĢ で は 、 ã‚ŋ イ マ ãƒŧ ぎ 値 は jiffy で 襨 įž さ れ る 。 čρ æą‚ が jiffy 襨 įž で ( include/linux/jiffies.h で 厚 įžŠ さ れ ãĻ い る ) MAX_SEC_IN_JIFFIES を čļŠ ãˆ る 値 を ã‚ŋ イ マ ãƒŧ ãĢ 設 厚 し よ う と す る も ぎ ぎ å ´ 合 、 ã‚ŋ イ マ ãƒŧ は 暗 éģ™ ãĢ こ ぎ 上 限 値 ãĢ 切 り 芰 め ら れ る 。 Linux/i386 ぎ å ´ 合 (Linux 2.6.13 äģĨ 降 で は jiffy は 0.004 į§’ ) ぎ å ´ 合 、 こ れ は ã‚ŋ イ マ ãƒŧ ぎ 上 限 値 が お よ そ 99.42 æ—Ĩ ãĢ ãĒ る こ と を 意 呺 す る 。 Linux 2.6.16 äģĨ 降 で は 、 ã‚Ģ ãƒŧ ネ ãƒĢ は 時 間 ãĢ é–ĸ す る 内 部 襨 įž と し ãĻ į•° ãĒ る 襨 įž を äŊŋ う よ う ãĢ ãĒ ãŖ ãĻ お り 、 こ ぎ 上 限 は ãĒ く ãĒ ãŖ た 。

(i386 を åĢ む ) い く つ か ぎ ã‚ˇ ゚ テ ム で は 、 バ ãƒŧ ジ ョ ãƒŗ 2.6.12 äģĨ 前 ぎ Linux ã‚Ģ ãƒŧ ネ ãƒĢ は あ る į¨Ž ぎ įŠļ æŗ で は 1 jiffy æ—Š く ã‚ŋ イ マ ãƒŧ が įĩ‚ äē† ã— ãĻ し ぞ う と い う バ グ が あ ãŖ た 。 こ ぎ バ グ は ã‚Ģ ãƒŧ ネ ãƒĢ 2.6.12 で äŋŽ æ­Ŗ さ れ た 。

POSIX.1-2001 で は setitimer () は tv_usec ぎ 値 が 0 か ら 999999 ぎ ᝄ 回 外 で あ る å ´ 合 ãĢ は å¤ą 敗 す る ず き だ と し ãĻ い る 。 し か し 、 2.6.21 äģĨ 前 ぎ ã‚Ģ ãƒŧ ネ ãƒĢ ぎ Linux で は エ ナ ãƒŧ ãĢ ãĒ ら ず 、 寞 åŋœ す る į§’ 数 ぎ 分 だ け そ ぎ ã‚ŋ イ マ ãƒŧ ぎ į§’ ぎ 値 が 暗 éģ™ ãĢ čĒŋ 整 さ れ る 。 ã‚Ģ ãƒŧ ネ ãƒĢ 2.6.22 äģĨ 降 で は 、 こ ぎ 標 æē– 非 æē– 拠 ぎ 動 äŊœ は äŋŽ æ­Ŗ さ れ 、 tv_usec ぎ 値 が 不 遊 切 ãĒ å ´ 合 ãĢ は EINVAL エ ナ ãƒŧ と ãĒ る 。

é–ĸ 逪 項 į›Ž

gettimeofday (2), sigaction (2), signal (2), timer_create (2), timerfd_create (2), time (7)

こ ぎ 文 書 ãĢ つ い ãĻ

こ ぎ man ペ ãƒŧ ジ は Linux man-pages プ ロ ジ ェ ク ト ぎ ãƒĒ ãƒĒ ãƒŧ ゚ 3.79 ぎ 一 部 で あ る 。 プ ロ ジ ェ ク ト ぎ čĒŦ 明 と バ グ å ą 告 ãĢ é–ĸ す る 情 å ą は http://www.kernel.org/doc/man-pages/ ãĢ 書 か れ ãĻ い る 。