void CommOS_StopIO(void) { int cpu; if (running) { running = 0; if (aioWQ) { FlushWorkqueue(aioWQ); DestroyWorkqueue(aioWQ); aioWQ = NULL; } FlushWorkqueue(dispatchWQ); #ifdef CONFIG_HOTPLUG_CPU unregister_hotcpu_notifier(&CpuNotifier); #endif for_each_possible_cpu(cpu) { WaitForDelayedWork(&dispatchWorksNow[cpu]); WaitForDelayedWork(&dispatchWorks[cpu]); } DestroyWorkqueue(dispatchWQ); dispatchWQ = NULL; commos_info("%s: I/O tasks stopped.\n", __func__); } }
void CommOS_StopIO(void) { int cpu; if (running) { running = 0; if (aioWQ) { FlushWorkqueue(aioWQ); DestroyWorkqueue(aioWQ); aioWQ = NULL; } FlushWorkqueue(dispatchWQ); for (cpu = 0; cpu < numCpus; cpu++) { WaitForDelayedWork(&dispatchWorksNow[cpu]); WaitForDelayedWork(&dispatchWorks[cpu]); } DestroyWorkqueue(dispatchWQ); dispatchWQ = NULL; CommOS_Log(("%s: I/O tasks stopped.\n", __FUNCTION__)); } }