introduce memory_read_from_buffer()

This patch introduces memory_read_from_buffer().

The only difference between memory_read_from_buffer() and
simple_read_from_buffer() is which address space the function copies to.

simple_read_from_buffer copies to user space memory.
memory_read_from_buffer copies to normal memory.

Signed-off-by: Akinobu Mita <[email protected]>
Cc: Al Viro <[email protected]>
Cc: Doug Warzecha <[email protected]>
Cc: Zhang Rui <[email protected]>
Cc: Matt Domsch <[email protected]>
Cc: Abhay Salunke <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Markus Rechberger <[email protected]>
Cc: Kay Sievers <[email protected]>
Cc: Bob Moore <[email protected]>
Cc: Thomas Renninger <[email protected]>
Cc: Len Brown <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: "Antonino A. Daplas" <[email protected]>
Cc: Krzysztof Helt <[email protected]>
Cc: Geert Uytterhoeven <[email protected]>
Cc: Martin Schwidefsky <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Peter Oberparleiter <[email protected]>
Cc: Michael Holzheu <[email protected]>
Cc: Brian King <[email protected]>
Cc: James E.J. Bottomley <[email protected]>
Cc: Andrew Vasquez <[email protected]>
Cc: Seokmann Ju <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
Akinobu Mita 2008-06-05 22:46:21 -07:00 • committed by Linus Torvalds
commit 93b071139a
2 changed files with 22 additions and 1 deletions

View file

@ -528,6 +528,23 @@ ssize_t simple_read_from_buffer(void __user *to, size_t count, loff_t *ppos,
return count;
}
ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos,
const void *from, size_t available)
{
loff_t pos = *ppos;
if (pos < 0)
return -EINVAL;
if (pos >= available)
return 0;
if (count > available - pos)
count = available - pos;
memcpy(to, from + pos, count);
*ppos = pos + count;
return count;
}
/*
* Transaction based IO.
* The file expects a single write which triggers the transaction, and then
@ -800,6 +817,7 @@ EXPORT_SYMBOL(simple_statfs);
EXPORT_SYMBOL(simple_sync_file);
EXPORT_SYMBOL(simple_unlink);
EXPORT_SYMBOL(simple_read_from_buffer);
EXPORT_SYMBOL(memory_read_from_buffer);
EXPORT_SYMBOL(simple_transaction_get);
EXPORT_SYMBOL(simple_transaction_read);
EXPORT_SYMBOL(simple_transaction_release);