diff options
author | Neel Chauhan <nc@FreeBSD.org> | 2021-04-26 15:15:49 +0000 |
---|---|---|
committer | Neel Chauhan <nc@FreeBSD.org> | 2021-04-26 15:15:49 +0000 |
commit | ce65353ac1a17677bef03e96df8da967c9086743 (patch) | |
tree | 121d41128e52d25ef18256c28dfbea9a105a2c3b | |
parent | 057f145aae9a3528ccd722c8f566d740d5cafcbb (diff) | |
download | src-ce65353ac1a17677bef03e96df8da967c9086743.tar.gz src-ce65353ac1a17677bef03e96df8da967c9086743.zip |
linuxkpi: Implement atomic_dec_and_lock_irqsave()
This is needed by the drm-kmod 5.5 update.
Reviewed by: hselasky, manu
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D29988
-rw-r--r-- | sys/compat/linuxkpi/common/include/linux/spinlock.h | 13 | ||||
-rw-r--r-- | sys/sys/param.h | 2 |
2 files changed, 14 insertions, 1 deletions
diff --git a/sys/compat/linuxkpi/common/include/linux/spinlock.h b/sys/compat/linuxkpi/common/include/linux/spinlock.h index 2309794b26ec..7ef474b671dc 100644 --- a/sys/compat/linuxkpi/common/include/linux/spinlock.h +++ b/sys/compat/linuxkpi/common/include/linux/spinlock.h @@ -31,6 +31,7 @@ #ifndef _LINUX_SPINLOCK_H_ #define _LINUX_SPINLOCK_H_ +#include <asm/atomic.h> #include <sys/param.h> #include <sys/kernel.h> #include <sys/lock.h> @@ -160,4 +161,16 @@ spin_lock_destroy(spinlock_t *lock) mtx_assert(&(_l)->m, MA_OWNED); \ } while (0) +static inline int +atomic_dec_and_lock_irqsave(atomic_t *cnt, spinlock_t *lock, + unsigned long flags) +{ + spin_lock_irqsave(lock, flags); + if (atomic_dec_and_test(cnt)) { + return (1); + } + spin_unlock_irqrestore(lock, flags); + return (0); +} + #endif /* _LINUX_SPINLOCK_H_ */ diff --git a/sys/sys/param.h b/sys/sys/param.h index e4fdb272b7fe..4f80ad5972a4 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -60,7 +60,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1400010 /* Master, propagated to newvers */ +#define __FreeBSD_version 1400011 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, |