/* SPDX-License-Identifier: GPL-2.0 */#ifndef BTRFS_MISC_H#define BTRFS_MISC_H#include <linux/sched.h>#include <linux/wait.h>#define in_range(b, first, len) ((b) >= (first) && (b) < (first) + (len))staticinlinevoidcond_wake_up(structwait_queue_head*wq){/* * This implies a full smp_mb barrier, see comments for * waitqueue_active why. */if(wq_has_sleeper(wq))wake_up(wq);}staticinlinevoidcond_wake_up_nomb(structwait_queue_head*wq){/* * Special case for conditional wakeup where the barrier required for * waitqueue_active is implied by some of the preceding code. Eg. one * of such atomic operations (atomic_dec_and_return, ...), or a * unlock/lock sequence, etc. */if(waitqueue_active(wq))wake_up(wq);}#endif