linux-2.6.33/schedule_hrtimeout_range()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#nfbde2cd]
#backlinks
*説明 [#r49ca18b]
-パス: [[linux-2.6.33/kernel/hrtimer.c]]
-FIXME: これは何?
--説明
**引数 [#rb0cff3c]
-ktime_t *expires
--
--[[linux-2.6.33/ktime_t]]
-unsigned long delta
--
-const enum hrtimer_mode mode
--
--[[linux-2.6.33/hrtimer_mode]]
**返り値 [#k8e1a8fd]
-int
--
**参考 [#n00b834d]
*実装 [#u0d4c447]
/**
* schedule_hrtimeout_range - sleep until timeout
* @expires: timeout value (ktime_t)
* @delta: slack in expires timeout (ktime_t)
* @mode: timer mode, HRTIMER_MODE_ABS or HRTIMER_MODE_REL
*
* Make the current task sleep until the given expiry ti...
* elapsed. The routine will return immediately unless
* the current task state has been set (see set_current_...
*
* The @delta argument gives the kernel the freedom to s...
* actual wakeup to a time that is both power and perfor...
* The kernel give the normal best effort behavior for "...
* but may decide to fire the timer earlier, but no earl...
*
* You can set the task state as follows -
*
* %TASK_UNINTERRUPTIBLE - at least @timeout time is gua...
* pass before the routine returns.
*
* %TASK_INTERRUPTIBLE - the routine may return early if...
* delivered to the current task.
*
* The current task state is guaranteed to be TASK_RUNNI...
* routine returns.
*
* Returns 0 when the timer has expired otherwise -EINTR
*/
int __sched schedule_hrtimeout_range(ktime_t *expires, u...
const enum hrtimer_mode mode)
{
struct hrtimer_sleeper t;
-
--[[linux-2.6.33/hrtimer_sleeper]]
/*
* Optimize when a zero timeout value is given. It does...
* matter whether this is an absolute or a relative time.
*/
if (expires && !expires->tv64) {
__set_current_state(TASK_RUNNING);
return 0;
}
-
--[[linux-2.6.33/__set_current_state()]]
-
--[[linux-2.6.33/TASK_RUNNING]]
/*
* A NULL parameter means "inifinte"
*/
if (!expires) {
schedule();
__set_current_state(TASK_RUNNING);
return -EINTR;
}
-
--[[linux-2.6.33/schedule()]]
hrtimer_init_on_stack(&t.timer, CLOCK_MONOTONIC, mode);
hrtimer_set_expires_range_ns(&t.timer, *expires, delta);
-
--[[linux-2.6.33/hrtimer_init_on_stack()]]
-
--[[linux-2.6.33/CLOCK_MONOTONIC]]
hrtimer_init_sleeper(&t, current);
-
--[[linux-2.6.33/hrtimer_init_sleeper()]]
-
--[[linux-2.6.33/current(global)]]
hrtimer_start_expires(&t.timer, mode);
if (!hrtimer_active(&t.timer))
t.task = NULL;
-
--[[linux-2.6.33/hrtimer_start_expires()]]
-
--[[linux-2.6.33/hrtimer_active()]]
if (likely(t.task))
schedule();
-
--[[linux-2.6.33/likely()]]
hrtimer_cancel(&t.timer);
destroy_hrtimer_on_stack(&t.timer);
-
--[[linux-2.6.33/hrtimer_cancel()]]
-
--[[linux-2.6.33/destroy_hrtimer_on_stack()]]
__set_current_state(TASK_RUNNING);
return !t.task ? 0 : -EINTR;
}
EXPORT_SYMBOL_GPL(schedule_hrtimeout_range);
-GPL のモジュールにのみシンボルを公開する。
--[[linux-2.6.33/EXPORT_SYMBOL_GPL()]]
*コメント [#g6f3fd2e]
終了行:
*参照元 [#nfbde2cd]
#backlinks
*説明 [#r49ca18b]
-パス: [[linux-2.6.33/kernel/hrtimer.c]]
-FIXME: これは何?
--説明
**引数 [#rb0cff3c]
-ktime_t *expires
--
--[[linux-2.6.33/ktime_t]]
-unsigned long delta
--
-const enum hrtimer_mode mode
--
--[[linux-2.6.33/hrtimer_mode]]
**返り値 [#k8e1a8fd]
-int
--
**参考 [#n00b834d]
*実装 [#u0d4c447]
/**
* schedule_hrtimeout_range - sleep until timeout
* @expires: timeout value (ktime_t)
* @delta: slack in expires timeout (ktime_t)
* @mode: timer mode, HRTIMER_MODE_ABS or HRTIMER_MODE_REL
*
* Make the current task sleep until the given expiry ti...
* elapsed. The routine will return immediately unless
* the current task state has been set (see set_current_...
*
* The @delta argument gives the kernel the freedom to s...
* actual wakeup to a time that is both power and perfor...
* The kernel give the normal best effort behavior for "...
* but may decide to fire the timer earlier, but no earl...
*
* You can set the task state as follows -
*
* %TASK_UNINTERRUPTIBLE - at least @timeout time is gua...
* pass before the routine returns.
*
* %TASK_INTERRUPTIBLE - the routine may return early if...
* delivered to the current task.
*
* The current task state is guaranteed to be TASK_RUNNI...
* routine returns.
*
* Returns 0 when the timer has expired otherwise -EINTR
*/
int __sched schedule_hrtimeout_range(ktime_t *expires, u...
const enum hrtimer_mode mode)
{
struct hrtimer_sleeper t;
-
--[[linux-2.6.33/hrtimer_sleeper]]
/*
* Optimize when a zero timeout value is given. It does...
* matter whether this is an absolute or a relative time.
*/
if (expires && !expires->tv64) {
__set_current_state(TASK_RUNNING);
return 0;
}
-
--[[linux-2.6.33/__set_current_state()]]
-
--[[linux-2.6.33/TASK_RUNNING]]
/*
* A NULL parameter means "inifinte"
*/
if (!expires) {
schedule();
__set_current_state(TASK_RUNNING);
return -EINTR;
}
-
--[[linux-2.6.33/schedule()]]
hrtimer_init_on_stack(&t.timer, CLOCK_MONOTONIC, mode);
hrtimer_set_expires_range_ns(&t.timer, *expires, delta);
-
--[[linux-2.6.33/hrtimer_init_on_stack()]]
-
--[[linux-2.6.33/CLOCK_MONOTONIC]]
hrtimer_init_sleeper(&t, current);
-
--[[linux-2.6.33/hrtimer_init_sleeper()]]
-
--[[linux-2.6.33/current(global)]]
hrtimer_start_expires(&t.timer, mode);
if (!hrtimer_active(&t.timer))
t.task = NULL;
-
--[[linux-2.6.33/hrtimer_start_expires()]]
-
--[[linux-2.6.33/hrtimer_active()]]
if (likely(t.task))
schedule();
-
--[[linux-2.6.33/likely()]]
hrtimer_cancel(&t.timer);
destroy_hrtimer_on_stack(&t.timer);
-
--[[linux-2.6.33/hrtimer_cancel()]]
-
--[[linux-2.6.33/destroy_hrtimer_on_stack()]]
__set_current_state(TASK_RUNNING);
return !t.task ? 0 : -EINTR;
}
EXPORT_SYMBOL_GPL(schedule_hrtimeout_range);
-GPL のモジュールにのみシンボルを公開する。
--[[linux-2.6.33/EXPORT_SYMBOL_GPL()]]
*コメント [#g6f3fd2e]
ページ名: