mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-06 14:31:46 +00:00
[TCP]: Splice receive support.
Support for network splice receive. Signed-off-by: Jens Axboe <jens.axboe@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
bbdfc2f706
commit
9c55e01c0c
7 changed files with 401 additions and 0 deletions
13
net/socket.c
13
net/socket.c
|
@ -112,6 +112,9 @@ static long compat_sock_ioctl(struct file *file,
|
|||
static int sock_fasync(int fd, struct file *filp, int on);
|
||||
static ssize_t sock_sendpage(struct file *file, struct page *page,
|
||||
int offset, size_t size, loff_t *ppos, int more);
|
||||
static ssize_t sock_splice_read(struct file *file, loff_t *ppos,
|
||||
struct pipe_inode_info *pipe, size_t len,
|
||||
unsigned int flags);
|
||||
|
||||
/*
|
||||
* Socket files have a set of 'special' operations as well as the generic file ones. These don't appear
|
||||
|
@ -134,6 +137,7 @@ static const struct file_operations socket_file_ops = {
|
|||
.fasync = sock_fasync,
|
||||
.sendpage = sock_sendpage,
|
||||
.splice_write = generic_splice_sendpage,
|
||||
.splice_read = sock_splice_read,
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -691,6 +695,15 @@ static ssize_t sock_sendpage(struct file *file, struct page *page,
|
|||
return sock->ops->sendpage(sock, page, offset, size, flags);
|
||||
}
|
||||
|
||||
static ssize_t sock_splice_read(struct file *file, loff_t *ppos,
|
||||
struct pipe_inode_info *pipe, size_t len,
|
||||
unsigned int flags)
|
||||
{
|
||||
struct socket *sock = file->private_data;
|
||||
|
||||
return sock->ops->splice_read(sock, ppos, pipe, len, flags);
|
||||
}
|
||||
|
||||
static struct sock_iocb *alloc_sock_iocb(struct kiocb *iocb,
|
||||
struct sock_iocb *siocb)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue