void __init lockup_detector_init(void) { if (smpboot_register_percpu_thread(&watchdog_threads)) { pr_err("Failed to create watchdog threads, disabled\n"); watchdog_disabled = -ENODEV; } }
static int cpu_boost_init(void) { int cpu, ret; struct cpu_sync *s; cpufreq_register_notifier(&boost_adjust_nb, CPUFREQ_POLICY_NOTIFIER); cpu_boost_wq = alloc_workqueue("cpuboost_wq", WQ_HIGHPRI, 0); if (!cpu_boost_wq) return -EFAULT; INIT_WORK(&input_boost_work, do_input_boost); for_each_possible_cpu(cpu) { s = &per_cpu(sync_info, cpu); s->cpu = cpu; spin_lock_init(&s->lock); INIT_DELAYED_WORK(&s->boost_rem, do_boost_rem); INIT_DELAYED_WORK(&s->input_boost_rem, do_input_boost_rem); } atomic_notifier_chain_register(&migration_notifier_head, &boost_migration_nb); ret = smpboot_register_percpu_thread(&cpuboost_threads); if (ret) pr_err("Cannot register cpuboost threads.\n"); ret = input_register_handler(&cpuboost_input_handler); if (ret) pr_err("Cannot register cpuboost input handler.\n"); return ret; }
static __init int spawn_ksoftirqd(void) { register_cpu_notifier(&cpu_nfb); BUG_ON(smpboot_register_percpu_thread(&softirq_threads)); return 0; }
static __init int spawn_ksoftirqd(void) { cpuhp_setup_state_nocalls(CPUHP_SOFTIRQ_DEAD, "softirq:dead", NULL, takeover_tasklets); BUG_ON(smpboot_register_percpu_thread(&softirq_threads)); return 0; }
static int watchdog_enable_all_cpus(bool sample_period_changed) { int err = 0; if (!watchdog_running) { err = smpboot_register_percpu_thread(&watchdog_threads); if (err) pr_err("Failed to create watchdog threads, disabled\n"); else watchdog_running = 1; } else if (sample_period_changed) { update_timers_all_cpus(); } return err; }
void __init cpuhp_threads_init(void) { BUG_ON(smpboot_register_percpu_thread(&cpuhp_threads)); kthread_unpark(this_cpu_read(cpuhp_state.thread)); }
static __init int spawn_my_hotplug_threads(void){ BUG_ON(smpboot_register_percpu_thread(&my_hotplug_threads)); return 0; }