From acd100f2ac18ee3b51a650901b5fdf67d87391f8 Mon Sep 17 00:00:00 2001 From: rmind Date: Sun, 7 Aug 2011 13:51:37 +0000 Subject: [PATCH] Convert ppp_list_lock to mutex(9). --- sys/net/if_ppp.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/sys/net/if_ppp.c b/sys/net/if_ppp.c index a17dedfb642b..47bfa7920eda 100644 --- a/sys/net/if_ppp.c +++ b/sys/net/if_ppp.c @@ -1,4 +1,4 @@ -/* $NetBSD: if_ppp.c,v 1.133 2011/04/02 08:11:32 mbalmer Exp $ */ +/* $NetBSD: if_ppp.c,v 1.134 2011/08/07 13:51:37 rmind Exp $ */ /* Id: if_ppp.c,v 1.6 1997/03/04 03:33:00 paulus Exp */ /* @@ -102,7 +102,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: if_ppp.c,v 1.133 2011/04/02 08:11:32 mbalmer Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ppp.c,v 1.134 2011/08/07 13:51:37 rmind Exp $"); #include "ppp.h" @@ -130,7 +130,6 @@ __KERNEL_RCSID(0, "$NetBSD: if_ppp.c,v 1.133 2011/04/02 08:11:32 mbalmer Exp $") #include #include #include -#include #include #include @@ -205,12 +204,11 @@ static int ppp_clone_destroy(struct ifnet *); static struct ppp_softc *ppp_create(const char *, int); static LIST_HEAD(, ppp_softc) ppp_softc_list; +static kmutex_t ppp_list_lock; struct if_clone ppp_cloner = IF_CLONE_INITIALIZER("ppp", ppp_clone_create, ppp_clone_destroy); -static struct simplelock ppp_list_mutex = SIMPLELOCK_INITIALIZER; - #ifdef PPP_COMPRESS ONCE_DECL(ppp_compressor_mtx_init); static LIST_HEAD(, compressor) ppp_compressors = { NULL }; @@ -232,6 +230,8 @@ pppattach(void) if (ttyldisc_attach(&ppp_disc) != 0) panic("pppattach"); + + mutex_init(&ppp_list_lock, MUTEX_DEFAULT, IPL_NONE); LIST_INIT(&ppp_softc_list); if_clone_attach(&ppp_cloner); RUN_ONCE(&ppp_compressor_mtx_init, ppp_compressor_init); @@ -244,7 +244,7 @@ ppp_create(const char *name, int unit) sc = malloc(sizeof(*sc), M_DEVBUF, M_WAIT|M_ZERO); - simple_lock(&ppp_list_mutex); + mutex_enter(&ppp_list_lock); if (unit == -1) { int i = 0; LIST_FOREACH(sci, &ppp_softc_list, sc_iflist) { @@ -280,7 +280,7 @@ ppp_create(const char *name, int unit) else LIST_INSERT_HEAD(&ppp_softc_list, sc, sc_iflist); - simple_unlock(&ppp_list_mutex); + mutex_exit(&ppp_list_lock); if_initname(&sc->sc_if, name, sc->sc_unit = unit); callout_init(&sc->sc_timo_ch, 0); @@ -322,9 +322,9 @@ ppp_clone_destroy(struct ifnet *ifp) if (sc->sc_devp != NULL) return EBUSY; /* Not removing it */ - simple_lock(&ppp_list_mutex); + mutex_enter(&ppp_list_lock); LIST_REMOVE(sc, sc_iflist); - simple_unlock(&ppp_list_mutex); + mutex_exit(&ppp_list_lock); bpf_detach(ifp); if_detach(ifp); @@ -342,18 +342,17 @@ pppalloc(pid_t pid) struct ppp_softc *sc = NULL, *scf; int i; - simple_lock(&ppp_list_mutex); - for (scf = LIST_FIRST(&ppp_softc_list); scf != NULL; - scf = LIST_NEXT(scf, sc_iflist)) { + mutex_enter(&ppp_list_lock); + LIST_FOREACH(scf, &ppp_softc_list, sc_iflist) { if (scf->sc_xfer == pid) { scf->sc_xfer = 0; - simple_unlock(&ppp_list_mutex); + mutex_exit(&ppp_list_lock); return scf; } if (scf->sc_devp == NULL && sc == NULL) sc = scf; } - simple_unlock(&ppp_list_mutex); + mutex_exit(&ppp_list_lock); if (sc == NULL) sc = ppp_create(ppp_cloner.ifc_name, -1);