void kbase_event_cleanup(kbase_context *kctx) { KBASE_DEBUG_ASSERT(kctx); KBASE_DEBUG_ASSERT(kctx->event_workq); flush_workqueue(kctx->event_workq); destroy_workqueue(kctx->event_workq); /* We use kbase_event_dequeue to remove the remaining events as that * deals with all the cleanup needed for the atoms. * * Note: use of kctx->event_list without a lock is safe because this must be the last * thread using it (because we're about to terminate the lock) */ while (!list_empty(&kctx->event_list)) { base_jd_event_v2 event; kbase_event_dequeue(kctx, &event); } }
void kbase_event_cleanup(kbase_context *kctx) { OSK_ASSERT(kctx); osk_workq_flush(&kctx->event_workq); osk_workq_term(&kctx->event_workq); /* We use kbase_event_dequeue to remove the remaining events as that * deals with all the cleanup needed for the atoms. * * Note: use of kctx->event_list without a lock is safe because this must be the last * thread using it (because we're about to terminate the lock) */ while (!OSK_DLIST_IS_EMPTY(&kctx->event_list)) { base_jd_event_v2 event; kbase_event_dequeue(kctx, &event); } }