svn commit: r363836 - head/sys/compat/linuxkpi/common/include/linux
Emmanuel Vadot
manu at FreeBSD.org
Tue Aug 4 14:44:16 UTC 2020
Author: manu
Date: Tue Aug 4 14:44:16 2020
New Revision: 363836
URL: https://svnweb.freebsd.org/changeset/base/363836
Log:
linuxkpi: Add kref_put_lock
Same as kref_put but in addition to calling the rel function it will
acquire the lock first.
Sponsored by: The FreeBSD Foundation
Reviewed by: hselasky, emaste
Differential Revision: https://reviews.freebsd.org/D25942
Modified:
head/sys/compat/linuxkpi/common/include/linux/kref.h
Modified: head/sys/compat/linuxkpi/common/include/linux/kref.h
==============================================================================
--- head/sys/compat/linuxkpi/common/include/linux/kref.h Tue Aug 4 14:42:38 2020 (r363835)
+++ head/sys/compat/linuxkpi/common/include/linux/kref.h Tue Aug 4 14:44:16 2020 (r363836)
@@ -38,6 +38,7 @@
#include <linux/compiler.h>
#include <linux/kernel.h>
#include <linux/mutex.h>
+#include <linux/refcount.h>
#include <asm/atomic.h>
@@ -76,6 +77,20 @@ kref_put(struct kref *kref, void (*rel)(struct kref *k
}
return 0;
}
+
+static inline int
+kref_put_lock(struct kref *kref, void (*rel)(struct kref *kref),
+ spinlock_t *lock)
+{
+
+ if (refcount_release(&kref->refcount.counter)) {
+ spin_lock(lock);
+ rel(kref);
+ return (1);
+ }
+ return (0);
+}
+
static inline int
kref_sub(struct kref *kref, unsigned int count,
More information about the svn-src-head
mailing list