/* SPDX-License-Identifier: GPL-2.0 */ #ifndef PREEMPT_H #define PREEMPT_H #include <stdbool.h> #include "bug_on.h" /* This flag contains garbage if preempt_disable_count is 0. */ extern __thread int thread_cpu_id; /* Support recursive preemption disabling. */ extern __thread int preempt_disable_count; void preempt_disable(void); void preempt_enable(void); static inline void preempt_disable_notrace(void) { preempt_disable(); } static inline void preempt_enable_no_resched(void) { preempt_enable(); } static inline void preempt_enable_notrace(void) { preempt_enable(); } static inline int preempt_count(void) { return preempt_disable_count; } static inline bool preemptible(void) { return !preempt_count(); } static inline int get_cpu(void) { preempt_disable(); return thread_cpu_id; } static inline void put_cpu(void) { preempt_enable(); } static inline void might_sleep(void) { BUG_ON(preempt_disable_count); } #endif