git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
[pandora-kernel.git]
/
drivers
/
oprofile
/
cpu_buffer.c
diff --git
a/drivers/oprofile/cpu_buffer.c
b/drivers/oprofile/cpu_buffer.c
index
c93d3d2
..
7ba78e6
100644
(file)
--- a/
drivers/oprofile/cpu_buffer.c
+++ b/
drivers/oprofile/cpu_buffer.c
@@
-27,7
+27,7
@@
#include "buffer_sync.h"
#include "oprof.h"
#include "buffer_sync.h"
#include "oprof.h"
-
struct oprofile_cpu_buffer cpu_buffer[NR_CPUS] __cacheline_aligned
;
+
DEFINE_PER_CPU(struct oprofile_cpu_buffer, cpu_buffer)
;
static void wq_sync_buffer(struct work_struct *work);
static void wq_sync_buffer(struct work_struct *work);
@@
-38,8
+38,10
@@
void free_cpu_buffers(void)
{
int i;
{
int i;
- for_each_online_cpu(i)
- vfree(cpu_buffer[i].buffer);
+ for_each_online_cpu(i) {
+ vfree(per_cpu(cpu_buffer, i).buffer);
+ per_cpu(cpu_buffer, i).buffer = NULL;
+ }
}
int alloc_cpu_buffers(void)
}
int alloc_cpu_buffers(void)
@@
-49,7
+51,7
@@
int alloc_cpu_buffers(void)
unsigned long buffer_size = fs_cpu_buffer_size;
for_each_online_cpu(i) {
unsigned long buffer_size = fs_cpu_buffer_size;
for_each_online_cpu(i) {
- struct oprofile_cpu_buffer *
b = &cpu_buffer[i]
;
+ struct oprofile_cpu_buffer *
b = &per_cpu(cpu_buffer, i)
;
b->buffer = vmalloc_node(sizeof(struct op_sample) * buffer_size,
cpu_to_node(i));
b->buffer = vmalloc_node(sizeof(struct op_sample) * buffer_size,
cpu_to_node(i));
@@
-83,7
+85,7
@@
void start_cpu_work(void)
work_enabled = 1;
for_each_online_cpu(i) {
work_enabled = 1;
for_each_online_cpu(i) {
- struct oprofile_cpu_buffer *
b = &cpu_buffer[i]
;
+ struct oprofile_cpu_buffer *
b = &per_cpu(cpu_buffer, i)
;
/*
* Spread the work by 1 jiffy per cpu so they dont all
/*
* Spread the work by 1 jiffy per cpu so they dont all
@@
-100,7
+102,7
@@
void end_cpu_work(void)
work_enabled = 0;
for_each_online_cpu(i) {
work_enabled = 0;
for_each_online_cpu(i) {
- struct oprofile_cpu_buffer *
b = &cpu_buffer[i]
;
+ struct oprofile_cpu_buffer *
b = &per_cpu(cpu_buffer, i)
;
cancel_delayed_work(&b->work);
}
cancel_delayed_work(&b->work);
}
@@
-227,7
+229,7
@@
static void oprofile_end_trace(struct oprofile_cpu_buffer * cpu_buf)
void oprofile_add_ext_sample(unsigned long pc, struct pt_regs * const regs,
unsigned long event, int is_kernel)
{
void oprofile_add_ext_sample(unsigned long pc, struct pt_regs * const regs,
unsigned long event, int is_kernel)
{
- struct oprofile_cpu_buffer *
cpu_buf = &cpu_buffer[smp_processor_id()]
;
+ struct oprofile_cpu_buffer *
cpu_buf = &__get_cpu_var(cpu_buffer)
;
if (!backtrace_depth) {
log_sample(cpu_buf, pc, is_kernel, event);
if (!backtrace_depth) {
log_sample(cpu_buf, pc, is_kernel, event);
@@
-254,13
+256,13
@@
void oprofile_add_sample(struct pt_regs * const regs, unsigned long event)
void oprofile_add_pc(unsigned long pc, int is_kernel, unsigned long event)
{
void oprofile_add_pc(unsigned long pc, int is_kernel, unsigned long event)
{
- struct oprofile_cpu_buffer *
cpu_buf = &cpu_buffer[smp_processor_id()]
;
+ struct oprofile_cpu_buffer *
cpu_buf = &__get_cpu_var(cpu_buffer)
;
log_sample(cpu_buf, pc, is_kernel, event);
}
void oprofile_add_trace(unsigned long pc)
{
log_sample(cpu_buf, pc, is_kernel, event);
}
void oprofile_add_trace(unsigned long pc)
{
- struct oprofile_cpu_buffer *
cpu_buf = &cpu_buffer[smp_processor_id()]
;
+ struct oprofile_cpu_buffer *
cpu_buf = &__get_cpu_var(cpu_buffer)
;
if (!cpu_buf->tracing)
return;
if (!cpu_buf->tracing)
return;