#include "event_buffer.h"
#include "oprofile_stats.h"
-DEFINE_MUTEX(buffer_mutex);
+DECLARE_MUTEX(buffer_sem);
static unsigned long buffer_opened;
static DECLARE_WAIT_QUEUE_HEAD(buffer_wait);
static unsigned long buffer_size;
static unsigned long buffer_watershed;
static size_t buffer_pos;
-/* atomic_t because wait_event checks it outside of buffer_mutex */
+/* atomic_t because wait_event checks it outside of buffer_sem */
static atomic_t buffer_ready = ATOMIC_INIT(0);
/* Add an entry to the event buffer. When we
*/
void wake_up_buffer_waiter(void)
{
- mutex_lock(&buffer_mutex);
+ down(&buffer_sem);
atomic_set(&buffer_ready, 1);
wake_up(&buffer_wait);
- mutex_unlock(&buffer_mutex);
+ up(&buffer_sem);
}
if (!atomic_read(&buffer_ready))
return -EAGAIN;
- mutex_lock(&buffer_mutex);
+ down(&buffer_sem);
atomic_set(&buffer_ready, 0);
buffer_pos = 0;
out:
- mutex_unlock(&buffer_mutex);
+ up(&buffer_sem);
return retval;
}