diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/oprofile/buffer_sync.c | 9 | ||||
-rw-r--r-- | drivers/oprofile/cpu_buffer.c | 68 | ||||
-rw-r--r-- | drivers/oprofile/cpu_buffer.h | 6 | ||||
-rw-r--r-- | drivers/oprofile/event_buffer.c | 10 | ||||
-rw-r--r-- | drivers/oprofile/oprof.c | 24 | ||||
-rw-r--r-- | drivers/oprofile/oprof.h | 4 | ||||
-rw-r--r-- | drivers/oprofile/oprofile_files.c | 16 | ||||
-rw-r--r-- | drivers/oprofile/oprofile_stats.c | 10 | ||||
-rw-r--r-- | drivers/oprofile/oprofile_stats.h | 2 | ||||
-rw-r--r-- | drivers/oprofile/oprofilefs.c | 72 | ||||
-rw-r--r-- | drivers/oprofile/timer_int.c | 2 |
11 files changed, 101 insertions, 122 deletions
diff --git a/drivers/oprofile/buffer_sync.c b/drivers/oprofile/buffer_sync.c index ed982273fb8..33bfa60b0c6 100644 --- a/drivers/oprofile/buffer_sync.c +++ b/drivers/oprofile/buffer_sync.c | |||
@@ -41,7 +41,6 @@ static cpumask_t marked_cpus = CPU_MASK_NONE; | |||
41 | static DEFINE_SPINLOCK(task_mortuary); | 41 | static DEFINE_SPINLOCK(task_mortuary); |
42 | static void process_task_mortuary(void); | 42 | static void process_task_mortuary(void); |
43 | 43 | ||
44 | |||
45 | /* Take ownership of the task struct and place it on the | 44 | /* Take ownership of the task struct and place it on the |
46 | * list for processing. Only after two full buffer syncs | 45 | * list for processing. Only after two full buffer syncs |
47 | * does the task eventually get freed, because by then | 46 | * does the task eventually get freed, because by then |
@@ -341,7 +340,7 @@ static void add_trace_begin(void) | |||
341 | * Add IBS fetch and op entries to event buffer | 340 | * Add IBS fetch and op entries to event buffer |
342 | */ | 341 | */ |
343 | static void add_ibs_begin(struct oprofile_cpu_buffer *cpu_buf, int code, | 342 | static void add_ibs_begin(struct oprofile_cpu_buffer *cpu_buf, int code, |
344 | int in_kernel, struct mm_struct *mm) | 343 | struct mm_struct *mm) |
345 | { | 344 | { |
346 | unsigned long rip; | 345 | unsigned long rip; |
347 | int i, count; | 346 | int i, count; |
@@ -593,12 +592,10 @@ void sync_buffer(int cpu) | |||
593 | #ifdef CONFIG_OPROFILE_IBS | 592 | #ifdef CONFIG_OPROFILE_IBS |
594 | } else if (s->event == IBS_FETCH_BEGIN) { | 593 | } else if (s->event == IBS_FETCH_BEGIN) { |
595 | state = sb_bt_start; | 594 | state = sb_bt_start; |
596 | add_ibs_begin(cpu_buf, | 595 | add_ibs_begin(cpu_buf, IBS_FETCH_CODE, mm); |
597 | IBS_FETCH_CODE, in_kernel, mm); | ||
598 | } else if (s->event == IBS_OP_BEGIN) { | 596 | } else if (s->event == IBS_OP_BEGIN) { |
599 | state = sb_bt_start; | 597 | state = sb_bt_start; |
600 | add_ibs_begin(cpu_buf, | 598 | add_ibs_begin(cpu_buf, IBS_OP_CODE, mm); |
601 | IBS_OP_CODE, in_kernel, mm); | ||
602 | #endif | 599 | #endif |
603 | } else { | 600 | } else { |
604 | struct mm_struct *oldmm = mm; | 601 | struct mm_struct *oldmm = mm; |
diff --git a/drivers/oprofile/cpu_buffer.c b/drivers/oprofile/cpu_buffer.c index e1bd5a937f6..b47ce038490 100644 --- a/drivers/oprofile/cpu_buffer.c +++ b/drivers/oprofile/cpu_buffer.c | |||
@@ -112,7 +112,7 @@ void end_cpu_work(void) | |||
112 | } | 112 | } |
113 | 113 | ||
114 | /* Resets the cpu buffer to a sane state. */ | 114 | /* Resets the cpu buffer to a sane state. */ |
115 | void cpu_buffer_reset(struct oprofile_cpu_buffer * cpu_buf) | 115 | void cpu_buffer_reset(struct oprofile_cpu_buffer *cpu_buf) |
116 | { | 116 | { |
117 | /* reset these to invalid values; the next sample | 117 | /* reset these to invalid values; the next sample |
118 | * collected will populate the buffer with proper | 118 | * collected will populate the buffer with proper |
@@ -123,7 +123,7 @@ void cpu_buffer_reset(struct oprofile_cpu_buffer * cpu_buf) | |||
123 | } | 123 | } |
124 | 124 | ||
125 | /* compute number of available slots in cpu_buffer queue */ | 125 | /* compute number of available slots in cpu_buffer queue */ |
126 | static unsigned long nr_available_slots(struct oprofile_cpu_buffer const * b) | 126 | static unsigned long nr_available_slots(struct oprofile_cpu_buffer const *b) |
127 | { | 127 | { |
128 | unsigned long head = b->head_pos; | 128 | unsigned long head = b->head_pos; |
129 | unsigned long tail = b->tail_pos; | 129 | unsigned long tail = b->tail_pos; |
@@ -134,7 +134,7 @@ static unsigned long nr_available_slots(struct oprofile_cpu_buffer const * b) | |||
134 | return tail + (b->buffer_size - head) - 1; | 134 | return tail + (b->buffer_size - head) - 1; |
135 | } | 135 | } |
136 | 136 | ||
137 | static void increment_head(struct oprofile_cpu_buffer * b) | 137 | static void increment_head(struct oprofile_cpu_buffer *b) |
138 | { | 138 | { |
139 | unsigned long new_head = b->head_pos + 1; | 139 | unsigned long new_head = b->head_pos + 1; |
140 | 140 | ||
@@ -149,17 +149,17 @@ static void increment_head(struct oprofile_cpu_buffer * b) | |||
149 | } | 149 | } |
150 | 150 | ||
151 | static inline void | 151 | static inline void |
152 | add_sample(struct oprofile_cpu_buffer * cpu_buf, | 152 | add_sample(struct oprofile_cpu_buffer *cpu_buf, |
153 | unsigned long pc, unsigned long event) | 153 | unsigned long pc, unsigned long event) |
154 | { | 154 | { |
155 | struct op_sample * entry = &cpu_buf->buffer[cpu_buf->head_pos]; | 155 | struct op_sample *entry = &cpu_buf->buffer[cpu_buf->head_pos]; |
156 | entry->eip = pc; | 156 | entry->eip = pc; |
157 | entry->event = event; | 157 | entry->event = event; |
158 | increment_head(cpu_buf); | 158 | increment_head(cpu_buf); |
159 | } | 159 | } |
160 | 160 | ||
161 | static inline void | 161 | static inline void |
162 | add_code(struct oprofile_cpu_buffer * buffer, unsigned long value) | 162 | add_code(struct oprofile_cpu_buffer *buffer, unsigned long value) |
163 | { | 163 | { |
164 | add_sample(buffer, ESCAPE_CODE, value); | 164 | add_sample(buffer, ESCAPE_CODE, value); |
165 | } | 165 | } |
@@ -173,10 +173,10 @@ add_code(struct oprofile_cpu_buffer * buffer, unsigned long value) | |||
173 | * pc. We tag this in the buffer by generating kernel enter/exit | 173 | * pc. We tag this in the buffer by generating kernel enter/exit |
174 | * events whenever is_kernel changes | 174 | * events whenever is_kernel changes |
175 | */ | 175 | */ |
176 | static int log_sample(struct oprofile_cpu_buffer * cpu_buf, unsigned long pc, | 176 | static int log_sample(struct oprofile_cpu_buffer *cpu_buf, unsigned long pc, |
177 | int is_kernel, unsigned long event) | 177 | int is_kernel, unsigned long event) |
178 | { | 178 | { |
179 | struct task_struct * task; | 179 | struct task_struct *task; |
180 | 180 | ||
181 | cpu_buf->sample_received++; | 181 | cpu_buf->sample_received++; |
182 | 182 | ||
@@ -222,7 +222,7 @@ static int oprofile_begin_trace(struct oprofile_cpu_buffer *cpu_buf) | |||
222 | return 1; | 222 | return 1; |
223 | } | 223 | } |
224 | 224 | ||
225 | static void oprofile_end_trace(struct oprofile_cpu_buffer * cpu_buf) | 225 | static void oprofile_end_trace(struct oprofile_cpu_buffer *cpu_buf) |
226 | { | 226 | { |
227 | cpu_buf->tracing = 0; | 227 | cpu_buf->tracing = 0; |
228 | } | 228 | } |
@@ -257,21 +257,23 @@ void oprofile_add_sample(struct pt_regs * const regs, unsigned long event) | |||
257 | 257 | ||
258 | #ifdef CONFIG_OPROFILE_IBS | 258 | #ifdef CONFIG_OPROFILE_IBS |
259 | 259 | ||
260 | #define MAX_IBS_SAMPLE_SIZE 14 | 260 | #define MAX_IBS_SAMPLE_SIZE 14 |
261 | static int log_ibs_sample(struct oprofile_cpu_buffer *cpu_buf, | 261 | |
262 | unsigned long pc, int is_kernel, unsigned int *ibs, int ibs_code) | 262 | void oprofile_add_ibs_sample(struct pt_regs *const regs, |
263 | unsigned int *const ibs_sample, int ibs_code) | ||
263 | { | 264 | { |
265 | int is_kernel = !user_mode(regs); | ||
266 | struct oprofile_cpu_buffer *cpu_buf = &__get_cpu_var(cpu_buffer); | ||
264 | struct task_struct *task; | 267 | struct task_struct *task; |
265 | 268 | ||
266 | cpu_buf->sample_received++; | 269 | cpu_buf->sample_received++; |
267 | 270 | ||
268 | if (nr_available_slots(cpu_buf) < MAX_IBS_SAMPLE_SIZE) { | 271 | if (nr_available_slots(cpu_buf) < MAX_IBS_SAMPLE_SIZE) { |
272 | /* we can't backtrace since we lost the source of this event */ | ||
269 | cpu_buf->sample_lost_overflow++; | 273 | cpu_buf->sample_lost_overflow++; |
270 | return 0; | 274 | return; |
271 | } | 275 | } |
272 | 276 | ||
273 | is_kernel = !!is_kernel; | ||
274 | |||
275 | /* notice a switch from user->kernel or vice versa */ | 277 | /* notice a switch from user->kernel or vice versa */ |
276 | if (cpu_buf->last_is_kernel != is_kernel) { | 278 | if (cpu_buf->last_is_kernel != is_kernel) { |
277 | cpu_buf->last_is_kernel = is_kernel; | 279 | cpu_buf->last_is_kernel = is_kernel; |
@@ -281,7 +283,6 @@ static int log_ibs_sample(struct oprofile_cpu_buffer *cpu_buf, | |||
281 | /* notice a task switch */ | 283 | /* notice a task switch */ |
282 | if (!is_kernel) { | 284 | if (!is_kernel) { |
283 | task = current; | 285 | task = current; |
284 | |||
285 | if (cpu_buf->last_task != task) { | 286 | if (cpu_buf->last_task != task) { |
286 | cpu_buf->last_task = task; | 287 | cpu_buf->last_task = task; |
287 | add_code(cpu_buf, (unsigned long)task); | 288 | add_code(cpu_buf, (unsigned long)task); |
@@ -289,36 +290,17 @@ static int log_ibs_sample(struct oprofile_cpu_buffer *cpu_buf, | |||
289 | } | 290 | } |
290 | 291 | ||
291 | add_code(cpu_buf, ibs_code); | 292 | add_code(cpu_buf, ibs_code); |
292 | add_sample(cpu_buf, ibs[0], ibs[1]); | 293 | add_sample(cpu_buf, ibs_sample[0], ibs_sample[1]); |
293 | add_sample(cpu_buf, ibs[2], ibs[3]); | 294 | add_sample(cpu_buf, ibs_sample[2], ibs_sample[3]); |
294 | add_sample(cpu_buf, ibs[4], ibs[5]); | 295 | add_sample(cpu_buf, ibs_sample[4], ibs_sample[5]); |
295 | 296 | ||
296 | if (ibs_code == IBS_OP_BEGIN) { | 297 | if (ibs_code == IBS_OP_BEGIN) { |
297 | add_sample(cpu_buf, ibs[6], ibs[7]); | 298 | add_sample(cpu_buf, ibs_sample[6], ibs_sample[7]); |
298 | add_sample(cpu_buf, ibs[8], ibs[9]); | 299 | add_sample(cpu_buf, ibs_sample[8], ibs_sample[9]); |
299 | add_sample(cpu_buf, ibs[10], ibs[11]); | 300 | add_sample(cpu_buf, ibs_sample[10], ibs_sample[11]); |
300 | } | ||
301 | |||
302 | return 1; | ||
303 | } | ||
304 | |||
305 | void oprofile_add_ibs_sample(struct pt_regs *const regs, | ||
306 | unsigned int * const ibs_sample, u8 code) | ||
307 | { | ||
308 | int is_kernel = !user_mode(regs); | ||
309 | unsigned long pc = profile_pc(regs); | ||
310 | |||
311 | struct oprofile_cpu_buffer *cpu_buf = | ||
312 | &per_cpu(cpu_buffer, smp_processor_id()); | ||
313 | |||
314 | if (!backtrace_depth) { | ||
315 | log_ibs_sample(cpu_buf, pc, is_kernel, ibs_sample, code); | ||
316 | return; | ||
317 | } | 301 | } |
318 | 302 | ||
319 | /* if log_sample() fails we can't backtrace since we lost the source | 303 | if (backtrace_depth) |
320 | * of this event */ | ||
321 | if (log_ibs_sample(cpu_buf, pc, is_kernel, ibs_sample, code)) | ||
322 | oprofile_ops.backtrace(regs, backtrace_depth); | 304 | oprofile_ops.backtrace(regs, backtrace_depth); |
323 | } | 305 | } |
324 | 306 | ||
@@ -363,7 +345,7 @@ void oprofile_add_trace(unsigned long pc) | |||
363 | */ | 345 | */ |
364 | static void wq_sync_buffer(struct work_struct *work) | 346 | static void wq_sync_buffer(struct work_struct *work) |
365 | { | 347 | { |
366 | struct oprofile_cpu_buffer * b = | 348 | struct oprofile_cpu_buffer *b = |
367 | container_of(work, struct oprofile_cpu_buffer, work.work); | 349 | container_of(work, struct oprofile_cpu_buffer, work.work); |
368 | if (b->cpu != smp_processor_id()) { | 350 | if (b->cpu != smp_processor_id()) { |
369 | printk(KERN_DEBUG "WQ on CPU%d, prefer CPU%d\n", | 351 | printk(KERN_DEBUG "WQ on CPU%d, prefer CPU%d\n", |
diff --git a/drivers/oprofile/cpu_buffer.h b/drivers/oprofile/cpu_buffer.h index 9c44d004da6..9bc6bb20b6d 100644 --- a/drivers/oprofile/cpu_buffer.h +++ b/drivers/oprofile/cpu_buffer.h | |||
@@ -36,10 +36,10 @@ struct oprofile_cpu_buffer { | |||
36 | volatile unsigned long head_pos; | 36 | volatile unsigned long head_pos; |
37 | volatile unsigned long tail_pos; | 37 | volatile unsigned long tail_pos; |
38 | unsigned long buffer_size; | 38 | unsigned long buffer_size; |
39 | struct task_struct * last_task; | 39 | struct task_struct *last_task; |
40 | int last_is_kernel; | 40 | int last_is_kernel; |
41 | int tracing; | 41 | int tracing; |
42 | struct op_sample * buffer; | 42 | struct op_sample *buffer; |
43 | unsigned long sample_received; | 43 | unsigned long sample_received; |
44 | unsigned long sample_lost_overflow; | 44 | unsigned long sample_lost_overflow; |
45 | unsigned long backtrace_aborted; | 45 | unsigned long backtrace_aborted; |
@@ -50,7 +50,7 @@ struct oprofile_cpu_buffer { | |||
50 | 50 | ||
51 | DECLARE_PER_CPU(struct oprofile_cpu_buffer, cpu_buffer); | 51 | DECLARE_PER_CPU(struct oprofile_cpu_buffer, cpu_buffer); |
52 | 52 | ||
53 | void cpu_buffer_reset(struct oprofile_cpu_buffer * cpu_buf); | 53 | void cpu_buffer_reset(struct oprofile_cpu_buffer *cpu_buf); |
54 | 54 | ||
55 | /* transient events for the CPU buffer -> event buffer */ | 55 | /* transient events for the CPU buffer -> event buffer */ |
56 | #define CPU_IS_KERNEL 1 | 56 | #define CPU_IS_KERNEL 1 |
diff --git a/drivers/oprofile/event_buffer.c b/drivers/oprofile/event_buffer.c index 8d692a5c8e7..c9329f4e090 100644 --- a/drivers/oprofile/event_buffer.c +++ b/drivers/oprofile/event_buffer.c | |||
@@ -28,7 +28,7 @@ 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); |
31 | static unsigned long * event_buffer; | 31 | 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; |
@@ -98,7 +98,7 @@ void free_event_buffer(void) | |||
98 | } | 98 | } |
99 | 99 | ||
100 | 100 | ||
101 | static int event_buffer_open(struct inode * inode, struct file * file) | 101 | static int event_buffer_open(struct inode *inode, struct file *file) |
102 | { | 102 | { |
103 | int err = -EPERM; | 103 | int err = -EPERM; |
104 | 104 | ||
@@ -134,7 +134,7 @@ out: | |||
134 | } | 134 | } |
135 | 135 | ||
136 | 136 | ||
137 | static int event_buffer_release(struct inode * inode, struct file * file) | 137 | static int event_buffer_release(struct inode *inode, struct file *file) |
138 | { | 138 | { |
139 | oprofile_stop(); | 139 | oprofile_stop(); |
140 | oprofile_shutdown(); | 140 | oprofile_shutdown(); |
@@ -146,8 +146,8 @@ static int event_buffer_release(struct inode * inode, struct file * file) | |||
146 | } | 146 | } |
147 | 147 | ||
148 | 148 | ||
149 | static ssize_t event_buffer_read(struct file * file, char __user * buf, | 149 | static ssize_t event_buffer_read(struct file *file, char __user *buf, |
150 | size_t count, loff_t * offset) | 150 | size_t count, loff_t *offset) |
151 | { | 151 | { |
152 | int retval = -EINVAL; | 152 | int retval = -EINVAL; |
153 | size_t const max = buffer_size * sizeof(unsigned long); | 153 | size_t const max = buffer_size * sizeof(unsigned long); |
diff --git a/drivers/oprofile/oprof.c b/drivers/oprofile/oprof.c index 2c645170f06..50062cea292 100644 --- a/drivers/oprofile/oprof.c +++ b/drivers/oprofile/oprof.c | |||
@@ -19,7 +19,7 @@ | |||
19 | #include "cpu_buffer.h" | 19 | #include "cpu_buffer.h" |
20 | #include "buffer_sync.h" | 20 | #include "buffer_sync.h" |
21 | #include "oprofile_stats.h" | 21 | #include "oprofile_stats.h" |
22 | 22 | ||
23 | struct oprofile_operations oprofile_ops; | 23 | struct oprofile_operations oprofile_ops; |
24 | 24 | ||
25 | unsigned long oprofile_started; | 25 | unsigned long oprofile_started; |
@@ -36,7 +36,7 @@ static int timer = 0; | |||
36 | int oprofile_setup(void) | 36 | int oprofile_setup(void) |
37 | { | 37 | { |
38 | int err; | 38 | int err; |
39 | 39 | ||
40 | mutex_lock(&start_mutex); | 40 | mutex_lock(&start_mutex); |
41 | 41 | ||
42 | if ((err = alloc_cpu_buffers())) | 42 | if ((err = alloc_cpu_buffers())) |
@@ -44,10 +44,10 @@ int oprofile_setup(void) | |||
44 | 44 | ||
45 | if ((err = alloc_event_buffer())) | 45 | if ((err = alloc_event_buffer())) |
46 | goto out1; | 46 | goto out1; |
47 | 47 | ||
48 | if (oprofile_ops.setup && (err = oprofile_ops.setup())) | 48 | if (oprofile_ops.setup && (err = oprofile_ops.setup())) |
49 | goto out2; | 49 | goto out2; |
50 | 50 | ||
51 | /* Note even though this starts part of the | 51 | /* Note even though this starts part of the |
52 | * profiling overhead, it's necessary to prevent | 52 | * profiling overhead, it's necessary to prevent |
53 | * us missing task deaths and eventually oopsing | 53 | * us missing task deaths and eventually oopsing |
@@ -74,7 +74,7 @@ post_sync: | |||
74 | is_setup = 1; | 74 | is_setup = 1; |
75 | mutex_unlock(&start_mutex); | 75 | mutex_unlock(&start_mutex); |
76 | return 0; | 76 | return 0; |
77 | 77 | ||
78 | out3: | 78 | out3: |
79 | if (oprofile_ops.shutdown) | 79 | if (oprofile_ops.shutdown) |
80 | oprofile_ops.shutdown(); | 80 | oprofile_ops.shutdown(); |
@@ -92,17 +92,17 @@ out: | |||
92 | int oprofile_start(void) | 92 | int oprofile_start(void) |
93 | { | 93 | { |
94 | int err = -EINVAL; | 94 | int err = -EINVAL; |
95 | 95 | ||
96 | mutex_lock(&start_mutex); | 96 | mutex_lock(&start_mutex); |
97 | 97 | ||
98 | if (!is_setup) | 98 | if (!is_setup) |
99 | goto out; | 99 | goto out; |
100 | 100 | ||
101 | err = 0; | 101 | err = 0; |
102 | 102 | ||
103 | if (oprofile_started) | 103 | if (oprofile_started) |
104 | goto out; | 104 | goto out; |
105 | 105 | ||
106 | oprofile_reset_stats(); | 106 | oprofile_reset_stats(); |
107 | 107 | ||
108 | if ((err = oprofile_ops.start())) | 108 | if ((err = oprofile_ops.start())) |
@@ -114,7 +114,7 @@ out: | |||
114 | return err; | 114 | return err; |
115 | } | 115 | } |
116 | 116 | ||
117 | 117 | ||
118 | /* echo 0>/dev/oprofile/enable */ | 118 | /* echo 0>/dev/oprofile/enable */ |
119 | void oprofile_stop(void) | 119 | void oprofile_stop(void) |
120 | { | 120 | { |
@@ -204,13 +204,13 @@ static void __exit oprofile_exit(void) | |||
204 | oprofile_arch_exit(); | 204 | oprofile_arch_exit(); |
205 | } | 205 | } |
206 | 206 | ||
207 | 207 | ||
208 | module_init(oprofile_init); | 208 | module_init(oprofile_init); |
209 | module_exit(oprofile_exit); | 209 | module_exit(oprofile_exit); |
210 | 210 | ||
211 | module_param_named(timer, timer, int, 0644); | 211 | module_param_named(timer, timer, int, 0644); |
212 | MODULE_PARM_DESC(timer, "force use of timer interrupt"); | 212 | MODULE_PARM_DESC(timer, "force use of timer interrupt"); |
213 | 213 | ||
214 | MODULE_LICENSE("GPL"); | 214 | MODULE_LICENSE("GPL"); |
215 | MODULE_AUTHOR("John Levon <levon@movementarian.org>"); | 215 | MODULE_AUTHOR("John Levon <levon@movementarian.org>"); |
216 | MODULE_DESCRIPTION("OProfile system profiler"); | 216 | MODULE_DESCRIPTION("OProfile system profiler"); |
diff --git a/drivers/oprofile/oprof.h b/drivers/oprofile/oprof.h index 18323650806..7a44ddba0be 100644 --- a/drivers/oprofile/oprof.h +++ b/drivers/oprofile/oprof.h | |||
@@ -31,8 +31,8 @@ extern unsigned long backtrace_depth; | |||
31 | struct super_block; | 31 | struct super_block; |
32 | struct dentry; | 32 | struct dentry; |
33 | 33 | ||
34 | void oprofile_create_files(struct super_block * sb, struct dentry * root); | 34 | void oprofile_create_files(struct super_block *sb, struct dentry *root); |
35 | void oprofile_timer_init(struct oprofile_operations * ops); | 35 | void oprofile_timer_init(struct oprofile_operations *ops); |
36 | 36 | ||
37 | int oprofile_set_backtrace(unsigned long depth); | 37 | int oprofile_set_backtrace(unsigned long depth); |
38 | 38 | ||
diff --git a/drivers/oprofile/oprofile_files.c b/drivers/oprofile/oprofile_files.c index ef953ba5ab6..241804abbb5 100644 --- a/drivers/oprofile/oprofile_files.c +++ b/drivers/oprofile/oprofile_files.c | |||
@@ -18,13 +18,13 @@ unsigned long fs_buffer_size = 131072; | |||
18 | unsigned long fs_cpu_buffer_size = 8192; | 18 | unsigned long fs_cpu_buffer_size = 8192; |
19 | unsigned long fs_buffer_watershed = 32768; /* FIXME: tune */ | 19 | unsigned long fs_buffer_watershed = 32768; /* FIXME: tune */ |
20 | 20 | ||
21 | static ssize_t depth_read(struct file * file, char __user * buf, size_t count, loff_t * offset) | 21 | static ssize_t depth_read(struct file *file, char __user *buf, size_t count, loff_t *offset) |
22 | { | 22 | { |
23 | return oprofilefs_ulong_to_user(backtrace_depth, buf, count, offset); | 23 | return oprofilefs_ulong_to_user(backtrace_depth, buf, count, offset); |
24 | } | 24 | } |
25 | 25 | ||
26 | 26 | ||
27 | static ssize_t depth_write(struct file * file, char const __user * buf, size_t count, loff_t * offset) | 27 | static ssize_t depth_write(struct file *file, char const __user *buf, size_t count, loff_t *offset) |
28 | { | 28 | { |
29 | unsigned long val; | 29 | unsigned long val; |
30 | int retval; | 30 | int retval; |
@@ -50,7 +50,7 @@ static const struct file_operations depth_fops = { | |||
50 | }; | 50 | }; |
51 | 51 | ||
52 | 52 | ||
53 | static ssize_t pointer_size_read(struct file * file, char __user * buf, size_t count, loff_t * offset) | 53 | static ssize_t pointer_size_read(struct file *file, char __user *buf, size_t count, loff_t *offset) |
54 | { | 54 | { |
55 | return oprofilefs_ulong_to_user(sizeof(void *), buf, count, offset); | 55 | return oprofilefs_ulong_to_user(sizeof(void *), buf, count, offset); |
56 | } | 56 | } |
@@ -61,7 +61,7 @@ static const struct file_operations pointer_size_fops = { | |||
61 | }; | 61 | }; |
62 | 62 | ||
63 | 63 | ||
64 | static ssize_t cpu_type_read(struct file * file, char __user * buf, size_t count, loff_t * offset) | 64 | static ssize_t cpu_type_read(struct file *file, char __user *buf, size_t count, loff_t *offset) |
65 | { | 65 | { |
66 | return oprofilefs_str_to_user(oprofile_ops.cpu_type, buf, count, offset); | 66 | return oprofilefs_str_to_user(oprofile_ops.cpu_type, buf, count, offset); |
67 | } | 67 | } |
@@ -72,13 +72,13 @@ static const struct file_operations cpu_type_fops = { | |||
72 | }; | 72 | }; |
73 | 73 | ||
74 | 74 | ||
75 | static ssize_t enable_read(struct file * file, char __user * buf, size_t count, loff_t * offset) | 75 | static ssize_t enable_read(struct file *file, char __user *buf, size_t count, loff_t *offset) |
76 | { | 76 | { |
77 | return oprofilefs_ulong_to_user(oprofile_started, buf, count, offset); | 77 | return oprofilefs_ulong_to_user(oprofile_started, buf, count, offset); |
78 | } | 78 | } |
79 | 79 | ||
80 | 80 | ||
81 | static ssize_t enable_write(struct file * file, char const __user * buf, size_t count, loff_t * offset) | 81 | static ssize_t enable_write(struct file *file, char const __user *buf, size_t count, loff_t *offset) |
82 | { | 82 | { |
83 | unsigned long val; | 83 | unsigned long val; |
84 | int retval; | 84 | int retval; |
@@ -107,7 +107,7 @@ static const struct file_operations enable_fops = { | |||
107 | }; | 107 | }; |
108 | 108 | ||
109 | 109 | ||
110 | static ssize_t dump_write(struct file * file, char const __user * buf, size_t count, loff_t * offset) | 110 | static ssize_t dump_write(struct file *file, char const __user *buf, size_t count, loff_t *offset) |
111 | { | 111 | { |
112 | wake_up_buffer_waiter(); | 112 | wake_up_buffer_waiter(); |
113 | return count; | 113 | return count; |
@@ -118,7 +118,7 @@ static const struct file_operations dump_fops = { | |||
118 | .write = dump_write, | 118 | .write = dump_write, |
119 | }; | 119 | }; |
120 | 120 | ||
121 | void oprofile_create_files(struct super_block * sb, struct dentry * root) | 121 | void oprofile_create_files(struct super_block *sb, struct dentry *root) |
122 | { | 122 | { |
123 | oprofilefs_create_file(sb, root, "enable", &enable_fops); | 123 | oprofilefs_create_file(sb, root, "enable", &enable_fops); |
124 | oprofilefs_create_file_perm(sb, root, "dump", &dump_fops, 0666); | 124 | oprofilefs_create_file_perm(sb, root, "dump", &dump_fops, 0666); |
diff --git a/drivers/oprofile/oprofile_stats.c b/drivers/oprofile/oprofile_stats.c index f99b28e7b79..e0c45498d17 100644 --- a/drivers/oprofile/oprofile_stats.c +++ b/drivers/oprofile/oprofile_stats.c | |||
@@ -19,7 +19,7 @@ struct oprofile_stat_struct oprofile_stats; | |||
19 | 19 | ||
20 | void oprofile_reset_stats(void) | 20 | void oprofile_reset_stats(void) |
21 | { | 21 | { |
22 | struct oprofile_cpu_buffer * cpu_buf; | 22 | struct oprofile_cpu_buffer *cpu_buf; |
23 | int i; | 23 | int i; |
24 | 24 | ||
25 | for_each_possible_cpu(i) { | 25 | for_each_possible_cpu(i) { |
@@ -36,11 +36,11 @@ void oprofile_reset_stats(void) | |||
36 | } | 36 | } |
37 | 37 | ||
38 | 38 | ||
39 | void oprofile_create_stats_files(struct super_block * sb, struct dentry * root) | 39 | void oprofile_create_stats_files(struct super_block *sb, struct dentry *root) |
40 | { | 40 | { |
41 | struct oprofile_cpu_buffer * cpu_buf; | 41 | struct oprofile_cpu_buffer *cpu_buf; |
42 | struct dentry * cpudir; | 42 | struct dentry *cpudir; |
43 | struct dentry * dir; | 43 | struct dentry *dir; |
44 | char buf[10]; | 44 | char buf[10]; |
45 | int i; | 45 | int i; |
46 | 46 | ||
diff --git a/drivers/oprofile/oprofile_stats.h b/drivers/oprofile/oprofile_stats.h index 6d755a633f1..54e59c29b43 100644 --- a/drivers/oprofile/oprofile_stats.h +++ b/drivers/oprofile/oprofile_stats.h | |||
@@ -28,6 +28,6 @@ struct super_block; | |||
28 | struct dentry; | 28 | struct dentry; |
29 | 29 | ||
30 | /* create the stats/ dir */ | 30 | /* create the stats/ dir */ |
31 | void oprofile_create_stats_files(struct super_block * sb, struct dentry * root); | 31 | void oprofile_create_stats_files(struct super_block *sb, struct dentry *root); |
32 | 32 | ||
33 | #endif /* OPROFILE_STATS_H */ | 33 | #endif /* OPROFILE_STATS_H */ |
diff --git a/drivers/oprofile/oprofilefs.c b/drivers/oprofile/oprofilefs.c index 8543cb26cf3..a275a3aa5f0 100644 --- a/drivers/oprofile/oprofilefs.c +++ b/drivers/oprofile/oprofilefs.c | |||
@@ -23,9 +23,9 @@ | |||
23 | 23 | ||
24 | DEFINE_SPINLOCK(oprofilefs_lock); | 24 | DEFINE_SPINLOCK(oprofilefs_lock); |
25 | 25 | ||
26 | static struct inode * oprofilefs_get_inode(struct super_block * sb, int mode) | 26 | static struct inode *oprofilefs_get_inode(struct super_block *sb, int mode) |
27 | { | 27 | { |
28 | struct inode * inode = new_inode(sb); | 28 | struct inode *inode = new_inode(sb); |
29 | 29 | ||
30 | if (inode) { | 30 | if (inode) { |
31 | inode->i_mode = mode; | 31 | inode->i_mode = mode; |
@@ -44,7 +44,7 @@ static struct super_operations s_ops = { | |||
44 | }; | 44 | }; |
45 | 45 | ||
46 | 46 | ||
47 | ssize_t oprofilefs_str_to_user(char const * str, char __user * buf, size_t count, loff_t * offset) | 47 | ssize_t oprofilefs_str_to_user(char const *str, char __user *buf, size_t count, loff_t *offset) |
48 | { | 48 | { |
49 | return simple_read_from_buffer(buf, count, offset, str, strlen(str)); | 49 | return simple_read_from_buffer(buf, count, offset, str, strlen(str)); |
50 | } | 50 | } |
@@ -52,7 +52,7 @@ ssize_t oprofilefs_str_to_user(char const * str, char __user * buf, size_t count | |||
52 | 52 | ||
53 | #define TMPBUFSIZE 50 | 53 | #define TMPBUFSIZE 50 |
54 | 54 | ||
55 | ssize_t oprofilefs_ulong_to_user(unsigned long val, char __user * buf, size_t count, loff_t * offset) | 55 | ssize_t oprofilefs_ulong_to_user(unsigned long val, char __user *buf, size_t count, loff_t *offset) |
56 | { | 56 | { |
57 | char tmpbuf[TMPBUFSIZE]; | 57 | char tmpbuf[TMPBUFSIZE]; |
58 | size_t maxlen = snprintf(tmpbuf, TMPBUFSIZE, "%lu\n", val); | 58 | size_t maxlen = snprintf(tmpbuf, TMPBUFSIZE, "%lu\n", val); |
@@ -62,7 +62,7 @@ ssize_t oprofilefs_ulong_to_user(unsigned long val, char __user * buf, size_t co | |||
62 | } | 62 | } |
63 | 63 | ||
64 | 64 | ||
65 | int oprofilefs_ulong_from_user(unsigned long * val, char const __user * buf, size_t count) | 65 | int oprofilefs_ulong_from_user(unsigned long *val, char const __user *buf, size_t count) |
66 | { | 66 | { |
67 | char tmpbuf[TMPBUFSIZE]; | 67 | char tmpbuf[TMPBUFSIZE]; |
68 | unsigned long flags; | 68 | unsigned long flags; |
@@ -85,16 +85,16 @@ int oprofilefs_ulong_from_user(unsigned long * val, char const __user * buf, siz | |||
85 | } | 85 | } |
86 | 86 | ||
87 | 87 | ||
88 | static ssize_t ulong_read_file(struct file * file, char __user * buf, size_t count, loff_t * offset) | 88 | static ssize_t ulong_read_file(struct file *file, char __user *buf, size_t count, loff_t *offset) |
89 | { | 89 | { |
90 | unsigned long * val = file->private_data; | 90 | unsigned long *val = file->private_data; |
91 | return oprofilefs_ulong_to_user(*val, buf, count, offset); | 91 | return oprofilefs_ulong_to_user(*val, buf, count, offset); |
92 | } | 92 | } |
93 | 93 | ||
94 | 94 | ||
95 | static ssize_t ulong_write_file(struct file * file, char const __user * buf, size_t count, loff_t * offset) | 95 | static ssize_t ulong_write_file(struct file *file, char const __user *buf, size_t count, loff_t *offset) |
96 | { | 96 | { |
97 | unsigned long * value = file->private_data; | 97 | unsigned long *value = file->private_data; |
98 | int retval; | 98 | int retval; |
99 | 99 | ||
100 | if (*offset) | 100 | if (*offset) |
@@ -108,7 +108,7 @@ static ssize_t ulong_write_file(struct file * file, char const __user * buf, siz | |||
108 | } | 108 | } |
109 | 109 | ||
110 | 110 | ||
111 | static int default_open(struct inode * inode, struct file * filp) | 111 | static int default_open(struct inode *inode, struct file *filp) |
112 | { | 112 | { |
113 | if (inode->i_private) | 113 | if (inode->i_private) |
114 | filp->private_data = inode->i_private; | 114 | filp->private_data = inode->i_private; |
@@ -129,12 +129,12 @@ static const struct file_operations ulong_ro_fops = { | |||
129 | }; | 129 | }; |
130 | 130 | ||
131 | 131 | ||
132 | static struct dentry * __oprofilefs_create_file(struct super_block * sb, | 132 | static struct dentry *__oprofilefs_create_file(struct super_block *sb, |
133 | struct dentry * root, char const * name, const struct file_operations * fops, | 133 | struct dentry *root, char const *name, const struct file_operations *fops, |
134 | int perm) | 134 | int perm) |
135 | { | 135 | { |
136 | struct dentry * dentry; | 136 | struct dentry *dentry; |
137 | struct inode * inode; | 137 | struct inode *inode; |
138 | 138 | ||
139 | dentry = d_alloc_name(root, name); | 139 | dentry = d_alloc_name(root, name); |
140 | if (!dentry) | 140 | if (!dentry) |
@@ -150,10 +150,10 @@ static struct dentry * __oprofilefs_create_file(struct super_block * sb, | |||
150 | } | 150 | } |
151 | 151 | ||
152 | 152 | ||
153 | int oprofilefs_create_ulong(struct super_block * sb, struct dentry * root, | 153 | int oprofilefs_create_ulong(struct super_block *sb, struct dentry *root, |
154 | char const * name, unsigned long * val) | 154 | char const *name, unsigned long *val) |
155 | { | 155 | { |
156 | struct dentry * d = __oprofilefs_create_file(sb, root, name, | 156 | struct dentry *d = __oprofilefs_create_file(sb, root, name, |
157 | &ulong_fops, 0644); | 157 | &ulong_fops, 0644); |
158 | if (!d) | 158 | if (!d) |
159 | return -EFAULT; | 159 | return -EFAULT; |
@@ -163,10 +163,10 @@ int oprofilefs_create_ulong(struct super_block * sb, struct dentry * root, | |||
163 | } | 163 | } |
164 | 164 | ||
165 | 165 | ||
166 | int oprofilefs_create_ro_ulong(struct super_block * sb, struct dentry * root, | 166 | int oprofilefs_create_ro_ulong(struct super_block *sb, struct dentry *root, |
167 | char const * name, unsigned long * val) | 167 | char const *name, unsigned long *val) |
168 | { | 168 | { |
169 | struct dentry * d = __oprofilefs_create_file(sb, root, name, | 169 | struct dentry *d = __oprofilefs_create_file(sb, root, name, |
170 | &ulong_ro_fops, 0444); | 170 | &ulong_ro_fops, 0444); |
171 | if (!d) | 171 | if (!d) |
172 | return -EFAULT; | 172 | return -EFAULT; |
@@ -176,9 +176,9 @@ int oprofilefs_create_ro_ulong(struct super_block * sb, struct dentry * root, | |||
176 | } | 176 | } |
177 | 177 | ||
178 | 178 | ||
179 | static ssize_t atomic_read_file(struct file * file, char __user * buf, size_t count, loff_t * offset) | 179 | static ssize_t atomic_read_file(struct file *file, char __user *buf, size_t count, loff_t *offset) |
180 | { | 180 | { |
181 | atomic_t * val = file->private_data; | 181 | atomic_t *val = file->private_data; |
182 | return oprofilefs_ulong_to_user(atomic_read(val), buf, count, offset); | 182 | return oprofilefs_ulong_to_user(atomic_read(val), buf, count, offset); |
183 | } | 183 | } |
184 | 184 | ||
@@ -189,10 +189,10 @@ static const struct file_operations atomic_ro_fops = { | |||
189 | }; | 189 | }; |
190 | 190 | ||
191 | 191 | ||
192 | int oprofilefs_create_ro_atomic(struct super_block * sb, struct dentry * root, | 192 | int oprofilefs_create_ro_atomic(struct super_block *sb, struct dentry *root, |
193 | char const * name, atomic_t * val) | 193 | char const *name, atomic_t *val) |
194 | { | 194 | { |
195 | struct dentry * d = __oprofilefs_create_file(sb, root, name, | 195 | struct dentry *d = __oprofilefs_create_file(sb, root, name, |
196 | &atomic_ro_fops, 0444); | 196 | &atomic_ro_fops, 0444); |
197 | if (!d) | 197 | if (!d) |
198 | return -EFAULT; | 198 | return -EFAULT; |
@@ -202,8 +202,8 @@ int oprofilefs_create_ro_atomic(struct super_block * sb, struct dentry * root, | |||
202 | } | 202 | } |
203 | 203 | ||
204 | 204 | ||
205 | int oprofilefs_create_file(struct super_block * sb, struct dentry * root, | 205 | int oprofilefs_create_file(struct super_block *sb, struct dentry *root, |
206 | char const * name, const struct file_operations * fops) | 206 | char const *name, const struct file_operations *fops) |
207 | { | 207 | { |
208 | if (!__oprofilefs_create_file(sb, root, name, fops, 0644)) | 208 | if (!__oprofilefs_create_file(sb, root, name, fops, 0644)) |
209 | return -EFAULT; | 209 | return -EFAULT; |
@@ -211,8 +211,8 @@ int oprofilefs_create_file(struct super_block * sb, struct dentry * root, | |||
211 | } | 211 | } |
212 | 212 | ||
213 | 213 | ||
214 | int oprofilefs_create_file_perm(struct super_block * sb, struct dentry * root, | 214 | int oprofilefs_create_file_perm(struct super_block *sb, struct dentry *root, |
215 | char const * name, const struct file_operations * fops, int perm) | 215 | char const *name, const struct file_operations *fops, int perm) |
216 | { | 216 | { |
217 | if (!__oprofilefs_create_file(sb, root, name, fops, perm)) | 217 | if (!__oprofilefs_create_file(sb, root, name, fops, perm)) |
218 | return -EFAULT; | 218 | return -EFAULT; |
@@ -220,11 +220,11 @@ int oprofilefs_create_file_perm(struct super_block * sb, struct dentry * root, | |||
220 | } | 220 | } |
221 | 221 | ||
222 | 222 | ||
223 | struct dentry * oprofilefs_mkdir(struct super_block * sb, | 223 | struct dentry *oprofilefs_mkdir(struct super_block *sb, |
224 | struct dentry * root, char const * name) | 224 | struct dentry *root, char const *name) |
225 | { | 225 | { |
226 | struct dentry * dentry; | 226 | struct dentry *dentry; |
227 | struct inode * inode; | 227 | struct inode *inode; |
228 | 228 | ||
229 | dentry = d_alloc_name(root, name); | 229 | dentry = d_alloc_name(root, name); |
230 | if (!dentry) | 230 | if (!dentry) |
@@ -241,10 +241,10 @@ struct dentry * oprofilefs_mkdir(struct super_block * sb, | |||
241 | } | 241 | } |
242 | 242 | ||
243 | 243 | ||
244 | static int oprofilefs_fill_super(struct super_block * sb, void * data, int silent) | 244 | static int oprofilefs_fill_super(struct super_block *sb, void *data, int silent) |
245 | { | 245 | { |
246 | struct inode * root_inode; | 246 | struct inode *root_inode; |
247 | struct dentry * root_dentry; | 247 | struct dentry *root_dentry; |
248 | 248 | ||
249 | sb->s_blocksize = PAGE_CACHE_SIZE; | 249 | sb->s_blocksize = PAGE_CACHE_SIZE; |
250 | sb->s_blocksize_bits = PAGE_CACHE_SHIFT; | 250 | sb->s_blocksize_bits = PAGE_CACHE_SHIFT; |
diff --git a/drivers/oprofile/timer_int.c b/drivers/oprofile/timer_int.c index 710a45f0d73..7258b141a51 100644 --- a/drivers/oprofile/timer_int.c +++ b/drivers/oprofile/timer_int.c | |||
@@ -35,7 +35,7 @@ static void timer_stop(void) | |||
35 | } | 35 | } |
36 | 36 | ||
37 | 37 | ||
38 | void __init oprofile_timer_init(struct oprofile_operations * ops) | 38 | void __init oprofile_timer_init(struct oprofile_operations *ops) |
39 | { | 39 | { |
40 | ops->create_files = NULL; | 40 | ops->create_files = NULL; |
41 | ops->setup = NULL; | 41 | ops->setup = NULL; |