netgraph7: convert lockmgr locks into mutexes.
authorNuno Antunes <nuno.antunes@gmail.com>
Fri, 18 Nov 2011 20:45:06 +0000 (20:45 +0000)
committerNuno Antunes <nuno.antunes@gmail.com>
Tue, 10 Jan 2012 14:10:35 +0000 (14:10 +0000)
sys/netgraph7/dragonfly.h
sys/netgraph7/l2tp/ng_l2tp.c
sys/netgraph7/netflow/netflow.c
sys/netgraph7/netgraph.h
sys/netgraph7/netgraph/ng_base.c
sys/netgraph7/ppp/ng_ppp.c
sys/netgraph7/pppoe/ng_pppoe.c
sys/netgraph7/pptpgre/ng_pptpgre.c
sys/netgraph7/socket/ng_socket.c

index 9ee5c15..dd6f6dd 100644 (file)
@@ -45,29 +45,13 @@ typedef __va_list   va_list;
 #define va_start(ap,last)      __va_start(ap,last)
 #define va_end(ap)     __va_end(ap)
 
-/* Temporary lock stuff */
-int lock_sleep(void *, int, const char *, int, struct lock *);
-int lockstatus_owned(struct lock *, struct thread *);
-/* End Temporary lock stuff */
-
-struct mtx {
-       struct lock     lock;
-};
-
-#define MA_OWNED LK_EXCLUSIVE
-#define MA_NOTOWNED 0
-#define mtx_contested(mtx)     0
+/*
+#define mtx_assert(mtx, MA_OWNED)              \
+                       KKASSERT(mtx_owned(&(mtx)->lock))
 
-#define mtx_lock(mtx)  lockmgr(&(mtx)->lock, LK_EXCLUSIVE|LK_RETRY)
-#define mtx_unlock(mtx)        lockmgr(&(mtx)->lock, LK_RELEASE)
-#define mtx_assert(mtx, mode)          \
-                       KKASSERT(lockstatus(&(mtx)->lock, curthread) == mode)
-#define mtx_init(mtx, name, something, type)   \
-                       lockinit(&(mtx)->lock, name, 0, 0)
-#define mtx_destroy(mtx)                       \
-                       lockuninit(&(mtx)->lock)
-#define mtx_trylock(mtx)                       \
-                       (lockmgr(&(mtx)->lock, LK_EXCLUSIVE|LK_NOWAIT) == 0)
+#define mtx_assert(mtx, MA_NOTOWNED)           \
+                       KKASSERT(mtx_notowned(&(mtx)->lock))
+*/
 
 #define IFNET_RLOCK()  crit_enter()
 #define IFNET_RUNLOCK()        crit_exit()
index 2a091f0..3523d67 100644 (file)
@@ -683,7 +683,7 @@ ng_l2tp_shutdown(node_p node)
        ng_uncallout(&seq->rack_timer, node);
        ng_uncallout(&seq->xack_timer, node);
 
-       mtx_destroy(&seq->mtx);
+       mtx_uninit(&seq->mtx);
 
        kfree(priv, M_NETGRAPH_L2TP);
 
@@ -1219,7 +1219,7 @@ ng_l2tp_seq_init(priv_p priv)
        seq->ssth = seq->wmax;
        ng_callout_init(&seq->rack_timer);
        ng_callout_init(&seq->xack_timer);
-       mtx_init(&seq->mtx, "ng_l2tp", NULL, MTX_DEF);
+       mtx_init(&seq->mtx);
        L2TP_SEQ_CHECK(seq);
 }
 
index b3a3500..70f68cf 100644 (file)
@@ -240,7 +240,7 @@ hash_insert(priv_p priv, struct flow_hash_entry  *hsh, struct flow_rec *r,
        struct sockaddr_in sin;
        struct rtentry *rt;
 
-       mtx_assert(&hsh->mtx, MA_OWNED);
+       KKASSERT(mtx_owned(&hsh->mtx));
 
        fle = uma_zalloc_arg(priv->zone, priv, M_WAITOK | M_NULLOK);
        if (fle == NULL) {
index 02be506..95a3707 100644 (file)
 #endif
 
 #include <sys/queue.h>
-#include <sys/lock.h>
 #include <sys/malloc.h>
 #include <sys/module.h>
-/*#include <sys/mutex.h>*/
+#include <sys/mutex2.h>
 #include "dragonfly.h"
 
 #ifdef HAVE_KERNEL_OPTION_HEADERS
index 4863c73..c3208f8 100644 (file)
@@ -58,6 +58,7 @@
 #include <sys/malloc.h>
 #include <sys/mbuf.h>
 #include <sys/msgport2.h>
+#include <sys/mutex2.h>
 #include <sys/queue.h>
 #include <sys/sysctl.h>
 #include <sys/syslog.h>
@@ -176,7 +177,7 @@ static struct mtx   ng_idhash_mtx;
 #define NG_IDHASH_FN(ID) ((ID) % (NG_ID_HASH_SIZE))
 #define NG_IDHASH_FIND(ID, node)                                       \
        do {                                                            \
-               mtx_assert(&ng_idhash_mtx, MA_OWNED);                   \
+               KKASSERT(mtx_owned(&ng_idhash_mtx));                    \
                LIST_FOREACH(node, &ng_ID_hash[NG_IDHASH_FN(ID)],       \
                                                nd_idnodes) {           \
                        if (NG_NODE_IS_VALID(node)                      \
@@ -245,13 +246,13 @@ MALLOC_DEFINE(M_NETGRAPH_MSG, "netgraph_msg", "netgraph name storage");
            M_WAITOK | M_NULLOK | M_ZERO)
 
 #define        NG_QUEUE_LOCK_INIT(n)                   \
-       mtx_init(&(n)->q_mtx, "ng_node", NULL, MTX_DEF)
+       mtx_init(&(n)->q_mtx)
 #define        NG_QUEUE_LOCK(n)                        \
        mtx_lock(&(n)->q_mtx)
 #define        NG_QUEUE_UNLOCK(n)                      \
        mtx_unlock(&(n)->q_mtx)
 #define        NG_WORKLIST_LOCK_INIT()                 \
-       mtx_init(&ng_worklist_mtx, "ng_worklist", NULL, MTX_DEF)
+       mtx_init(&ng_worklist_mtx)
 #define        NG_WORKLIST_LOCK()                      \
        mtx_lock(&ng_worklist_mtx)
 #define        NG_WORKLIST_UNLOCK()                    \
@@ -786,7 +787,7 @@ ng_unref_node(node_p node)
                LIST_REMOVE(node, nd_idnodes);
                mtx_unlock(&ng_idhash_mtx);
 
-               mtx_destroy(&node->nd_input_queue.q_mtx);
+               mtx_uninit(&node->nd_input_queue.q_mtx);
                NG_FREE_NODE(node);
        }
        return (v - 1);
@@ -1113,7 +1114,7 @@ ng_destroy_hook(hook_p hook)
        } else
                mtx_unlock(&ng_topo_mtx);
 
-       mtx_assert(&ng_topo_mtx, MA_NOTOWNED);
+       KKASSERT(mtx_notowned(&ng_topo_mtx));
 
        /*
         * Remove the hook from the node's list to avoid possible recursion
@@ -1869,7 +1870,7 @@ ng_dequeue(node_p node, int *rw)
        struct ng_queue *ngq = &node->nd_input_queue;
 
        /* This MUST be called with the mutex held. */
-       mtx_assert(&ngq->q_mtx, MA_OWNED);
+       KKASSERT(mtx_owned(&ngq->q_mtx));
 
        /* If there is nothing queued, then just return. */
        if (!QUEUE_ACTIVE(ngq)) {
@@ -3053,19 +3054,13 @@ ngb_mod_event(module_t mod, int event, void *data)
        case MOD_LOAD:
                /* Initialize everything. */
                NG_WORKLIST_LOCK_INIT();
-               mtx_init(&ng_typelist_mtx, "netgraph types mutex", NULL,
-                   MTX_DEF);
-               mtx_init(&ng_idhash_mtx, "netgraph idhash mutex", NULL,
-                   MTX_DEF);
-               mtx_init(&ng_namehash_mtx, "netgraph namehash mutex", NULL,
-                   MTX_DEF);
-               mtx_init(&ng_topo_mtx, "netgraph topology mutex", NULL,
-                   MTX_DEF);
+               mtx_init(&ng_typelist_mtx);
+               mtx_init(&ng_idhash_mtx);
+               mtx_init(&ng_namehash_mtx);
+               mtx_init(&ng_topo_mtx);
 #ifdef NETGRAPH_DEBUG
-               mtx_init(&ng_nodelist_mtx, "netgraph nodelist mutex", NULL,
-                   MTX_DEF);
-               mtx_init(&ngq_mtx, "netgraph item list mutex", NULL,
-                   MTX_DEF);
+               mtx_init(&ng_nodelist_mtx);
+               mtx_init(&ngq_mtx);
 #endif
                ng_qzone = uma_zcreate("NetGraph items", sizeof(struct ng_item),
                    NULL, NULL, NULL, NULL, UMA_ALIGN_CACHE, 0);
@@ -3291,7 +3286,7 @@ static void
 ng_worklist_add(node_p node)
 {
 
-       mtx_assert(&node->nd_input_queue.q_mtx, MA_OWNED);
+       KKASSERT(mtx_owned(&node->nd_input_queue.q_mtx));
 
        if ((node->nd_input_queue.q_flags2 & NGQ2_WORKQ) == 0) {
                static struct task ng_task;
index cb0e241..267a9fb 100644 (file)
@@ -509,8 +509,8 @@ ng_ppp_constructor(node_p node)
                priv->links[i].seq = MP_NOSEQ;
        ng_callout_init(&priv->fragTimer);
 
-       mtx_init(&priv->rmtx, "ng_ppp_recv", NULL, MTX_DEF);
-       mtx_init(&priv->xmtx, "ng_ppp_xmit", NULL, MTX_DEF);
+       mtx_init(&priv->rmtx);
+       mtx_init(&priv->xmtx);
 
        /* Done */
        return (0);
@@ -744,8 +744,8 @@ ng_ppp_shutdown(node_p node)
 
        /* Take down netgraph node */
        ng_ppp_frag_reset(node);
-       mtx_destroy(&priv->rmtx);
-       mtx_destroy(&priv->xmtx);
+       mtx_uninit(&priv->rmtx);
+       mtx_uninit(&priv->xmtx);
        bzero(priv, sizeof(*priv));
        kfree(priv, M_NETGRAPH_PPP);
        NG_NODE_SET_PRIVATE(node, NULL);
@@ -1429,7 +1429,7 @@ ng_ppp_rcvdata(hook_p hook, item_p item)
 
        /* Proceed to multilink layer. Mutex will be unlocked inside. */
        error = ng_ppp_mp_recv(node, item, proto, linkNum);
-       mtx_assert(&priv->rmtx, MA_NOTOWNED);
+       KKASSERT(mtx_notowned(&priv->rmtx));
        return (error);
 
 done:
index a4e241f..d028036 100644 (file)
@@ -626,7 +626,7 @@ ng_pppoe_constructor(node_p node)
 
        LIST_INIT(&privp->listeners);
        for (i = 0; i < SESSHASHSIZE; i++) {
-           mtx_init(&privp->sesshash[i].mtx, "PPPoE hash mutex", NULL, MTX_DEF);
+           mtx_init(&privp->sesshash[i].mtx);
            LIST_INIT(&privp->sesshash[i].head);
        }
 
@@ -1696,7 +1696,7 @@ ng_pppoe_shutdown(node_p node)
        int     i;
 
        for (i = 0; i < SESSHASHSIZE; i++)
-           mtx_destroy(&privp->sesshash[i].mtx);
+           mtx_uninit(&privp->sesshash[i].mtx);
        NG_NODE_SET_PRIVATE(node, NULL);
        NG_NODE_UNREF(privp->node);
        kfree(privp, M_NETGRAPH_PPPOE);
index dde5c62..0bf6f99 100644 (file)
@@ -288,7 +288,7 @@ ng_pptpgre_constructor(node_p node)
        NG_NODE_SET_PRIVATE(node, priv);
 
        /* Initialize state */
-       mtx_init(&priv->uppersess.mtx, "ng_pptp", NULL, MTX_DEF);
+       mtx_init(&priv->uppersess.mtx);
        ng_callout_init(&priv->uppersess.sackTimer);
        ng_callout_init(&priv->uppersess.rackTimer);
        priv->uppersess.node = node;
@@ -344,7 +344,7 @@ ng_pptpgre_newhook(node_p node, hook_p hook, const char *name)
                        return (ENOMEM);
        
                /* Initialize state */
-               mtx_init(&hpriv->mtx, "ng_pptp", NULL, MTX_DEF);
+               mtx_init(&hpriv->mtx);
                ng_callout_init(&hpriv->sackTimer);
                ng_callout_init(&hpriv->rackTimer);
                hpriv->conf.cid = cid;
@@ -469,7 +469,7 @@ ng_pptpgre_rcvdata(hook_p hook, item_p item)
 
        rval = ng_pptpgre_xmit(hpriv, item);
 
-       mtx_assert(&hpriv->mtx, MA_NOTOWNED);
+       KKASSERT(mtx_notowned(&hpriv->mtx));
 
        return (rval);
 }
@@ -495,7 +495,7 @@ ng_pptpgre_disconnect(hook_p hook)
                ng_pptpgre_reset(hpriv);
 
                LIST_REMOVE(hpriv, sessions);
-               mtx_destroy(&hpriv->mtx);
+               mtx_uninit(&hpriv->mtx);
                kfree(hpriv, M_NETGRAPH);
        }
 
@@ -518,7 +518,7 @@ ng_pptpgre_shutdown(node_p node)
        ng_pptpgre_reset(&priv->uppersess);
 
        LIST_REMOVE(&priv->uppersess, sessions);
-       mtx_destroy(&priv->uppersess.mtx);
+       mtx_uninit(&priv->uppersess.mtx);
 
        kfree(priv, M_NETGRAPH);
 
@@ -543,7 +543,7 @@ ng_pptpgre_xmit(hpriv_p hpriv, item_p item)
        int grelen, error;
        struct mbuf *m;
 
-       mtx_assert(&hpriv->mtx, MA_OWNED);
+       KKASSERT(mtx_owned(&hpriv->mtx));
 
        if (item) {
                NGI_GET_M(item, m);
@@ -808,7 +808,7 @@ badAck:
                if (extralen > 0)
                        m_adj(m, -extralen);
 
-               mtx_assert(&hpriv->mtx, MA_NOTOWNED);
+               KKASSERT(mtx_notowned(&hpriv->mtx));
 
                /* Deliver frame to upper layers */
                NG_FWD_NEW_DATA(error, item, hpriv->hook, m);
@@ -916,7 +916,7 @@ ng_pptpgre_send_ack_timeout(node_p node, hook_p hook, void *arg1, int arg2)
        mtx_lock(&hpriv->mtx);
        /* Send a frame with an ack but no payload */
        ng_pptpgre_xmit(hpriv, NULL);
-       mtx_assert(&hpriv->mtx, MA_NOTOWNED);
+       KKASSERT(mtx_notowned(&hpriv->mtx));
 }
 
 /*************************************************************************
index 07387d3..8081775 100644 (file)
@@ -343,7 +343,7 @@ ngc_send(netmsg_t netmsg)
 
        mtx_lock(&priv->mtx);
        if (priv->error == -1)
-               lksleep(priv, (struct lock *)&priv->mtx, 0, "ngsock", 0);
+               mtxsleep(priv, &priv->mtx, 0, "ngsock", 0);
        mtx_unlock(&priv->mtx);
        KASSERT(priv->error != -1,
            ("ng_socket: priv->error wasn't updated"));
@@ -581,7 +581,7 @@ ng_attach_cntl(struct socket *so)
        priv->refs++;
 
        /* Initialize mutex. */
-       mtx_init(&priv->mtx, "ng_socket", NULL, MTX_DEF);
+       mtx_init(&priv->mtx);
 
        /* Make the generic node components */
        if ((error = ng_make_node_common(&typestruct, &priv->node)) != 0) {
@@ -669,12 +669,12 @@ ng_detach_common(struct ngpcb *pcbp, int which)
 static void
 ng_socket_free_priv(struct ngsock *priv)
 {
-       mtx_assert(&priv->mtx, MA_OWNED);
+       KKASSERT(mtx_owned(&priv->mtx));
 
        priv->refs--;
 
        if (priv->refs == 0) {
-               mtx_destroy(&priv->mtx);
+               mtx_uninit(&priv->mtx);
                kfree(priv, M_NETGRAPH_SOCK);
                return;
        }