aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/oprofile/buffer_sync.c9
-rw-r--r--drivers/oprofile/cpu_buffer.c68
-rw-r--r--drivers/oprofile/cpu_buffer.h6
-rw-r--r--drivers/oprofile/event_buffer.c10
-rw-r--r--drivers/oprofile/oprof.c24
-rw-r--r--drivers/oprofile/oprof.h4
-rw-r--r--drivers/oprofile/oprofile_files.c16
-rw-r--r--drivers/oprofile/oprofile_stats.c10
-rw-r--r--drivers/oprofile/oprofile_stats.h2
-rw-r--r--drivers/oprofile/oprofilefs.c72
-rw-r--r--drivers/oprofile/timer_int.c2
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;
41static DEFINE_SPINLOCK(task_mortuary); 41static DEFINE_SPINLOCK(task_mortuary);
42static void process_task_mortuary(void); 42static 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 */
343static void add_ibs_begin(struct oprofile_cpu_buffer *cpu_buf, int code, 342static 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. */
115void cpu_buffer_reset(struct oprofile_cpu_buffer * cpu_buf) 115void 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 */
126static unsigned long nr_available_slots(struct oprofile_cpu_buffer const * b) 126static 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
137static void increment_head(struct oprofile_cpu_buffer * b) 137static 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
151static inline void 151static inline void
152add_sample(struct oprofile_cpu_buffer * cpu_buf, 152add_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
161static inline void 161static inline void
162add_code(struct oprofile_cpu_buffer * buffer, unsigned long value) 162add_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 */
176static int log_sample(struct oprofile_cpu_buffer * cpu_buf, unsigned long pc, 176static 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
225static void oprofile_end_trace(struct oprofile_cpu_buffer * cpu_buf) 225static 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
261static int log_ibs_sample(struct oprofile_cpu_buffer *cpu_buf, 261
262 unsigned long pc, int is_kernel, unsigned int *ibs, int ibs_code) 262void 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
305void 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 */
364static void wq_sync_buffer(struct work_struct *work) 346static 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
51DECLARE_PER_CPU(struct oprofile_cpu_buffer, cpu_buffer); 51DECLARE_PER_CPU(struct oprofile_cpu_buffer, cpu_buffer);
52 52
53void cpu_buffer_reset(struct oprofile_cpu_buffer * cpu_buf); 53void 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
29static unsigned long buffer_opened; 29static unsigned long buffer_opened;
30static DECLARE_WAIT_QUEUE_HEAD(buffer_wait); 30static DECLARE_WAIT_QUEUE_HEAD(buffer_wait);
31static unsigned long * event_buffer; 31static unsigned long *event_buffer;
32static unsigned long buffer_size; 32static unsigned long buffer_size;
33static unsigned long buffer_watershed; 33static unsigned long buffer_watershed;
34static size_t buffer_pos; 34static size_t buffer_pos;
@@ -98,7 +98,7 @@ void free_event_buffer(void)
98} 98}
99 99
100 100
101static int event_buffer_open(struct inode * inode, struct file * file) 101static 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
137static int event_buffer_release(struct inode * inode, struct file * file) 137static 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
149static ssize_t event_buffer_read(struct file * file, char __user * buf, 149static 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
23struct oprofile_operations oprofile_ops; 23struct oprofile_operations oprofile_ops;
24 24
25unsigned long oprofile_started; 25unsigned long oprofile_started;
@@ -36,7 +36,7 @@ static int timer = 0;
36int oprofile_setup(void) 36int 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
78out3: 78out3:
79 if (oprofile_ops.shutdown) 79 if (oprofile_ops.shutdown)
80 oprofile_ops.shutdown(); 80 oprofile_ops.shutdown();
@@ -92,17 +92,17 @@ out:
92int oprofile_start(void) 92int 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 */
119void oprofile_stop(void) 119void 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
208module_init(oprofile_init); 208module_init(oprofile_init);
209module_exit(oprofile_exit); 209module_exit(oprofile_exit);
210 210
211module_param_named(timer, timer, int, 0644); 211module_param_named(timer, timer, int, 0644);
212MODULE_PARM_DESC(timer, "force use of timer interrupt"); 212MODULE_PARM_DESC(timer, "force use of timer interrupt");
213 213
214MODULE_LICENSE("GPL"); 214MODULE_LICENSE("GPL");
215MODULE_AUTHOR("John Levon <levon@movementarian.org>"); 215MODULE_AUTHOR("John Levon <levon@movementarian.org>");
216MODULE_DESCRIPTION("OProfile system profiler"); 216MODULE_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;
31struct super_block; 31struct super_block;
32struct dentry; 32struct dentry;
33 33
34void oprofile_create_files(struct super_block * sb, struct dentry * root); 34void oprofile_create_files(struct super_block *sb, struct dentry *root);
35void oprofile_timer_init(struct oprofile_operations * ops); 35void oprofile_timer_init(struct oprofile_operations *ops);
36 36
37int oprofile_set_backtrace(unsigned long depth); 37int 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;
18unsigned long fs_cpu_buffer_size = 8192; 18unsigned long fs_cpu_buffer_size = 8192;
19unsigned long fs_buffer_watershed = 32768; /* FIXME: tune */ 19unsigned long fs_buffer_watershed = 32768; /* FIXME: tune */
20 20
21static ssize_t depth_read(struct file * file, char __user * buf, size_t count, loff_t * offset) 21static 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
27static ssize_t depth_write(struct file * file, char const __user * buf, size_t count, loff_t * offset) 27static 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
53static ssize_t pointer_size_read(struct file * file, char __user * buf, size_t count, loff_t * offset) 53static 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
64static ssize_t cpu_type_read(struct file * file, char __user * buf, size_t count, loff_t * offset) 64static 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
75static ssize_t enable_read(struct file * file, char __user * buf, size_t count, loff_t * offset) 75static 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
81static ssize_t enable_write(struct file * file, char const __user * buf, size_t count, loff_t * offset) 81static 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
110static ssize_t dump_write(struct file * file, char const __user * buf, size_t count, loff_t * offset) 110static 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
121void oprofile_create_files(struct super_block * sb, struct dentry * root) 121void 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
20void oprofile_reset_stats(void) 20void 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
39void oprofile_create_stats_files(struct super_block * sb, struct dentry * root) 39void 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;
28struct dentry; 28struct dentry;
29 29
30/* create the stats/ dir */ 30/* create the stats/ dir */
31void oprofile_create_stats_files(struct super_block * sb, struct dentry * root); 31void 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
24DEFINE_SPINLOCK(oprofilefs_lock); 24DEFINE_SPINLOCK(oprofilefs_lock);
25 25
26static struct inode * oprofilefs_get_inode(struct super_block * sb, int mode) 26static 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
47ssize_t oprofilefs_str_to_user(char const * str, char __user * buf, size_t count, loff_t * offset) 47ssize_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
55ssize_t oprofilefs_ulong_to_user(unsigned long val, char __user * buf, size_t count, loff_t * offset) 55ssize_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
65int oprofilefs_ulong_from_user(unsigned long * val, char const __user * buf, size_t count) 65int 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
88static ssize_t ulong_read_file(struct file * file, char __user * buf, size_t count, loff_t * offset) 88static 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
95static ssize_t ulong_write_file(struct file * file, char const __user * buf, size_t count, loff_t * offset) 95static 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
111static int default_open(struct inode * inode, struct file * filp) 111static 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
132static struct dentry * __oprofilefs_create_file(struct super_block * sb, 132static 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
153int oprofilefs_create_ulong(struct super_block * sb, struct dentry * root, 153int 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
166int oprofilefs_create_ro_ulong(struct super_block * sb, struct dentry * root, 166int 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
179static ssize_t atomic_read_file(struct file * file, char __user * buf, size_t count, loff_t * offset) 179static 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
192int oprofilefs_create_ro_atomic(struct super_block * sb, struct dentry * root, 192int 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
205int oprofilefs_create_file(struct super_block * sb, struct dentry * root, 205int 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
214int oprofilefs_create_file_perm(struct super_block * sb, struct dentry * root, 214int 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
223struct dentry * oprofilefs_mkdir(struct super_block * sb, 223struct 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
244static int oprofilefs_fill_super(struct super_block * sb, void * data, int silent) 244static 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
38void __init oprofile_timer_init(struct oprofile_operations * ops) 38void __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;