1195fb517STony Luck /* SPDX-License-Identifier: GPL-2.0 */ 2195fb517STony Luck /* 3195fb517STony Luck * include/linux/cpuhplock.h - CPU hotplug locking 4195fb517STony Luck * 5195fb517STony Luck * Locking functions for CPU hotplug. 6195fb517STony Luck */ 7195fb517STony Luck #ifndef _LINUX_CPUHPLOCK_H_ 8195fb517STony Luck #define _LINUX_CPUHPLOCK_H_ 9195fb517STony Luck 10195fb517STony Luck #include <linux/cleanup.h> 11195fb517STony Luck #include <linux/errno.h> 12195fb517STony Luck 13195fb517STony Luck struct device; 14195fb517STony Luck 15195fb517STony Luck extern int lockdep_is_cpus_held(void); 16195fb517STony Luck 17195fb517STony Luck #ifdef CONFIG_HOTPLUG_CPU 18ddefcfdeSTony Luck void cpus_write_lock(void); 19ddefcfdeSTony Luck void cpus_write_unlock(void); 20ddefcfdeSTony Luck void cpus_read_lock(void); 21ddefcfdeSTony Luck void cpus_read_unlock(void); 22ddefcfdeSTony Luck int cpus_read_trylock(void); 23ddefcfdeSTony Luck void lockdep_assert_cpus_held(void); 24*1037e4c5SKirill A. Shutemov void cpu_hotplug_disable_offlining(void); 25ddefcfdeSTony Luck void cpu_hotplug_disable(void); 26ddefcfdeSTony Luck void cpu_hotplug_enable(void); 27195fb517STony Luck void clear_tasks_mm_cpumask(int cpu); 28195fb517STony Luck int remove_cpu(unsigned int cpu); 29195fb517STony Luck int cpu_device_down(struct device *dev); 30ddefcfdeSTony Luck void smp_shutdown_nonboot_cpus(unsigned int primary_cpu); 31195fb517STony Luck 32195fb517STony Luck #else /* CONFIG_HOTPLUG_CPU */ 33195fb517STony Luck cpus_write_lock(void)34195fb517STony Luckstatic inline void cpus_write_lock(void) { } cpus_write_unlock(void)35195fb517STony Luckstatic inline void cpus_write_unlock(void) { } cpus_read_lock(void)36195fb517STony Luckstatic inline void cpus_read_lock(void) { } cpus_read_unlock(void)37195fb517STony Luckstatic inline void cpus_read_unlock(void) { } cpus_read_trylock(void)38195fb517STony Luckstatic inline int cpus_read_trylock(void) { return true; } lockdep_assert_cpus_held(void)39195fb517STony Luckstatic inline void lockdep_assert_cpus_held(void) { } cpu_hotplug_disable_offlining(void)40*1037e4c5SKirill A. Shutemovstatic inline void cpu_hotplug_disable_offlining(void) { } cpu_hotplug_disable(void)41195fb517STony Luckstatic inline void cpu_hotplug_disable(void) { } cpu_hotplug_enable(void)42195fb517STony Luckstatic inline void cpu_hotplug_enable(void) { } remove_cpu(unsigned int cpu)43195fb517STony Luckstatic inline int remove_cpu(unsigned int cpu) { return -EPERM; } smp_shutdown_nonboot_cpus(unsigned int primary_cpu)44195fb517STony Luckstatic inline void smp_shutdown_nonboot_cpus(unsigned int primary_cpu) { } 45195fb517STony Luck #endif /* !CONFIG_HOTPLUG_CPU */ 46195fb517STony Luck 47195fb517STony Luck DEFINE_LOCK_GUARD_0(cpus_read_lock, cpus_read_lock(), cpus_read_unlock()) 48195fb517STony Luck 49195fb517STony Luck #endif /* _LINUX_CPUHPLOCK_H_ */ 50