Module Name: src Committed By: ozaki-r Date: Mon Feb 5 05:00:48 UTC 2018
Modified Files: src/sys/rump/librump/rumpkern: locks.c Log Message: Obtain proper initialized addresses of locks allocated by mutex_obj_alloc or rw_obj_alloc Initialized addresses of locks allocated by mutex_obj_alloc or rw_obj_alloc were not useful because the addresses were mutex_obj_alloc or rw_obj_alloc itself. What we want to know are callers of them. (forgot to commit) To generate a diff of this commit: cvs rdiff -u -r1.79 -r1.80 src/sys/rump/librump/rumpkern/locks.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/rump/librump/rumpkern/locks.c diff -u src/sys/rump/librump/rumpkern/locks.c:1.79 src/sys/rump/librump/rumpkern/locks.c:1.80 --- src/sys/rump/librump/rumpkern/locks.c:1.79 Wed Dec 27 09:03:22 2017 +++ src/sys/rump/librump/rumpkern/locks.c Mon Feb 5 05:00:48 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: locks.c,v 1.79 2017/12/27 09:03:22 ozaki-r Exp $ */ +/* $NetBSD: locks.c,v 1.80 2018/02/05 05:00:48 ozaki-r Exp $ */ /* * Copyright (c) 2007-2011 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: locks.c,v 1.79 2017/12/27 09:03:22 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: locks.c,v 1.80 2018/02/05 05:00:48 ozaki-r Exp $"); #include <sys/param.h> #include <sys/kmem.h> @@ -66,9 +66,9 @@ static lockops_t rw_lockops = { .lo_dump = NULL, }; -#define ALLOCK(lock, ops) \ +#define ALLOCK(lock, ops, return_address) \ lockdebug_alloc(__func__, __LINE__, lock, ops, \ - (uintptr_t)__builtin_return_address(0)) + return_address) #define FREELOCK(lock) \ lockdebug_free(__func__, __LINE__, lock) #define WANTLOCK(lock, shar) \ @@ -83,7 +83,7 @@ static lockops_t rw_lockops = { #define BARRIER(lock, slp) \ lockdebug_barrier(__func__, __LINE__, lock, slp) #else -#define ALLOCK(a, b) do {} while (0) +#define ALLOCK(a, b, c) do {} while (0) #define FREELOCK(a) do {} while (0) #define WANTLOCK(a, b) do {} while (0) #define LOCKED(a, b) do {} while (0) @@ -105,8 +105,9 @@ static lockops_t rw_lockops = { #define RUMPMTX(mtx) (*(struct rumpuser_mtx *const*)(mtx)) +void _mutex_init(kmutex_t *, kmutex_type_t, int, uintptr_t); void -mutex_init(kmutex_t *mtx, kmutex_type_t type, int ipl) +_mutex_init(kmutex_t *mtx, kmutex_type_t type, int ipl, uintptr_t return_address) { int ruflags = RUMPUSER_MTX_KMUTEX; int isspin; @@ -135,9 +136,16 @@ mutex_init(kmutex_t *mtx, kmutex_type_t ruflags |= RUMPUSER_MTX_SPIN; rumpuser_mutex_init((struct rumpuser_mtx **)mtx, ruflags); if (isspin) - ALLOCK(mtx, &mutex_spin_lockops); + ALLOCK(mtx, &mutex_spin_lockops, return_address); else - ALLOCK(mtx, &mutex_adaptive_lockops); + ALLOCK(mtx, &mutex_adaptive_lockops, return_address); +} + +void +mutex_init(kmutex_t *mtx, kmutex_type_t type, int ipl) +{ + + _mutex_init(mtx, type, ipl, (uintptr_t)__builtin_return_address(0)); } void @@ -238,14 +246,22 @@ krw2rumprw(const krw_t op) } } +void _rw_init(krwlock_t *, uintptr_t); void -rw_init(krwlock_t *rw) +_rw_init(krwlock_t *rw, uintptr_t return_address) { CTASSERT(sizeof(krwlock_t) >= sizeof(void *)); rumpuser_rw_init((struct rumpuser_rw **)rw); - ALLOCK(rw, &rw_lockops); + ALLOCK(rw, &rw_lockops, return_address); +} + +void +rw_init(krwlock_t *rw) +{ + + _rw_init(rw, (uintptr_t)__builtin_return_address(0)); } void