diff options
| author | Markus Armbruster <armbru@redhat.com> | 2006-06-25 08:47:33 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-25 13:01:04 -0400 |
| commit | 59cc185ada89245204c658ebcf64422968736672 (patch) | |
| tree | 042e46cfe90c2ad5b711e2791b05f73ab1fe7725 /drivers/oprofile | |
| parent | a2926b1449bcc3d348e2228114b04869dc2f3986 (diff) | |
[PATCH] oprofile: convert from semaphores to mutexes
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Cc: Philippe Elie <phil.el@wanadoo.fr>
Cc: John Levon <levon@movementarian.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/oprofile')
| -rw-r--r-- | drivers/oprofile/buffer_sync.c | 8 | ||||
| -rw-r--r-- | drivers/oprofile/event_buffer.c | 12 | ||||
| -rw-r--r-- | drivers/oprofile/event_buffer.h | 4 | ||||
| -rw-r--r-- | drivers/oprofile/oprof.c | 26 |
4 files changed, 25 insertions, 25 deletions
diff --git a/drivers/oprofile/buffer_sync.c b/drivers/oprofile/buffer_sync.c index b2e8e49c8659..43e521e99126 100644 --- a/drivers/oprofile/buffer_sync.c +++ b/drivers/oprofile/buffer_sync.c | |||
| @@ -108,10 +108,10 @@ static int module_load_notify(struct notifier_block * self, unsigned long val, v | |||
| 108 | return 0; | 108 | return 0; |
| 109 | 109 | ||
| 110 | /* FIXME: should we process all CPU buffers ? */ | 110 | /* FIXME: should we process all CPU buffers ? */ |
| 111 | down(&buffer_sem); | 111 | mutex_lock(&buffer_mutex); |
| 112 | add_event_entry(ESCAPE_CODE); | 112 | add_event_entry(ESCAPE_CODE); |
| 113 | add_event_entry(MODULE_LOADED_CODE); | 113 | add_event_entry(MODULE_LOADED_CODE); |
| 114 | up(&buffer_sem); | 114 | mutex_unlock(&buffer_mutex); |
| 115 | #endif | 115 | #endif |
| 116 | return 0; | 116 | return 0; |
| 117 | } | 117 | } |
| @@ -501,7 +501,7 @@ void sync_buffer(int cpu) | |||
| 501 | sync_buffer_state state = sb_buffer_start; | 501 | sync_buffer_state state = sb_buffer_start; |
| 502 | unsigned long available; | 502 | unsigned long available; |
| 503 | 503 | ||
| 504 | down(&buffer_sem); | 504 | mutex_lock(&buffer_mutex); |
| 505 | 505 | ||
| 506 | add_cpu_switch(cpu); | 506 | add_cpu_switch(cpu); |
| 507 | 507 | ||
| @@ -550,5 +550,5 @@ void sync_buffer(int cpu) | |||
| 550 | 550 | ||
| 551 | mark_done(cpu); | 551 | mark_done(cpu); |
| 552 | 552 | ||
| 553 | up(&buffer_sem); | 553 | mutex_unlock(&buffer_mutex); |
| 554 | } | 554 | } |
diff --git a/drivers/oprofile/event_buffer.c b/drivers/oprofile/event_buffer.c index b80318f03420..04d641714d34 100644 --- a/drivers/oprofile/event_buffer.c +++ b/drivers/oprofile/event_buffer.c | |||
| @@ -24,7 +24,7 @@ | |||
| 24 | #include "event_buffer.h" | 24 | #include "event_buffer.h" |
| 25 | #include "oprofile_stats.h" | 25 | #include "oprofile_stats.h" |
| 26 | 26 | ||
| 27 | DECLARE_MUTEX(buffer_sem); | 27 | DEFINE_MUTEX(buffer_mutex); |
| 28 | 28 | ||
| 29 | static unsigned long buffer_opened; | 29 | static unsigned long buffer_opened; |
| 30 | static DECLARE_WAIT_QUEUE_HEAD(buffer_wait); | 30 | static DECLARE_WAIT_QUEUE_HEAD(buffer_wait); |
| @@ -32,7 +32,7 @@ static unsigned long * event_buffer; | |||
| 32 | static unsigned long buffer_size; | 32 | static unsigned long buffer_size; |
| 33 | static unsigned long buffer_watershed; | 33 | static unsigned long buffer_watershed; |
| 34 | static size_t buffer_pos; | 34 | static size_t buffer_pos; |
| 35 | /* atomic_t because wait_event checks it outside of buffer_sem */ | 35 | /* atomic_t because wait_event checks it outside of buffer_mutex */ |
| 36 | static atomic_t buffer_ready = ATOMIC_INIT(0); | 36 | static atomic_t buffer_ready = ATOMIC_INIT(0); |
| 37 | 37 | ||
| 38 | /* Add an entry to the event buffer. When we | 38 | /* Add an entry to the event buffer. When we |
| @@ -60,10 +60,10 @@ void add_event_entry(unsigned long value) | |||
| 60 | */ | 60 | */ |
| 61 | void wake_up_buffer_waiter(void) | 61 | void wake_up_buffer_waiter(void) |
| 62 | { | 62 | { |
| 63 | down(&buffer_sem); | 63 | mutex_lock(&buffer_mutex); |
| 64 | atomic_set(&buffer_ready, 1); | 64 | atomic_set(&buffer_ready, 1); |
| 65 | wake_up(&buffer_wait); | 65 | wake_up(&buffer_wait); |
| 66 | up(&buffer_sem); | 66 | mutex_unlock(&buffer_mutex); |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | 69 | ||
| @@ -162,7 +162,7 @@ static ssize_t event_buffer_read(struct file * file, char __user * buf, | |||
| 162 | if (!atomic_read(&buffer_ready)) | 162 | if (!atomic_read(&buffer_ready)) |
| 163 | return -EAGAIN; | 163 | return -EAGAIN; |
| 164 | 164 | ||
| 165 | down(&buffer_sem); | 165 | mutex_lock(&buffer_mutex); |
| 166 | 166 | ||
| 167 | atomic_set(&buffer_ready, 0); | 167 | atomic_set(&buffer_ready, 0); |
| 168 | 168 | ||
| @@ -177,7 +177,7 @@ static ssize_t event_buffer_read(struct file * file, char __user * buf, | |||
| 177 | buffer_pos = 0; | 177 | buffer_pos = 0; |
| 178 | 178 | ||
| 179 | out: | 179 | out: |
| 180 | up(&buffer_sem); | 180 | mutex_unlock(&buffer_mutex); |
| 181 | return retval; | 181 | return retval; |
| 182 | } | 182 | } |
| 183 | 183 | ||
diff --git a/drivers/oprofile/event_buffer.h b/drivers/oprofile/event_buffer.h index 018023630599..92416276e577 100644 --- a/drivers/oprofile/event_buffer.h +++ b/drivers/oprofile/event_buffer.h | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | #define EVENT_BUFFER_H | 11 | #define EVENT_BUFFER_H |
| 12 | 12 | ||
| 13 | #include <linux/types.h> | 13 | #include <linux/types.h> |
| 14 | #include <asm/semaphore.h> | 14 | #include <asm/mutex.h> |
| 15 | 15 | ||
| 16 | int alloc_event_buffer(void); | 16 | int alloc_event_buffer(void); |
| 17 | 17 | ||
| @@ -46,6 +46,6 @@ extern struct file_operations event_buffer_fops; | |||
| 46 | /* mutex between sync_cpu_buffers() and the | 46 | /* mutex between sync_cpu_buffers() and the |
| 47 | * file reading code. | 47 | * file reading code. |
| 48 | */ | 48 | */ |
| 49 | extern struct semaphore buffer_sem; | 49 | extern struct mutex buffer_mutex; |
| 50 | 50 | ||
| 51 | #endif /* EVENT_BUFFER_H */ | 51 | #endif /* EVENT_BUFFER_H */ |
diff --git a/drivers/oprofile/oprof.c b/drivers/oprofile/oprof.c index b3f1cd6a24c1..e5162a64018b 100644 --- a/drivers/oprofile/oprof.c +++ b/drivers/oprofile/oprof.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
| 13 | #include <linux/oprofile.h> | 13 | #include <linux/oprofile.h> |
| 14 | #include <linux/moduleparam.h> | 14 | #include <linux/moduleparam.h> |
| 15 | #include <asm/semaphore.h> | 15 | #include <asm/mutex.h> |
| 16 | 16 | ||
| 17 | #include "oprof.h" | 17 | #include "oprof.h" |
| 18 | #include "event_buffer.h" | 18 | #include "event_buffer.h" |
| @@ -25,7 +25,7 @@ struct oprofile_operations oprofile_ops; | |||
| 25 | unsigned long oprofile_started; | 25 | unsigned long oprofile_started; |
| 26 | unsigned long backtrace_depth; | 26 | unsigned long backtrace_depth; |
| 27 | static unsigned long is_setup; | 27 | static unsigned long is_setup; |
| 28 | static DECLARE_MUTEX(start_sem); | 28 | static DEFINE_MUTEX(start_mutex); |
| 29 | 29 | ||
| 30 | /* timer | 30 | /* timer |
| 31 | 0 - use performance monitoring hardware if available | 31 | 0 - use performance monitoring hardware if available |
| @@ -37,7 +37,7 @@ int oprofile_setup(void) | |||
| 37 | { | 37 | { |
| 38 | int err; | 38 | int err; |
| 39 | 39 | ||
| 40 | down(&start_sem); | 40 | mutex_lock(&start_mutex); |
| 41 | 41 | ||
| 42 | if ((err = alloc_cpu_buffers())) | 42 | if ((err = alloc_cpu_buffers())) |
| 43 | goto out; | 43 | goto out; |
| @@ -57,7 +57,7 @@ int oprofile_setup(void) | |||
| 57 | goto out3; | 57 | goto out3; |
| 58 | 58 | ||
| 59 | is_setup = 1; | 59 | is_setup = 1; |
| 60 | up(&start_sem); | 60 | mutex_unlock(&start_mutex); |
| 61 | return 0; | 61 | return 0; |
| 62 | 62 | ||
| 63 | out3: | 63 | out3: |
| @@ -68,7 +68,7 @@ out2: | |||
| 68 | out1: | 68 | out1: |
| 69 | free_cpu_buffers(); | 69 | free_cpu_buffers(); |
| 70 | out: | 70 | out: |
| 71 | up(&start_sem); | 71 | mutex_unlock(&start_mutex); |
| 72 | return err; | 72 | return err; |
| 73 | } | 73 | } |
| 74 | 74 | ||
| @@ -78,7 +78,7 @@ int oprofile_start(void) | |||
| 78 | { | 78 | { |
| 79 | int err = -EINVAL; | 79 | int err = -EINVAL; |
| 80 | 80 | ||
| 81 | down(&start_sem); | 81 | mutex_lock(&start_mutex); |
| 82 | 82 | ||
| 83 | if (!is_setup) | 83 | if (!is_setup) |
| 84 | goto out; | 84 | goto out; |
| @@ -95,7 +95,7 @@ int oprofile_start(void) | |||
| 95 | 95 | ||
| 96 | oprofile_started = 1; | 96 | oprofile_started = 1; |
| 97 | out: | 97 | out: |
| 98 | up(&start_sem); | 98 | mutex_unlock(&start_mutex); |
| 99 | return err; | 99 | return err; |
| 100 | } | 100 | } |
| 101 | 101 | ||
| @@ -103,7 +103,7 @@ out: | |||
| 103 | /* echo 0>/dev/oprofile/enable */ | 103 | /* echo 0>/dev/oprofile/enable */ |
| 104 | void oprofile_stop(void) | 104 | void oprofile_stop(void) |
| 105 | { | 105 | { |
| 106 | down(&start_sem); | 106 | mutex_lock(&start_mutex); |
| 107 | if (!oprofile_started) | 107 | if (!oprofile_started) |
| 108 | goto out; | 108 | goto out; |
| 109 | oprofile_ops.stop(); | 109 | oprofile_ops.stop(); |
| @@ -111,20 +111,20 @@ void oprofile_stop(void) | |||
| 111 | /* wake up the daemon to read what remains */ | 111 | /* wake up the daemon to read what remains */ |
| 112 | wake_up_buffer_waiter(); | 112 | wake_up_buffer_waiter(); |
| 113 | out: | 113 | out: |
| 114 | up(&start_sem); | 114 | mutex_unlock(&start_mutex); |
| 115 | } | 115 | } |
| 116 | 116 | ||
| 117 | 117 | ||
| 118 | void oprofile_shutdown(void) | 118 | void oprofile_shutdown(void) |
| 119 | { | 119 | { |
| 120 | down(&start_sem); | 120 | mutex_lock(&start_mutex); |
| 121 | sync_stop(); | 121 | sync_stop(); |
| 122 | if (oprofile_ops.shutdown) | 122 | if (oprofile_ops.shutdown) |
| 123 | oprofile_ops.shutdown(); | 123 | oprofile_ops.shutdown(); |
| 124 | is_setup = 0; | 124 | is_setup = 0; |
| 125 | free_event_buffer(); | 125 | free_event_buffer(); |
| 126 | free_cpu_buffers(); | 126 | free_cpu_buffers(); |
| 127 | up(&start_sem); | 127 | mutex_unlock(&start_mutex); |
| 128 | } | 128 | } |
| 129 | 129 | ||
| 130 | 130 | ||
| @@ -132,7 +132,7 @@ int oprofile_set_backtrace(unsigned long val) | |||
| 132 | { | 132 | { |
| 133 | int err = 0; | 133 | int err = 0; |
| 134 | 134 | ||
| 135 | down(&start_sem); | 135 | mutex_lock(&start_mutex); |
| 136 | 136 | ||
| 137 | if (oprofile_started) { | 137 | if (oprofile_started) { |
| 138 | err = -EBUSY; | 138 | err = -EBUSY; |
| @@ -147,7 +147,7 @@ int oprofile_set_backtrace(unsigned long val) | |||
| 147 | backtrace_depth = val; | 147 | backtrace_depth = val; |
| 148 | 148 | ||
| 149 | out: | 149 | out: |
| 150 | up(&start_sem); | 150 | mutex_unlock(&start_mutex); |
| 151 | return err; | 151 | return err; |
| 152 | } | 152 | } |
| 153 | 153 | ||
