linux-4.4.1/__wake_up_common()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#l24a4776]
#backlinks
*説明 [#y7ba5e4f]
-パス: [[linux-4.4.1/kernel/sched/wait.c]]
-FIXME: これは何?
--説明
**引数 [#r305c8ce]
-wait_queue_head_t *q
--
--[[linux-4.4.1/wait_queue_head_t]]
-unsigned int mode
--
-int nr_exclusive
--
-int wake_flags
--
-void *key
--
**返り値 [#r8eaf1a9]
-なし
**参考 [#xe1404d5]
-curr->func の初期化は下記の関数で行われることが多い。
--[[linux-4.4.1/init_waitqueue_func_entry()]]
-例えば poll の場合、__pollwait でこの関数が呼ばれ、func ...
$ grep -r init_waitqueue_func_entry
drivers/vfio/virqfd.c: init_waitqueue_func_entry(&virqf...
drivers/staging/android/sync.c: init_waitqueue_func_entr...
drivers/vhost/vhost.c: init_waitqueue_func_entry(&poll-...
mm/memcontrol.c: init_waitqueue_func_entry(&event...
net/unix/af_unix.c: init_waitqueue_func_entry(&u->pe...
net/9p/trans_fd.c: init_waitqueue_func_entry(&pwait...
fs/select.c: init_waitqueue_func_entry(&entry->wait, ...
fs/cachefiles/rdwr.c: init_waitqueue_func_entry(&monit...
fs/cachefiles/rdwr.c: init_waitqueue_f...
fs/eventpoll.c: init_waitqueue_func_entry(&pwq->...
fs/userfaultfd.c: init_waitqueue_func_entry(&uwq.w...
kernel/exit.c: init_waitqueue_func_entry(&wo->child_wai...
virt/kvm/eventfd.c: init_waitqueue_func_entry(&irqfd...
include/linux/wait.h:init_waitqueue_func_entry(wait_queu...
$ grep -r -b1 init_waitqueue_func_entry fs/cachefiles/rd...
6617-
6618: init_waitqueue_func_entry(&monitor->monitor, cac...
6689-
--
12906- monitor->op = fscache_get_retrie...
12950: init_waitqueue_func_entry(&monit...
12998- cachef...
-各 wakeup 関数へのリンク
--[[linux-4.4.1/virqfd_wakeup()]]
--[[linux-4.4.1/sync_fence_wake_up_wq()]]
--[[linux-4.4.1/vhost_poll_wakeup()]]
--[[linux-4.4.1/memcg_event_wake()]]
--[[linux-4.4.1/unix_dgram_peer_wake_relay()]]
--[[linux-4.4.1/p9_pollwake()]]
--[[linux-4.4.1/pollwake()]]
--[[linux-4.4.1/cachefiles_read_waiter()]]
--[[linux-4.4.1/ep_poll_callback()]]
--[[linux-4.4.1/userfaultfd_wake_function()]]
--[[linux-4.4.1/child_wait_callback()]]
--[[linux-4.4.1/irqfd_wakeup()]]
*実装 [#k060cac0]
/*
* The core wakeup function. Non-exclusive wakeups (nr_e...
* wake everything up. If it's an exclusive wakeup (nr_e...
* number) then we wake all the non-exclusive tasks and ...
*
* There are circumstances in which we can try to wake a...
* started to run but is not in state TASK_RUNNING. try_...
* zero in this (rare) case, and we handle it by continu...
*/
static void __wake_up_common(wait_queue_head_t *q, unsig...
int nr_exclusive, int wake_flags, void *key)
{
wait_queue_t *curr, *next;
-
--[[linux-4.4.1/wait_queue_t]]
list_for_each_entry_safe(curr, next, &q->task_list, tas...
-
--[[linux-4.4.1/list_for_each_entry_safe()]]
unsigned flags = curr->flags;
if (curr->func(curr, mode, wake_flags, key) &&
(flags & WQ_FLAG_EXCLUSIVE) && !--nr_exclusive)
break;
-
-func の初期化は下記の関数で行われることが多い。
--[[linux-4.4.1/init_waitqueue_func_entry()]]
--例えば poll の場合、__pollwait でこの関数が呼ばれる。
--func には pollwake 関数が指定されている。
}
}
*コメント [#bb9f1f30]
終了行:
*参照元 [#l24a4776]
#backlinks
*説明 [#y7ba5e4f]
-パス: [[linux-4.4.1/kernel/sched/wait.c]]
-FIXME: これは何?
--説明
**引数 [#r305c8ce]
-wait_queue_head_t *q
--
--[[linux-4.4.1/wait_queue_head_t]]
-unsigned int mode
--
-int nr_exclusive
--
-int wake_flags
--
-void *key
--
**返り値 [#r8eaf1a9]
-なし
**参考 [#xe1404d5]
-curr->func の初期化は下記の関数で行われることが多い。
--[[linux-4.4.1/init_waitqueue_func_entry()]]
-例えば poll の場合、__pollwait でこの関数が呼ばれ、func ...
$ grep -r init_waitqueue_func_entry
drivers/vfio/virqfd.c: init_waitqueue_func_entry(&virqf...
drivers/staging/android/sync.c: init_waitqueue_func_entr...
drivers/vhost/vhost.c: init_waitqueue_func_entry(&poll-...
mm/memcontrol.c: init_waitqueue_func_entry(&event...
net/unix/af_unix.c: init_waitqueue_func_entry(&u->pe...
net/9p/trans_fd.c: init_waitqueue_func_entry(&pwait...
fs/select.c: init_waitqueue_func_entry(&entry->wait, ...
fs/cachefiles/rdwr.c: init_waitqueue_func_entry(&monit...
fs/cachefiles/rdwr.c: init_waitqueue_f...
fs/eventpoll.c: init_waitqueue_func_entry(&pwq->...
fs/userfaultfd.c: init_waitqueue_func_entry(&uwq.w...
kernel/exit.c: init_waitqueue_func_entry(&wo->child_wai...
virt/kvm/eventfd.c: init_waitqueue_func_entry(&irqfd...
include/linux/wait.h:init_waitqueue_func_entry(wait_queu...
$ grep -r -b1 init_waitqueue_func_entry fs/cachefiles/rd...
6617-
6618: init_waitqueue_func_entry(&monitor->monitor, cac...
6689-
--
12906- monitor->op = fscache_get_retrie...
12950: init_waitqueue_func_entry(&monit...
12998- cachef...
-各 wakeup 関数へのリンク
--[[linux-4.4.1/virqfd_wakeup()]]
--[[linux-4.4.1/sync_fence_wake_up_wq()]]
--[[linux-4.4.1/vhost_poll_wakeup()]]
--[[linux-4.4.1/memcg_event_wake()]]
--[[linux-4.4.1/unix_dgram_peer_wake_relay()]]
--[[linux-4.4.1/p9_pollwake()]]
--[[linux-4.4.1/pollwake()]]
--[[linux-4.4.1/cachefiles_read_waiter()]]
--[[linux-4.4.1/ep_poll_callback()]]
--[[linux-4.4.1/userfaultfd_wake_function()]]
--[[linux-4.4.1/child_wait_callback()]]
--[[linux-4.4.1/irqfd_wakeup()]]
*実装 [#k060cac0]
/*
* The core wakeup function. Non-exclusive wakeups (nr_e...
* wake everything up. If it's an exclusive wakeup (nr_e...
* number) then we wake all the non-exclusive tasks and ...
*
* There are circumstances in which we can try to wake a...
* started to run but is not in state TASK_RUNNING. try_...
* zero in this (rare) case, and we handle it by continu...
*/
static void __wake_up_common(wait_queue_head_t *q, unsig...
int nr_exclusive, int wake_flags, void *key)
{
wait_queue_t *curr, *next;
-
--[[linux-4.4.1/wait_queue_t]]
list_for_each_entry_safe(curr, next, &q->task_list, tas...
-
--[[linux-4.4.1/list_for_each_entry_safe()]]
unsigned flags = curr->flags;
if (curr->func(curr, mode, wake_flags, key) &&
(flags & WQ_FLAG_EXCLUSIVE) && !--nr_exclusive)
break;
-
-func の初期化は下記の関数で行われることが多い。
--[[linux-4.4.1/init_waitqueue_func_entry()]]
--例えば poll の場合、__pollwait でこの関数が呼ばれる。
--func には pollwake 関数が指定されている。
}
}
*コメント [#bb9f1f30]
ページ名: