This will be used to implement an inline function to query whether %current is a workqueue worker and, if so, allow determining which work item it's executing.
Showing the changes to kernel/workqueue.c (1 of 2 files). Show all
Unified · Split
| @@ -122,37 +122,7 @@ enum { · 121 unmodified lines | ||
| 122 | 122 | * W: workqueue_lock protected. |
| 123 | 123 | */ |
| 124 | 124 | |
| 125 | −struct global_cwq; | |
| 126 | −struct worker_pool; | |
| 127 | − | |
| 128 | −/* | |
| 129 | − * The poor guys doing the actual heavy lifting. All on-duty workers | |
| 130 | − * are either serving the manager role, on idle list or on busy hash. | |
| 131 | − */ | |
| 132 | −struct worker { | |
| 133 | − /* on idle list while idle, on busy hash table while busy */ | |
| 134 | − union { | |
| 135 | − struct list_head entry; /* L: while idle */ | |
| 136 | − struct hlist_node hentry; /* L: while busy */ | |
| 137 | − }; | |
| 138 | − | |
| 139 | − struct work_struct *current_work; /* L: work being processed */ | |
| 140 | − work_func_t current_func; /* L: current_work's fn */ | |
| 141 | − struct cpu_workqueue_struct *current_cwq; /* L: current_work's cwq */ | |
| 142 | − struct list_head scheduled; /* L: scheduled works */ | |
| 143 | − struct task_struct *task; /* I: worker task */ | |
| 144 | − struct worker_pool *pool; /* I: the associated pool */ | |
| 145 | − /* 64 bytes boundary on 64bit, 32 on 32bit */ | |
| 146 | − unsigned long last_active; /* L: last active timestamp */ | |
| 147 | − unsigned int flags; /* X: flags */ | |
| 148 | − int id; /* I: worker id */ | |
| 149 | − | |
| 150 | − /* for rebinding worker to CPU */ | |
| 151 | − struct work_struct rebind_work; /* L: for busy worker */ | |
| 152 | − | |
| 153 | − /* used only by rescuers to point to the target workqueue */ | |
| 154 | − struct workqueue_struct *rescue_wq; /* I: the workqueue to rescue */ | |
| 155 | −}; | |
| 125 | +/* struct worker is defined in workqueue_internal.h */ | |
| 156 | 126 | |
| 157 | 127 | struct worker_pool { |
| 158 | 128 | struct global_cwq *gcwq; /* I: the owning gcwq */ |