* Wait for all to complete, then prevent it from being enqueued */
| 188 | * Wait for all to complete, then prevent it from being enqueued |
| 189 | */ |
| 190 | void |
| 191 | grouptask_block(struct grouptask *grouptask) |
| 192 | { |
| 193 | struct gtaskqueue *queue = grouptask->gt_taskqueue; |
| 194 | struct gtask *gtask = &grouptask->gt_task; |
| 195 | |
| 196 | #ifdef INVARIANTS |
| 197 | if (queue == NULL) { |
| 198 | gtask_dump(gtask); |
| 199 | panic("queue == NULL"); |
| 200 | } |
| 201 | #endif |
| 202 | TQ_LOCK(queue); |
| 203 | gtask->ta_flags |= TASK_NOENQUEUE; |
| 204 | gtaskqueue_drain_locked(queue, gtask); |
| 205 | TQ_UNLOCK(queue); |
| 206 | } |
| 207 | |
| 208 | void |
| 209 | grouptask_unblock(struct grouptask *grouptask) |
no test coverage detected