workqueue_cpu_up_callback()创建了其他CPU工作线程 kernel_init()->kernel_init_freeable()->smp_init()->cpu_up()->_cpu_up()->__raw_notifier_call_chain()->workqueue_cpu_up_callback()->create_worker() 在init_workqueues()开头就注册了CPU_PRI_WORKQUEUE_UP处理函数,所以在smp_...
workqueue_cpu_up_callback()创建了其他CPU工作线程 kernel_init()->kernel_init_freeable()->smp_init()->cpu_up()->_cpu_up()->__raw_notifier_call_chain()->workqueue_cpu_up_callback()->create_worker() 在init_workqueues()开头就注册了CPU_PRI_WORKQUEUE_UP处理函数,所以在smp_init()->cpu_...
workqueue_cpu_up_callback()创建了其他CPU工作线程 kernel_init()->kernel_init_freeable()->smp_init()->cpu_up()->_cpu_up()->__raw_notifier_call_chain()->workqueue_cpu_up_callback()->create_worker() 在init_workqueues()开头就注册了CPU_PRI_WORKQUEUE_UP处理函数,所以在smp_...
*/ trace_workqueue_execute_end(work); lock_map_release(&lockdep_map); lock_map_release(&pwq->wq->lockdep_map); if (unlikely(in_atomic() || lockdep_depth(current) > 0)) { pr_err("BUG: workqueue leaked lock or atomic: %s/0x%08x/%d\n" " last function: %pf\n", current->comm,...
wake_up(&wq_manager_wait); return true; } static void maybe_create_worker(struct worker_pool *pool) __releases(&pool->lock) __acquires(&pool->lock) { restart: spin_unlock_irq(&pool->lock); /* if we don't make progress in MAYDAY_INITIAL_TIMEOUT, call for help */ mod_timer(&po...