summaryrefslogtreecommitdiffstats
path: root/sys/net
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2012-01-05 18:35:49 +0000
committerjhb <jhb@FreeBSD.org>2012-01-05 18:35:49 +0000
commit219e62f17ed5852c0d61721758ef94a0587939f4 (patch)
tree7a5b5fe37e76ef46452b79d476703ddce2dc38bd /sys/net
parentabacd98b68448d7389f4eafd53f9c85b050d8397 (diff)
downloadFreeBSD-src-219e62f17ed5852c0d61721758ef94a0587939f4.zip
FreeBSD-src-219e62f17ed5852c0d61721758ef94a0587939f4.tar.gz
Add new variants of the IF_ADDR_*LOCK*() macros used for protecting
interface address lists that distinguish read locks from write locks. To preserve the KPI, the previous operations are mapped to the write lock macros. The lock is still kept as a mutex for now. Reviewed by: bz MFC after: 2 weeks
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/if_var.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/net/if_var.h b/sys/net/if_var.h
index ea60944..e78f287 100644
--- a/sys/net/if_var.h
+++ b/sys/net/if_var.h
@@ -249,9 +249,15 @@ typedef void if_init_f_t(void *);
#define IF_ADDR_LOCK_INIT(if) mtx_init(&(if)->if_addr_mtx, \
"if_addr_mtx", NULL, MTX_DEF)
#define IF_ADDR_LOCK_DESTROY(if) mtx_destroy(&(if)->if_addr_mtx)
-#define IF_ADDR_LOCK(if) mtx_lock(&(if)->if_addr_mtx)
-#define IF_ADDR_UNLOCK(if) mtx_unlock(&(if)->if_addr_mtx)
+#define IF_ADDR_WLOCK(if) mtx_lock(&(if)->if_addr_mtx)
+#define IF_ADDR_WUNLOCK(if) mtx_unlock(&(if)->if_addr_mtx)
+#define IF_ADDR_RLOCK(if) mtx_lock(&(if)->if_addr_mtx)
+#define IF_ADDR_RUNLOCK(if) mtx_unlock(&(if)->if_addr_mtx)
#define IF_ADDR_LOCK_ASSERT(if) mtx_assert(&(if)->if_addr_mtx, MA_OWNED)
+#define IF_ADDR_WLOCK_ASSERT(if) mtx_assert(&(if)->if_addr_mtx, MA_OWNED)
+/* XXX: Compat. */
+#define IF_ADDR_LOCK(if) IF_ADDR_WLOCK(if)
+#define IF_ADDR_UNLOCK(if) IF_ADDR_WUNLOCK(if)
/*
* Function variations on locking macros intended to be used by loadable
OpenPOWER on IntegriCloud