| 1729 | } |
| 1730 | |
| 1731 | void SC::AsyncEventLoop::Internal::executeCancellationCallbacks(AsyncEventLoop& eventLoop) |
| 1732 | { |
| 1733 | AsyncRequest* async = cancellations.front; |
| 1734 | while (async) |
| 1735 | { |
| 1736 | AsyncRequest* next = async->next; |
| 1737 | SC_ASYNC_ASSERT_RELEASE(async->state == AsyncRequest::State::Cancelling); |
| 1738 | if (async->flags & Flag_WaitingKernelCancel) |
| 1739 | { |
| 1740 | // Keep polling until kernel cancellation packet is drained. |
| 1741 | hasPendingKernelCancellations = true; |
| 1742 | async = next; |
| 1743 | continue; |
| 1744 | } |
| 1745 | completeCancellation(eventLoop, *async); |
| 1746 | async = next; |
| 1747 | } |
| 1748 | } |
| 1749 | |
| 1750 | void SC::AsyncEventLoop::Internal::completeCancellation(AsyncEventLoop& eventLoop, AsyncRequest& async) |
| 1751 | { |