The branch stable/14 has been updated by kib:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=4c82dff1082bc1f8e7d6ae69a3ecd2cc97c2e758

commit 4c82dff1082bc1f8e7d6ae69a3ecd2cc97c2e758
Author:     Konstantin Belousov <k...@freebsd.org>
AuthorDate: 2025-06-22 16:35:23 +0000
Commit:     Konstantin Belousov <k...@freebsd.org>
CommitDate: 2025-07-12 01:41:32 +0000

    dev/mem: use sx instead of rw lock
    
    (cherry picked from commit ca554a7dea3f90f39fc2b7d25813d0be944e12e2)
---
 sys/dev/mem/memutil.c | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/sys/dev/mem/memutil.c b/sys/dev/mem/memutil.c
index 8f296520c348..20ce337df0ab 100644
--- a/sys/dev/mem/memutil.c
+++ b/sys/dev/mem/memutil.c
@@ -26,16 +26,14 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <sys/cdefs.h>
-#include <sys/param.h>
+#include <sys/systm.h>
 #include <sys/kernel.h>
 #include <sys/lock.h>
 #include <sys/malloc.h>
 #include <sys/memrange.h>
-#include <sys/rwlock.h>
-#include <sys/systm.h>
+#include <sys/sx.h>
 
-static struct rwlock   mr_lock;
+static struct sx       mr_lock;
 
 /*
  * Implementation-neutral, kernel-callable functions for manipulating
@@ -47,7 +45,7 @@ mem_range_init(void)
 
        if (mem_range_softc.mr_op == NULL)
                return;
-       rw_init(&mr_lock, "memrange");
+       sx_init(&mr_lock, "memrange");
        mem_range_softc.mr_op->init(&mem_range_softc);
 }
 
@@ -57,7 +55,7 @@ mem_range_destroy(void)
 
        if (mem_range_softc.mr_op == NULL)
                return;
-       rw_destroy(&mr_lock);
+       sx_destroy(&mr_lock);
 }
 
 int
@@ -68,12 +66,12 @@ mem_range_attr_get(struct mem_range_desc *mrd, int *arg)
        if (mem_range_softc.mr_op == NULL)
                return (EOPNOTSUPP);
        nd = *arg;
-       rw_rlock(&mr_lock);
+       sx_slock(&mr_lock);
        if (nd == 0)
                *arg = mem_range_softc.mr_ndesc;
        else
                bcopy(mem_range_softc.mr_desc, mrd, nd * sizeof(*mrd));
-       rw_runlock(&mr_lock);
+       sx_sunlock(&mr_lock);
        return (0);
 }
 
@@ -84,8 +82,8 @@ mem_range_attr_set(struct mem_range_desc *mrd, int *arg)
 
        if (mem_range_softc.mr_op == NULL)
                return (EOPNOTSUPP);
-       rw_wlock(&mr_lock);
+       sx_xlock(&mr_lock);
        ret = mem_range_softc.mr_op->set(&mem_range_softc, mrd, arg);
-       rw_wunlock(&mr_lock);
+       sx_xunlock(&mr_lock);
        return (ret);
 }

Reply via email to