函数逻辑报告 |
Source Code:kernel\futex.c |
Create Date:2022-07-27 11:54:59 |
Last Modify:2020-03-17 15:28:32 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:ex_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
函数原型:static int futex_wait_requeue_pi(unsigned int __user *uaddr, unsigned int flags, unsigned int val, ktime_t *abs_time, unsigned int bitset, unsigned int __user *uaddr2)
返回类型:int
参数:
类型 | 参数 | 名称 |
---|---|---|
unsigned int __user * | uaddr | |
unsigned int | flags | |
unsigned int | val | |
ktime_t * | abs_time | |
unsigned int | bitset | |
unsigned int __user * | uaddr2 |
3300 | struct futex_pi_state * pi_state = NULL |
3303 | key2等于FUTEX_KEY_INIT |
3304 | q等于futex_q_init |
3307 | 如果非IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',* 0 otherwise.(CONFIG_FUTEX_PI)则返回:负ENOSYS |
3323 | rt_mutex_init_waiter( & rt_waiter) |
3326 | 如果此条件成立可能性小(为编译器优化)(ret != 0)则转到:out |
3331 | requeue_pi_key等于key2 |
3354 | 加自旋锁 |
3356 | 自旋锁解锁 |
3357 | 如果ret则转到:out_put_keys |
3370 | 如果非rt_waiter则 |
3376 | 加自旋锁 |
3377 | ret等于fixup_pi_state_owner(uaddr2, & q, 当前进程) |
3378 | 如果ret且rt_mutex_owner( & The PI object:)恒等于当前进程则 |
3380 | get_pi_state(pi_state) |
3386 | Drops a reference to the pi_state object and frees or caches it* when the last reference is gone. |
3387 | 自旋锁解锁 |
3389 | 否则 |
3398 | pi_mutex等于The PI object: |
3399 | ret等于_mutex_wait_proxy_lock() - Wait for lock acquisition*@lock: the rt_mutex we were woken on*@to: the timeout, null if none |
3401 | 加自旋锁 |
3405 | debug_rt_mutex_free_waiter( & rt_waiter) |
3423 | 如果ret且rt_mutex_owner( & The PI object:)恒等于当前进程则 |
3425 | get_pi_state(pi_state) |
3432 | 如果pi_state则 |
3433 | rt_mutex_futex_unlock( & The PI object:) |
3445 | ret等于负EWOULDBLOCK |
3448 | out_put_keys : |
3449 | put_futex_key( & key) |
3450 | out_key2 : |
3451 | put_futex_key( & key2) |
3453 | out : |
3454 | 如果to则 |
3456 | destroy_hrtimer_on_stack( & timer) |
3458 | 返回:ret |
名称 | 描述 |
---|---|
do_futex |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |