From eb5977a0b5b02c388aa2a2a7fade896023561f34 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alejandro=20R=2E=20Sede=C3=B1o?= Date: Fri, 5 Nov 2010 17:24:43 -0400 Subject: [PATCH] Linux: use DEFINE_MUTEX for afs_linux_alloc_sem on newer kernels MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit DECLARE_MUTEX is gone as of 2.6.37; afs_global_lock switches from DECLARE_MUTEX to DEFINE_MUTEX at 2.6.16, so do the same here. (cherry picked from commit f9409fcdffa594aff9530038a5ac81a2495da3b6) Signed-off-by: Alejandro R. Sedeño Reviewed-on: http://gerrit.openafs.org/3273 Reviewed-by: Marc Dionne Tested-by: BuildBot Tested-by: Derrick Brashear Reviewed-by: Derrick Brashear Change-Id: I3d72f56db7ebaf40f1cdcdbf9f73783cb9d71676 Reviewed-on: http://gerrit.openafs.org/3539 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- src/afs/LINUX/osi_alloc.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/afs/LINUX/osi_alloc.c b/src/afs/LINUX/osi_alloc.c index ae884539d..dab25a716 100644 --- a/src/afs/LINUX/osi_alloc.c +++ b/src/afs/LINUX/osi_alloc.c @@ -284,7 +284,9 @@ get_hash_stats() /************** Linux memory allocator interface functions **********/ -#if defined(AFS_LINUX24_ENV) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) +DEFINE_MUTEX(afs_linux_alloc_sem); +#elif defined(AFS_LINUX24_ENV) DECLARE_MUTEX(afs_linux_alloc_sem); #else struct semaphore afs_linux_alloc_sem = MUTEX; @@ -303,7 +305,7 @@ osi_linux_alloc(unsigned int asize, int drop_glock) return new; } - down(&afs_linux_alloc_sem); + mutex_lock(&afs_linux_alloc_sem); /* allocator hasn't been initialized yet */ if (allocator_init == 0) { @@ -333,7 +335,7 @@ osi_linux_alloc(unsigned int asize, int drop_glock) get_hash_stats(); } error: - up(&afs_linux_alloc_sem); + mutex_unlock(&afs_linux_alloc_sem); return MEMADDR(new); free_error: @@ -353,7 +355,7 @@ osi_linux_free(void *addr) { struct osi_linux_mem lmem, *lmp; - down(&afs_linux_alloc_sem); + mutex_lock(&afs_linux_alloc_sem); lmem.chunk = addr; /* remove this chunk from our hash table */ @@ -367,7 +369,7 @@ osi_linux_free(void *addr) printf("osi_linux_free: failed to remove chunk from hashtable\n"); } - up(&afs_linux_alloc_sem); + mutex_unlock(&afs_linux_alloc_sem); } /* osi_linux_free_afs_memory() - free all chunks of memory allocated. @@ -375,7 +377,7 @@ osi_linux_free(void *addr) void osi_linux_free_afs_memory(void) { - down(&afs_linux_alloc_sem); + mutex_lock(&afs_linux_alloc_sem); if (allocator_init) { /* iterate through all elements in the hash table and free both @@ -392,7 +394,7 @@ osi_linux_free_afs_memory(void) /* change the state so that the allocator is now uninitialized. */ allocator_init = 0; } - up(&afs_linux_alloc_sem); + mutex_unlock(&afs_linux_alloc_sem); } /* osi_linux_verify_alloced_memory(): verify all chunks of alloced memory in @@ -401,7 +403,7 @@ osi_linux_free_afs_memory(void) void osi_linux_verify_alloced_memory() { - down(&afs_linux_alloc_sem); + mutex_lock(&afs_linux_alloc_sem); /* count of times hash_verify was called. reset it to 0 before iteration */ afs_linux_hash_verify_count = 0; @@ -416,6 +418,6 @@ osi_linux_verify_alloced_memory() afs_linux_hash_verify_count - afs_linux_cur_allocs); } - up(&afs_linux_alloc_sem); + mutex_unlock(&afs_linux_alloc_sem); return; } -- 2.39.5