diff options
Diffstat (limited to 'arch/um/kernel/process.c')
-rw-r--r-- | arch/um/kernel/process.c | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c index 4a28a1568d85..2f910a1b7454 100644 --- a/arch/um/kernel/process.c +++ b/arch/um/kernel/process.c | |||
@@ -9,11 +9,13 @@ | |||
9 | #include <linux/hardirq.h> | 9 | #include <linux/hardirq.h> |
10 | #include <linux/gfp.h> | 10 | #include <linux/gfp.h> |
11 | #include <linux/mm.h> | 11 | #include <linux/mm.h> |
12 | #include <linux/module.h> | ||
12 | #include <linux/personality.h> | 13 | #include <linux/personality.h> |
13 | #include <linux/proc_fs.h> | 14 | #include <linux/proc_fs.h> |
14 | #include <linux/ptrace.h> | 15 | #include <linux/ptrace.h> |
15 | #include <linux/random.h> | 16 | #include <linux/random.h> |
16 | #include <linux/sched.h> | 17 | #include <linux/sched.h> |
18 | #include <linux/seq_file.h> | ||
17 | #include <linux/tick.h> | 19 | #include <linux/tick.h> |
18 | #include <linux/threads.h> | 20 | #include <linux/threads.h> |
19 | #include <asm/current.h> | 21 | #include <asm/current.h> |
@@ -336,16 +338,19 @@ int get_using_sysemu(void) | |||
336 | return atomic_read(&using_sysemu); | 338 | return atomic_read(&using_sysemu); |
337 | } | 339 | } |
338 | 340 | ||
339 | static int proc_read_sysemu(char *buf, char **start, off_t offset, int size,int *eof, void *data) | 341 | static int sysemu_proc_show(struct seq_file *m, void *v) |
340 | { | 342 | { |
341 | if (snprintf(buf, size, "%d\n", get_using_sysemu()) < size) | 343 | seq_printf(m, "%d\n", get_using_sysemu()); |
342 | /* No overflow */ | 344 | return 0; |
343 | *eof = 1; | 345 | } |
344 | 346 | ||
345 | return strlen(buf); | 347 | static int sysemu_proc_open(struct inode *inode, struct file *file) |
348 | { | ||
349 | return single_open(file, sysemu_proc_show, NULL); | ||
346 | } | 350 | } |
347 | 351 | ||
348 | static int proc_write_sysemu(struct file *file,const char __user *buf, unsigned long count,void *data) | 352 | static ssize_t sysemu_proc_write(struct file *file, const char __user *buf, |
353 | size_t count, loff_t *pos) | ||
349 | { | 354 | { |
350 | char tmp[2]; | 355 | char tmp[2]; |
351 | 356 | ||
@@ -358,13 +363,22 @@ static int proc_write_sysemu(struct file *file,const char __user *buf, unsigned | |||
358 | return count; | 363 | return count; |
359 | } | 364 | } |
360 | 365 | ||
366 | static const struct file_operations sysemu_proc_fops = { | ||
367 | .owner = THIS_MODULE, | ||
368 | .open = sysemu_proc_open, | ||
369 | .read = seq_read, | ||
370 | .llseek = seq_lseek, | ||
371 | .release = single_release, | ||
372 | .write = sysemu_proc_write, | ||
373 | }; | ||
374 | |||
361 | int __init make_proc_sysemu(void) | 375 | int __init make_proc_sysemu(void) |
362 | { | 376 | { |
363 | struct proc_dir_entry *ent; | 377 | struct proc_dir_entry *ent; |
364 | if (!sysemu_supported) | 378 | if (!sysemu_supported) |
365 | return 0; | 379 | return 0; |
366 | 380 | ||
367 | ent = create_proc_entry("sysemu", 0600, NULL); | 381 | ent = proc_create("sysemu", 0600, NULL, &sysemu_proc_fops); |
368 | 382 | ||
369 | if (ent == NULL) | 383 | if (ent == NULL) |
370 | { | 384 | { |
@@ -372,9 +386,6 @@ int __init make_proc_sysemu(void) | |||
372 | return 0; | 386 | return 0; |
373 | } | 387 | } |
374 | 388 | ||
375 | ent->read_proc = proc_read_sysemu; | ||
376 | ent->write_proc = proc_write_sysemu; | ||
377 | |||
378 | return 0; | 389 | return 0; |
379 | } | 390 | } |
380 | 391 | ||