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
This commit is contained in:
Neel Chauhan 2021-04-26 08:15:49 -07:00
parent 057f145aae
commit ce65353ac1
2 changed files with 14 additions and 1 deletions

View File

@ -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_ */

View File

@ -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,