mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-21 10:05:00 +08:00
8f9c0119d7
This function is used by sparc, powerpc and arm64 for compat support. The patch adds a generic implementation which calls do_sendfile() directly and avoids set_fs(). The sparc architecture has wrappers for the sign extensions while powerpc relies on the compiler to do the this. The patch adds wrappers for powerpc to handle the u32->int type conversion. compat_sys_sendfile64() can be replaced by a sys_sendfile() call since compat_loff_t has the same size as off_t on a 64-bit system. On powerpc, the patch also changes the 64-bit sendfile call from sys_sendile64 to sys_sendfile. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Acked-by: David S. Miller <davem@davemloft.net> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
17 lines
632 B
C
17 lines
632 B
C
/*
|
|
* This file is only for sharing some helpers from read_write.c with compat.c.
|
|
* Don't use anywhere else.
|
|
*/
|
|
|
|
|
|
typedef ssize_t (*io_fn_t)(struct file *, char __user *, size_t, loff_t *);
|
|
typedef ssize_t (*iov_fn_t)(struct kiocb *, const struct iovec *,
|
|
unsigned long, loff_t);
|
|
|
|
ssize_t do_sync_readv_writev(struct file *filp, const struct iovec *iov,
|
|
unsigned long nr_segs, size_t len, loff_t *ppos, iov_fn_t fn);
|
|
ssize_t do_loop_readv_writev(struct file *filp, struct iovec *iov,
|
|
unsigned long nr_segs, loff_t *ppos, io_fn_t fn);
|
|
ssize_t do_sendfile(int out_fd, int in_fd, loff_t *ppos, size_t count,
|
|
loff_t max);
|