diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2006-03-16 11:38:16 +0000 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-03-21 23:30:00 +0000 |
commit | 93ad79496c8831552d5f8ca7c182f149cc3cf19a (patch) | |
tree | c8a052a2419081a7d930b1844dec0e0bd1747211 /arch/arm/oprofile | |
parent | c3d5395fd7ac5b338c701deaaddec090d3c25af9 (diff) | |
download | kernel_goldelico_gta04-93ad79496c8831552d5f8ca7c182f149cc3cf19a.zip kernel_goldelico_gta04-93ad79496c8831552d5f8ca7c182f149cc3cf19a.tar.gz kernel_goldelico_gta04-93ad79496c8831552d5f8ca7c182f149cc3cf19a.tar.bz2 |
[ARM] Oprofile: Convert semaphore to mutex
op_arm_sem is being used as a mutex, so convert it to use
real mutexes.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/oprofile')
-rw-r--r-- | arch/arm/oprofile/common.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/arch/arm/oprofile/common.c b/arch/arm/oprofile/common.c index 6f8bc1f..b57b6d1 100644 --- a/arch/arm/oprofile/common.c +++ b/arch/arm/oprofile/common.c @@ -11,14 +11,14 @@ #include <linux/oprofile.h> #include <linux/errno.h> #include <linux/sysdev.h> -#include <asm/semaphore.h> +#include <linux/mutex.h> #include "op_counter.h" #include "op_arm_model.h" static struct op_arm_model_spec *op_arm_model; static int op_arm_enabled; -static struct semaphore op_arm_sem; +static DEFINE_MUTEX(op_arm_mutex); struct op_counter_config counter_config[OP_MAX_COUNTER]; @@ -57,40 +57,40 @@ static int op_arm_start(void) { int ret = -EBUSY; - down(&op_arm_sem); + mutex_lock(&op_arm_mutex); if (!op_arm_enabled) { ret = op_arm_model->start(); op_arm_enabled = !ret; } - up(&op_arm_sem); + mutex_unlock(&op_arm_mutex); return ret; } static void op_arm_stop(void) { - down(&op_arm_sem); + mutex_lock(&op_arm_mutex); if (op_arm_enabled) op_arm_model->stop(); op_arm_enabled = 0; - up(&op_arm_sem); + mutex_unlock(&op_arm_mutex); } #ifdef CONFIG_PM static int op_arm_suspend(struct sys_device *dev, pm_message_t state) { - down(&op_arm_sem); + mutex_lock(&op_arm_mutex); if (op_arm_enabled) op_arm_model->stop(); - up(&op_arm_sem); + mutex_unlock(&op_arm_mutex); return 0; } static int op_arm_resume(struct sys_device *dev) { - down(&op_arm_sem); + mutex_lock(&op_arm_mutex); if (op_arm_enabled && op_arm_model->start()) op_arm_enabled = 0; - up(&op_arm_sem); + mutex_unlock(&op_arm_mutex); return 0; } @@ -135,8 +135,6 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) #endif if (spec) { - init_MUTEX(&op_arm_sem); - ret = spec->init(); if (ret < 0) return ret; @@ -163,4 +161,3 @@ void oprofile_arch_exit(void) op_arm_model = NULL; } } - |