1 #ifndef __CPUHOTPLUG_H 2 #define __CPUHOTPLUG_H 3 4 enum cpuhp_state { 5 CPUHP_OFFLINE, 6 CPUHP_CREATE_THREADS, 7 CPUHP_NOTIFY_PREPARE, 8 CPUHP_BRINGUP_CPU, 9 CPUHP_AP_IDLE_DEAD, 10 CPUHP_AP_OFFLINE, 11 CPUHP_AP_SCHED_STARTING, 12 CPUHP_AP_NOTIFY_STARTING, 13 CPUHP_AP_ONLINE, 14 CPUHP_TEARDOWN_CPU, 15 CPUHP_AP_ONLINE_IDLE, 16 CPUHP_AP_SMPBOOT_THREADS, 17 CPUHP_AP_NOTIFY_ONLINE, 18 CPUHP_AP_ONLINE_DYN, 19 CPUHP_AP_ONLINE_DYN_END = CPUHP_AP_ONLINE_DYN + 30, 20 CPUHP_AP_ACTIVE, 21 CPUHP_ONLINE, 22 }; 23 24 int __cpuhp_setup_state(enum cpuhp_state state, const char *name, bool invoke, 25 int (*startup)(unsigned int cpu), 26 int (*teardown)(unsigned int cpu)); 27 28 /** 29 * cpuhp_setup_state - Setup hotplug state callbacks with calling the callbacks 30 * @state: The state for which the calls are installed 31 * @name: Name of the callback (will be used in debug output) 32 * @startup: startup callback function 33 * @teardown: teardown callback function 34 * 35 * Installs the callback functions and invokes the startup callback on 36 * the present cpus which have already reached the @state. 37 */ 38 static inline int cpuhp_setup_state(enum cpuhp_state state, 39 const char *name, 40 int (*startup)(unsigned int cpu), 41 int (*teardown)(unsigned int cpu)) 42 { 43 return __cpuhp_setup_state(state, name, true, startup, teardown); 44 } 45 46 /** 47 * cpuhp_setup_state_nocalls - Setup hotplug state callbacks without calling the 48 * callbacks 49 * @state: The state for which the calls are installed 50 * @name: Name of the callback. 51 * @startup: startup callback function 52 * @teardown: teardown callback function 53 * 54 * Same as @cpuhp_setup_state except that no calls are executed are invoked 55 * during installation of this callback. NOP if SMP=n or HOTPLUG_CPU=n. 56 */ 57 static inline int cpuhp_setup_state_nocalls(enum cpuhp_state state, 58 const char *name, 59 int (*startup)(unsigned int cpu), 60 int (*teardown)(unsigned int cpu)) 61 { 62 return __cpuhp_setup_state(state, name, false, startup, teardown); 63 } 64 65 void __cpuhp_remove_state(enum cpuhp_state state, bool invoke); 66 67 /** 68 * cpuhp_remove_state - Remove hotplug state callbacks and invoke the teardown 69 * @state: The state for which the calls are removed 70 * 71 * Removes the callback functions and invokes the teardown callback on 72 * the present cpus which have already reached the @state. 73 */ 74 static inline void cpuhp_remove_state(enum cpuhp_state state) 75 { 76 __cpuhp_remove_state(state, true); 77 } 78 79 /** 80 * cpuhp_remove_state_nocalls - Remove hotplug state callbacks without invoking 81 * teardown 82 * @state: The state for which the calls are removed 83 */ 84 static inline void cpuhp_remove_state_nocalls(enum cpuhp_state state) 85 { 86 __cpuhp_remove_state(state, false); 87 } 88 89 #ifdef CONFIG_SMP 90 void cpuhp_online_idle(enum cpuhp_state state); 91 #else 92 static inline void cpuhp_online_idle(enum cpuhp_state state) { } 93 #endif 94 95 #endif 96