forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
splice: divorce the splice structure/function definitions from the pi…
…pe header We need to move even more stuff into the header so that folks can use the splice_to_pipe() implementation instead of open-coding a lot of pipe knowledge (see relay implementation), so move to our own header file finally. Signed-off-by: Jens Axboe <[email protected]>
- Loading branch information
Jens Axboe
committed
Jul 10, 2007
1 parent
ebf9909
commit d6b29d7
Showing
9 changed files
with
83 additions
and
68 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/* | ||
* Function declerations and data structures related to the splice | ||
* implementation. | ||
* | ||
* Copyright (C) 2007 Jens Axboe <[email protected]> | ||
* | ||
*/ | ||
#ifndef SPLICE_H | ||
#define SPLICE_H | ||
|
||
#include <linux/pipe_fs_i.h> | ||
|
||
/* | ||
* splice is tied to pipes as a transport (at least for now), so we'll just | ||
* add the splice flags here. | ||
*/ | ||
#define SPLICE_F_MOVE (0x01) /* move pages instead of copying */ | ||
#define SPLICE_F_NONBLOCK (0x02) /* don't block on the pipe splicing (but */ | ||
/* we may still block on the fd we splice */ | ||
/* from/to, of course */ | ||
#define SPLICE_F_MORE (0x04) /* expect more data */ | ||
#define SPLICE_F_GIFT (0x08) /* pages passed in are a gift */ | ||
|
||
/* | ||
* Passed to the actors | ||
*/ | ||
struct splice_desc { | ||
unsigned int len, total_len; /* current and remaining length */ | ||
unsigned int flags; /* splice flags */ | ||
/* | ||
* actor() private data | ||
*/ | ||
union { | ||
void __user *userptr; /* memory to write to */ | ||
struct file *file; /* file to read/write */ | ||
void *data; /* cookie */ | ||
} u; | ||
loff_t pos; /* file position */ | ||
}; | ||
|
||
struct partial_page { | ||
unsigned int offset; | ||
unsigned int len; | ||
}; | ||
|
||
/* | ||
* Passed to splice_to_pipe | ||
*/ | ||
struct splice_pipe_desc { | ||
struct page **pages; /* page map */ | ||
struct partial_page *partial; /* pages[] may not be contig */ | ||
int nr_pages; /* number of pages in map */ | ||
unsigned int flags; /* splice flags */ | ||
const struct pipe_buf_operations *ops;/* ops associated with output pipe */ | ||
}; | ||
|
||
typedef int (splice_actor)(struct pipe_inode_info *, struct pipe_buffer *, | ||
struct splice_desc *); | ||
typedef int (splice_direct_actor)(struct pipe_inode_info *, | ||
struct splice_desc *); | ||
|
||
extern ssize_t splice_from_pipe(struct pipe_inode_info *, struct file *, | ||
loff_t *, size_t, unsigned int, | ||
splice_actor *); | ||
extern ssize_t __splice_from_pipe(struct pipe_inode_info *, | ||
struct splice_desc *, splice_actor *); | ||
extern ssize_t splice_to_pipe(struct pipe_inode_info *, | ||
struct splice_pipe_desc *); | ||
extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *, | ||
splice_direct_actor *); | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters