Date: Wed, 12 Sep 2007 08:32:21 GMT From: Kip Macy <kmacy@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 126330 for review Message-ID: <200709120832.l8C8WLlm085731@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=126330 Change 126330 by kmacy@kmacy_home:ethng on 2007/09/12 08:31:36 convert radix node head and route locks from mutexes to rwlocks Affected files ... .. //depot/projects/ethng/src/sys/kern/vfs_export.c#2 edit .. //depot/projects/ethng/src/sys/net/if_var.h#5 edit .. //depot/projects/ethng/src/sys/net/radix.c#2 edit .. //depot/projects/ethng/src/sys/net/radix.h#2 edit .. //depot/projects/ethng/src/sys/net/route.c#2 edit .. //depot/projects/ethng/src/sys/net/route.h#2 edit .. //depot/projects/ethng/src/sys/netinet/if_ether.c#2 edit Differences ... ==== //depot/projects/ethng/src/sys/kern/vfs_export.c#2 (text+ko) ==== @@ -45,7 +45,7 @@ #include <sys/malloc.h> #include <sys/mbuf.h> #include <sys/mount.h> -#include <sys/mutex.h> +#include <sys/rwlock.h> #include <sys/refcount.h> #include <sys/socket.h> #include <sys/systm.h> ==== //depot/projects/ethng/src/sys/net/if_var.h#5 (text+ko) ==== @@ -79,7 +79,7 @@ #include <sys/eventhandler.h> #endif /* _KERNEL */ #include <sys/lock.h> /* XXX */ -#include <sys/mutex.h> /* XXX */ +#include <sys/rwlock.h> /* XXX */ #include <sys/event.h> /* XXX */ #include <sys/_task.h> ==== //depot/projects/ethng/src/sys/net/radix.c#2 (text+ko) ==== @@ -37,7 +37,7 @@ #include <sys/param.h> #ifdef _KERNEL #include <sys/lock.h> -#include <sys/mutex.h> +#include <sys/rwlock.h> #include <sys/systm.h> #include <sys/malloc.h> #include <sys/domain.h> ==== //depot/projects/ethng/src/sys/net/radix.h#2 (text+ko) ==== @@ -35,7 +35,7 @@ #ifdef _KERNEL #include <sys/_lock.h> -#include <sys/_mutex.h> +#include <sys/_rwlock.h> #endif #ifdef MALLOC_DECLARE @@ -131,7 +131,7 @@ (struct radix_node *rn, struct radix_node_head *head); struct radix_node rnh_nodes[3]; /* empty tree for common case */ #ifdef _KERNEL - struct mtx rnh_mtx; /* locks entire radix tree */ + struct rwlock rnh_lock; /* locks entire radix tree */ #endif }; @@ -145,11 +145,13 @@ #define Free(p) free((caddr_t)p, M_RTABLE); #define RADIX_NODE_HEAD_LOCK_INIT(rnh) \ - mtx_init(&(rnh)->rnh_mtx, "radix node head", NULL, MTX_DEF | MTX_RECURSE) -#define RADIX_NODE_HEAD_LOCK(rnh) mtx_lock(&(rnh)->rnh_mtx) -#define RADIX_NODE_HEAD_UNLOCK(rnh) mtx_unlock(&(rnh)->rnh_mtx) -#define RADIX_NODE_HEAD_DESTROY(rnh) mtx_destroy(&(rnh)->rnh_mtx) -#define RADIX_NODE_HEAD_LOCK_ASSERT(rnh) mtx_assert(&(rnh)->rnh_mtx, MA_OWNED) +rw_init(&(rnh)->rnh_lock, "radix node head") +#define RADIX_NODE_HEAD_LOCK(rnh) rw_wlock(&(rnh)->rnh_lock) +#define RADIX_NODE_HEAD_UNLOCK(rnh) rw_wunlock(&(rnh)->rnh_lock) +#define RADIX_NODE_HEAD_LOCK_SHARED(rnh) rw_wlock(&(rnh)->rnh_lock) +#define RADIX_NODE_HEAD_UNLOCK_SHARED(rnh) rw_wunlock(&(rnh)->rnh_lock) +#define RADIX_NODE_HEAD_DESTROY(rnh) rw_destroy(&(rnh)->rnh_lock) +#define RADIX_NODE_HEAD_LOCK_ASSERT(rnh) rw_assert(&(rnh)->rnh_lock, RA_LOCKED) #endif /* _KERNEL */ void rn_init(void); ==== //depot/projects/ethng/src/sys/net/route.c#2 (text+ko) ==== ==== //depot/projects/ethng/src/sys/net/route.h#2 (text+ko) ==== @@ -119,7 +119,7 @@ struct rtentry *rt_parent; /* cloning parent of this route */ #ifdef _KERNEL /* XXX ugly, user apps use this definition but don't have a mtx def */ - struct mtx rt_mtx; /* mutex for routing entry */ + struct rwlock rt_lock; /* mutex for routing entry */ #endif }; @@ -287,11 +287,11 @@ #ifdef _KERNEL #define RT_LOCK_INIT(_rt) \ - mtx_init(&(_rt)->rt_mtx, "rtentry", NULL, MTX_DEF | MTX_DUPOK) -#define RT_LOCK(_rt) mtx_lock(&(_rt)->rt_mtx) -#define RT_UNLOCK(_rt) mtx_unlock(&(_rt)->rt_mtx) -#define RT_LOCK_DESTROY(_rt) mtx_destroy(&(_rt)->rt_mtx) -#define RT_LOCK_ASSERT(_rt) mtx_assert(&(_rt)->rt_mtx, MA_OWNED) + rw_init(&(_rt)->rt_lock, "rtentry") +#define RT_LOCK(_rt) rw_wlock(&(_rt)->rt_lock) +#define RT_UNLOCK(_rt) rw_wunlock(&(_rt)->rt_lock) +#define RT_LOCK_DESTROY(_rt) rw_destroy(&(_rt)->rt_lock) +#define RT_LOCK_ASSERT(_rt) rw_assert(&(_rt)->rt_lock, RA_LOCKED) #define RT_ADDREF(_rt) do { \ RT_LOCK_ASSERT(_rt); \ ==== //depot/projects/ethng/src/sys/netinet/if_ether.c#2 (text+ko) ==== @@ -222,8 +222,8 @@ RT_ADDREF(rt); la->la_rt = rt; rt->rt_flags |= RTF_LLINFO; - callout_init_mtx(&la->la_timer, &rt->rt_mtx, - CALLOUT_RETURNUNLOCKED); + callout_init_rwlock(&la->la_timer, &rt->rt_lock, + CALLOUT_RETURNUNLOCKED_RW); #ifdef INET /*
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200709120832.l8C8WLlm085731>