From owner-p4-projects@FreeBSD.ORG Wed Sep 12 08:32:22 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CFFF616A41B; Wed, 12 Sep 2007 08:32:21 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8DB5416A419 for ; Wed, 12 Sep 2007 08:32:21 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 7965113C465 for ; Wed, 12 Sep 2007 08:32:21 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l8C8WLfA085734 for ; Wed, 12 Sep 2007 08:32:21 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l8C8WLlm085731 for perforce@freebsd.org; Wed, 12 Sep 2007 08:32:21 GMT (envelope-from kmacy@freebsd.org) Date: Wed, 12 Sep 2007 08:32:21 GMT Message-Id: <200709120832.l8C8WLlm085731@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 126330 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Sep 2007 08:32:22 -0000 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 #include #include -#include +#include #include #include #include ==== //depot/projects/ethng/src/sys/net/if_var.h#5 (text+ko) ==== @@ -79,7 +79,7 @@ #include #endif /* _KERNEL */ #include /* XXX */ -#include /* XXX */ +#include /* XXX */ #include /* XXX */ #include ==== //depot/projects/ethng/src/sys/net/radix.c#2 (text+ko) ==== @@ -37,7 +37,7 @@ #include #ifdef _KERNEL #include -#include +#include #include #include #include ==== //depot/projects/ethng/src/sys/net/radix.h#2 (text+ko) ==== @@ -35,7 +35,7 @@ #ifdef _KERNEL #include -#include +#include #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 /*