atags_proc: switch to proc_create_data()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Родитель
3273097ee9
Коммит
03b642a701
|
@ -9,24 +9,18 @@ struct buffer {
|
||||||
char data[];
|
char data[];
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static ssize_t atags_read(struct file *file, char __user *buf,
|
||||||
read_buffer(char* page, char** start, off_t off, int count,
|
size_t count, loff_t *ppos)
|
||||||
int* eof, void* data)
|
|
||||||
{
|
{
|
||||||
struct buffer *buffer = (struct buffer *)data;
|
struct buffer *b = PDE(file_inode(file))->data;
|
||||||
|
return simple_read_from_buffer(buf, count, ppos, b->data, b->size);
|
||||||
if (off >= buffer->size) {
|
|
||||||
*eof = 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
count = min((int) (buffer->size - off), count);
|
|
||||||
|
|
||||||
memcpy(page, &buffer->data[off], count);
|
|
||||||
|
|
||||||
return count;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const struct file_operations atags_fops = {
|
||||||
|
.read = atags_read,
|
||||||
|
.llseek = default_llseek,
|
||||||
|
};
|
||||||
|
|
||||||
#define BOOT_PARAMS_SIZE 1536
|
#define BOOT_PARAMS_SIZE 1536
|
||||||
static char __initdata atags_copy[BOOT_PARAMS_SIZE];
|
static char __initdata atags_copy[BOOT_PARAMS_SIZE];
|
||||||
|
|
||||||
|
@ -66,9 +60,7 @@ static int __init init_atags_procfs(void)
|
||||||
b->size = size;
|
b->size = size;
|
||||||
memcpy(b->data, atags_copy, size);
|
memcpy(b->data, atags_copy, size);
|
||||||
|
|
||||||
tags_entry = create_proc_read_entry("atags", 0400,
|
tags_entry = proc_create_data("atags", 0400, NULL, &atags_fops, b);
|
||||||
NULL, read_buffer, b);
|
|
||||||
|
|
||||||
if (!tags_entry)
|
if (!tags_entry)
|
||||||
goto nomem;
|
goto nomem;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче