Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * include/linux/cpuhplock.h - CPU hotplug locking
4 *
5 * Locking functions for CPU hotplug.
6 */
7#ifndef _LINUX_CPUHPLOCK_H_
8#define _LINUX_CPUHPLOCK_H_
9
10#include <linux/cleanup.h>
11#include <linux/errno.h>
12
13struct device;
14
15extern int lockdep_is_cpus_held(void);
16extern int lockdep_is_cpus_write_held(void);
17
18#ifdef CONFIG_HOTPLUG_CPU
19void cpus_write_lock(void);
20void cpus_write_unlock(void);
21void cpus_read_lock(void);
22void cpus_read_unlock(void);
23int cpus_read_trylock(void);
24void lockdep_assert_cpus_held(void);
25void cpu_hotplug_disable_offlining(void);
26void cpu_hotplug_disable(void);
27void cpu_hotplug_enable(void);
28void clear_tasks_mm_cpumask(int cpu);
29int remove_cpu(unsigned int cpu);
30int cpu_device_down(struct device *dev);
31void smp_shutdown_nonboot_cpus(unsigned int primary_cpu);
32
33#else /* CONFIG_HOTPLUG_CPU */
34
35static inline void cpus_write_lock(void) { }
36static inline void cpus_write_unlock(void) { }
37static inline void cpus_read_lock(void) { }
38static inline void cpus_read_unlock(void) { }
39static inline int cpus_read_trylock(void) { return true; }
40static inline void lockdep_assert_cpus_held(void) { }
41static inline void cpu_hotplug_disable_offlining(void) { }
42static inline void cpu_hotplug_disable(void) { }
43static inline void cpu_hotplug_enable(void) { }
44static inline int remove_cpu(unsigned int cpu) { return -EPERM; }
45static inline void smp_shutdown_nonboot_cpus(unsigned int primary_cpu) { }
46#endif /* !CONFIG_HOTPLUG_CPU */
47
48DEFINE_LOCK_GUARD_0(cpus_read_lock, cpus_read_lock(), cpus_read_unlock())
49
50#endif /* _LINUX_CPUHPLOCK_H_ */