Module Name: src Committed By: ozaki-r Date: Mon Feb 5 04:25:04 UTC 2018
Modified Files: src/sys/kern: kern_mutex.c kern_mutex_obj.c kern_rwlock.c kern_rwlock_obj.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. To generate a diff of this commit: cvs rdiff -u -r1.70 -r1.71 src/sys/kern/kern_mutex.c cvs rdiff -u -r1.5 -r1.6 src/sys/kern/kern_mutex_obj.c cvs rdiff -u -r1.49 -r1.50 src/sys/kern/kern_rwlock.c cvs rdiff -u -r1.3 -r1.4 src/sys/kern/kern_rwlock_obj.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/kern/kern_mutex.c diff -u src/sys/kern/kern_mutex.c:1.70 src/sys/kern/kern_mutex.c:1.71 --- src/sys/kern/kern_mutex.c:1.70 Tue Jan 30 07:52:22 2018 +++ src/sys/kern/kern_mutex.c Mon Feb 5 04:25:04 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_mutex.c,v 1.70 2018/01/30 07:52:22 ozaki-r Exp $ */ +/* $NetBSD: kern_mutex.c,v 1.71 2018/02/05 04:25:04 ozaki-r Exp $ */ /*- * Copyright (c) 2002, 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -40,7 +40,7 @@ #define __MUTEX_PRIVATE #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_mutex.c,v 1.70 2018/01/30 07:52:22 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_mutex.c,v 1.71 2018/02/05 04:25:04 ozaki-r Exp $"); #include <sys/param.h> #include <sys/atomic.h> @@ -327,8 +327,10 @@ mutex_abort(const char *func, size_t lin * sleeps - see comments in mutex_vector_enter() about releasing * mutexes unlocked. */ +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) { bool dodebug; @@ -354,18 +356,17 @@ mutex_init(kmutex_t *mtx, kmutex_type_t switch (type) { case MUTEX_NODEBUG: - dodebug = LOCKDEBUG_ALLOC(mtx, NULL, - (uintptr_t)__builtin_return_address(0)); + dodebug = LOCKDEBUG_ALLOC(mtx, NULL, return_address); MUTEX_INITIALIZE_SPIN(mtx, dodebug, ipl); break; case MUTEX_ADAPTIVE: dodebug = LOCKDEBUG_ALLOC(mtx, &mutex_adaptive_lockops, - (uintptr_t)__builtin_return_address(0)); + return_address); MUTEX_INITIALIZE_ADAPTIVE(mtx, dodebug); break; case MUTEX_SPIN: dodebug = LOCKDEBUG_ALLOC(mtx, &mutex_spin_lockops, - (uintptr_t)__builtin_return_address(0)); + return_address); MUTEX_INITIALIZE_SPIN(mtx, dodebug, ipl); break; default: @@ -374,6 +375,13 @@ mutex_init(kmutex_t *mtx, kmutex_type_t } } +void +mutex_init(kmutex_t *mtx, kmutex_type_t type, int ipl) +{ + + _mutex_init(mtx, type, ipl, (uintptr_t)__builtin_return_address(0)); +} + /* * mutex_destroy: * Index: src/sys/kern/kern_mutex_obj.c diff -u src/sys/kern/kern_mutex_obj.c:1.5 src/sys/kern/kern_mutex_obj.c:1.6 --- src/sys/kern/kern_mutex_obj.c:1.5 Tue Sep 27 01:02:38 2011 +++ src/sys/kern/kern_mutex_obj.c Mon Feb 5 04:25:04 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_mutex_obj.c,v 1.5 2011/09/27 01:02:38 jym Exp $ */ +/* $NetBSD: kern_mutex_obj.c,v 1.6 2018/02/05 04:25:04 ozaki-r Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_mutex_obj.c,v 1.5 2011/09/27 01:02:38 jym Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_mutex_obj.c,v 1.6 2018/02/05 04:25:04 ozaki-r Exp $"); #include <sys/param.h> #include <sys/atomic.h> @@ -87,9 +87,11 @@ kmutex_t * mutex_obj_alloc(kmutex_type_t type, int ipl) { struct kmutexobj *mo; + extern void _mutex_init(kmutex_t *, kmutex_type_t, int, uintptr_t); mo = pool_cache_get(mutex_obj_cache, PR_WAITOK); - mutex_init(&mo->mo_lock, type, ipl); + _mutex_init(&mo->mo_lock, type, ipl, + (uintptr_t)__builtin_return_address(0)); mo->mo_refcnt = 1; return (kmutex_t *)mo; Index: src/sys/kern/kern_rwlock.c diff -u src/sys/kern/kern_rwlock.c:1.49 src/sys/kern/kern_rwlock.c:1.50 --- src/sys/kern/kern_rwlock.c:1.49 Tue Jan 30 07:52:22 2018 +++ src/sys/kern/kern_rwlock.c Mon Feb 5 04:25:04 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_rwlock.c,v 1.49 2018/01/30 07:52:22 ozaki-r Exp $ */ +/* $NetBSD: kern_rwlock.c,v 1.50 2018/02/05 04:25:04 ozaki-r Exp $ */ /*- * Copyright (c) 2002, 2006, 2007, 2008, 2009 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_rwlock.c,v 1.49 2018/01/30 07:52:22 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_rwlock.c,v 1.50 2018/02/05 04:25:04 ozaki-r Exp $"); #define __RWLOCK_PRIVATE @@ -197,18 +197,25 @@ rw_abort(const char *func, size_t line, * * Initialize a rwlock for use. */ +void _rw_init(krwlock_t *, uintptr_t); void -rw_init(krwlock_t *rw) +_rw_init(krwlock_t *rw, uintptr_t return_address) { bool dodebug; memset(rw, 0, sizeof(*rw)); - dodebug = LOCKDEBUG_ALLOC(rw, &rwlock_lockops, - (uintptr_t)__builtin_return_address(0)); + dodebug = LOCKDEBUG_ALLOC(rw, &rwlock_lockops, return_address); RW_SETDEBUG(rw, dodebug); } +void +rw_init(krwlock_t *rw) +{ + + _rw_init(rw, (uintptr_t)__builtin_return_address(0)); +} + /* * rw_destroy: * Index: src/sys/kern/kern_rwlock_obj.c diff -u src/sys/kern/kern_rwlock_obj.c:1.3 src/sys/kern/kern_rwlock_obj.c:1.4 --- src/sys/kern/kern_rwlock_obj.c:1.3 Fri May 13 22:16:43 2011 +++ src/sys/kern/kern_rwlock_obj.c Mon Feb 5 04:25:04 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_rwlock_obj.c,v 1.3 2011/05/13 22:16:43 rmind Exp $ */ +/* $NetBSD: kern_rwlock_obj.c,v 1.4 2018/02/05 04:25:04 ozaki-r Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_rwlock_obj.c,v 1.3 2011/05/13 22:16:43 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_rwlock_obj.c,v 1.4 2018/02/05 04:25:04 ozaki-r Exp $"); #include <sys/param.h> #include <sys/atomic.h> @@ -87,9 +87,10 @@ krwlock_t * rw_obj_alloc(void) { struct krwobj *ro; + extern void _rw_init(krwlock_t *, uintptr_t); ro = pool_cache_get(rw_obj_cache, PR_WAITOK); - rw_init(&ro->ro_lock); + _rw_init(&ro->ro_lock, (uintptr_t)__builtin_return_address(0)); ro->ro_refcnt = 1; return (krwlock_t *)ro;