函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |