diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2013-03-28 18:11:13 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-04-09 14:13:03 -0400 |
commit | 03b642a7019a8ec28a450fd4c55f3048ce320f6b (patch) | |
tree | 42e4f6aeeb874911da9c22fd9922d8e492d7a811 | |
parent | 3273097ee9c077512bcb017535b0781f1e1f7a6d (diff) | |
download | lwn-03b642a7019a8ec28a450fd4c55f3048ce320f6b.tar.gz lwn-03b642a7019a8ec28a450fd4c55f3048ce320f6b.zip |
atags_proc: switch to proc_create_data()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | arch/arm/kernel/atags_proc.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/arch/arm/kernel/atags_proc.c b/arch/arm/kernel/atags_proc.c index 42a1a1415fa6..8c00f75bf1ab 100644 --- a/arch/arm/kernel/atags_proc.c +++ b/arch/arm/kernel/atags_proc.c @@ -9,24 +9,18 @@ struct buffer { char data[]; }; -static int -read_buffer(char* page, char** start, off_t off, int count, - int* eof, void* data) +static ssize_t atags_read(struct file *file, char __user *buf, + size_t count, loff_t *ppos) { - struct buffer *buffer = (struct buffer *)data; - - if (off >= buffer->size) { - *eof = 1; - return 0; - } - - count = min((int) (buffer->size - off), count); - - memcpy(page, &buffer->data[off], count); - - return count; + struct buffer *b = PDE(file_inode(file))->data; + return simple_read_from_buffer(buf, count, ppos, b->data, b->size); } +static const struct file_operations atags_fops = { + .read = atags_read, + .llseek = default_llseek, +}; + #define BOOT_PARAMS_SIZE 1536 static char __initdata atags_copy[BOOT_PARAMS_SIZE]; @@ -66,9 +60,7 @@ static int __init init_atags_procfs(void) b->size = size; memcpy(b->data, atags_copy, size); - tags_entry = create_proc_read_entry("atags", 0400, - NULL, read_buffer, b); - + tags_entry = proc_create_data("atags", 0400, NULL, &atags_fops, b); if (!tags_entry) goto nomem; |