函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\futex.c Create Date:2022-07-27 11:54:32
Last Modify:2020-03-17 15:28:32 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:ex_wait_queue_me() - queue_me() and wait for wakeup, timeout, or signal*@hb: the futex hash bucket, must be locked by the caller*@q: the futex_q to queue up on*@timeout: the prepared hrtimer_sleeper, or null for no timeout

函数原型:static void futex_wait_queue_me(struct futex_hash_bucket *hb, struct futex_q *q, struct hrtimer_sleeper *timeout)

返回类型:void

参数:

类型参数名称
struct futex_hash_bucket *hb
struct futex_q *q
struct hrtimer_sleeper *timeout
2687  set_current_state(睡眠态)
2688  queue_me() - Enqueue the futex_q on the futex_hash_bucket*@q: The futex_q to enqueue*@hb: The destination hash bucket* The hb->lock must be held by the caller, and is released here. A call to
2691  如果timeouthrtimer_sleeper_start_expires - Start a hrtimer sleeper timer*@sl: sleeper to be started*@mode: timer mode abs/rel* Wrapper around hrtimer_start_expires() for hrtimer_sleeper based timers* to allow PREEMPT_RT to tweak the delivery mode (soft/hardirq
2698  如果此条件成立可能性大(为编译器优化)(!节点不在链表上)则
2704  如果非timeouttaskfreezable_schedule()
2707  set_current_state() includes a barrier so that the write of current->state* is correctly serialised wrt the caller's subsequent test of whether to* actually sleep:* for (;;) {* set_current_state(TASK_UNINTERRUPTIBLE);* if (!need_sleep)* break;* (就绪态)
调用者
名称描述
futex_wait
futex_wait_requeue_piex_wait_requeue_pi() - Wait on uaddr and take uaddr2*@uaddr: the futex we initially wait on (non-pi)*@flags: futex flags (FLAGS_SHARED, FLAGS_CLOCKRT, etc