函数逻辑报告 |
Source Code:kernel\futex.c |
Create Date:2022-07-27 11:54:29 |
| Last Modify:2020-03-17 15:28:32 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:fixup_pi_state_owner
函数原型:static int fixup_pi_state_owner(unsigned int __user *uaddr, struct futex_q *q, struct task_struct *argowner)
返回类型:int
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| unsigned int __user * | uaddr | |
| struct futex_q * | q | |
| struct task_struct * | argowner |
| 2447 | err等于0 |
| 2449 | lockdep_assert_held(lock_ptr) |
| 2478 | retry : |
| 2479 | 如果非argowner则 |
| 2485 | ret等于0 |
| 2486 | 转到:out_unlock |
| 2489 | 如果__rt_mutex_futex_trylock( & The PI object:)则 |
| 2491 | ret等于0 |
| 2492 | 转到:out_unlock |
| 2498 | newowner等于rt_mutex_owner( & The PI object:) |
| 2500 | 否则 |
| 2501 | WARN_ON_ONCE(argowner != 当前进程) |
| 2507 | ret等于0 |
| 2508 | 转到:out_unlock |
| 2518 | err等于get_futex_value_locked( & uval, uaddr) |
| 2519 | 如果err则转到:handle_err |
| 2522 | 循环 |
| 2526 | 如果err则转到:handle_err |
| 2538 | 如果(owner != NULL)则 |
| 2541 | 删除链表项并重新初始化 |
| 2549 | 添加链表项 |
| 2551 | raw_spin_unlock_irq( & 保护自旋锁) |
| 2553 | 返回:0 |
| 2568 | handle_err : |
| 2569 | raw_spin_unlock_irq( & 保护自旋锁) |
| 2570 | 自旋锁解锁 |
| 2575 | 退出 |
| 2582 | 默认 |
| 2588 | 加自旋锁 |
| 2595 | ret等于0 |
| 2596 | 转到:out_unlock |
| 2599 | 如果ret则转到:out_unlock |
| 2602 | 转到:retry |
| 2604 | out_unlock : |
| 2605 | raw_spin_unlock_irq( & 保护自旋锁) |
| 2606 | 返回:ret |
| 名称 | 描述 |
|---|---|
| fixup_owner | xup_owner() - Post lock pi_state and corner case management*@uaddr: user address of the futex*@q: futex_q (contains pi_state and access to the rt_mutex)*@locked: if the attempt to take the rt_mutex succeeded (1) or not (0)* After attempting to lock an |
| futex_wait_requeue_pi | 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 |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |