函数逻辑报告 |
Source Code:kernel\workqueue.c |
Create Date:2022-07-27 10:27:17 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:lush_workqueue - ensure that any scheduled work has run to completion.*@wq: workqueue to flush* This function sleeps until all work items which were queued on entry* have finished execution, but it is not livelocked by new incoming ones.
函数原型:void flush_workqueue(struct workqueue_struct *wq)
返回类型:void
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct workqueue_struct * | wq |
| 2772 | 如果WARN_ON(!can kworkers be created yet? )则返回 |
| 2775 | lock_map_acquire( & lockdep_map) |
| 2776 | lock_map_release( & lockdep_map) |
| 2778 | mutex_lock( & protects this wq ) |
| 2785 | 如果next_color不等于WQ: current flush color 则 |
| 2791 | WARN_ON_ONCE(!链表为空) |
| 2793 | WQ: current work color 等于next_color |
| 2795 | 如果非WQ: first flusher 则 |
| 2799 | WQ: first flusher 等于this_flusher |
| 2808 | 否则 |
| 2811 | 添加链表项 |
| 2814 | 否则 |
| 2820 | 添加链表项 |
| 2825 | mutex_unlock( & protects this wq ) |
| 2827 | wait_for_completion( & lush completion ) |
| 2835 | 如果WQ: first flusher 不等于this_flusher则返回 |
| 2838 | mutex_lock( & protects this wq ) |
| 2841 | 如果WQ: first flusher 不等于this_flusher则转到:out_unlock |
| 2844 | WQ: first flusher = NULL |
| 2846 | WARN_ON_ONCE(!链表为空) |
| 2849 | 当(true)循环 |
| 2854 | 如果WQ: flush color waiting for 不等于WQ: current flush color 则退出 |
| 2856 | 删除链表项并重新初始化 |
| 2857 | complete( & lush completion ) |
| 2860 | WARN_ON_ONCE(!链表为空 && WQ: current flush color != work_next_color(WQ: current work color )) |
| 2867 | 如果非链表为空则 |
| 2879 | 加入二个链表项并重新初始化 |
| 2884 | 如果链表为空则 |
| 2886 | 退出 |
| 2896 | 删除链表项并重新初始化 |
| 2897 | WQ: first flusher 等于next |
| 2906 | WQ: first flusher = NULL |
| 2909 | out_unlock : |
| 2910 | mutex_unlock( & protects this wq ) |
| 名称 | 描述 |
|---|---|
| drain_workqueue | drain_workqueue - drain a workqueue*@wq: workqueue to drain* Wait until the workqueue becomes empty. While draining is in progress,* only chain queueing is allowed. IOW, only currently pending or running |
| __test_cycle | |
| stress | |
| cgroup1_pidlist_destroy_all | Used to destroy all pidlists lingering waiting for destroy timer. None* should be left afterwards. |
| cpuset_post_attach | |
| cpuset_write_resmask | Common handling for a write to a "cpus" or "mems" file. |
| flush_scheduled_work | lush_scheduled_work - ensure that any scheduled work has run to completion.* Forces execution of the kernel-global workqueue and blocks until its* completion.* Think twice before calling this function! It's very easy to get into |
| blk_flush_integrity |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |