diff options
author | Michael Brown | 2008-01-08 17:46:55 +0100 |
---|---|---|
committer | Michael Brown | 2008-01-08 17:46:55 +0100 |
commit | f6a8158eed215954dafb7f622f6fd345b5b473d2 (patch) | |
tree | 74c855e3fb0a953ec463bfd4b5edb0248bd93ce8 /src/include | |
parent | Added the embedded pxelinux payload patch from hpa. (diff) | |
download | ipxe-f6a8158eed215954dafb7f622f6fd345b5b473d2.tar.gz ipxe-f6a8158eed215954dafb7f622f6fd345b5b473d2.tar.xz ipxe-f6a8158eed215954dafb7f622f6fd345b5b473d2.zip |
Make seek information part of the xfer metadata, rather than an entirely
separate xfer method.
Add missing .alloc_iob entries to several xfer_interface_operations
structures.
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/gpxe/filter.h | 2 | ||||
-rw-r--r-- | src/include/gpxe/xfer.h | 38 |
2 files changed, 16 insertions, 24 deletions
diff --git a/src/include/gpxe/filter.h b/src/include/gpxe/filter.h index 3943a9e1..126f6347 100644 --- a/src/include/gpxe/filter.h +++ b/src/include/gpxe/filter.h @@ -41,8 +41,6 @@ filter_other_half ( struct xfer_interface *xfer ) { extern void filter_close ( struct xfer_interface *xfer, int rc ); extern int filter_vredirect ( struct xfer_interface *xfer, int type, va_list args ); -extern int filter_seek ( struct xfer_interface *xfer, off_t offset, - int whence ); extern size_t filter_window ( struct xfer_interface *xfer ); extern struct io_buffer * filter_alloc_iob ( struct xfer_interface *xfer, size_t len ); diff --git a/src/include/gpxe/xfer.h b/src/include/gpxe/xfer.h index 68c1169e..c75fa002 100644 --- a/src/include/gpxe/xfer.h +++ b/src/include/gpxe/xfer.h @@ -32,17 +32,6 @@ struct xfer_interface_operations { */ int ( * vredirect ) ( struct xfer_interface *xfer, int type, va_list args ); - /** Seek to position - * - * @v xfer Data transfer interface - * @v offset Offset to new position - * @v whence Basis for new position - * @ret rc Return status code - * - * @c whence must be one of @c SEEK_SET or @c SEEK_CUR. - */ - int ( * seek ) ( struct xfer_interface *xfer, off_t offset, - int whence ); /** Check flow control window * * @v xfer Data transfer interface @@ -71,7 +60,7 @@ struct xfer_interface_operations { * * @v xfer Data transfer interface * @v iobuf Datagram I/O buffer - * @v meta Data transfer metadata, or NULL + * @v meta Data transfer metadata * @ret rc Return status code * * A data transfer interface that wishes to support only raw @@ -104,8 +93,21 @@ struct xfer_interface { struct xfer_interface_operations *op; }; +/** Basis positions for seek() events */ +enum seek_whence { + SEEK_CUR = 0, + SEEK_SET, +}; + /** Data transfer metadata */ struct xfer_metadata { + /** Position of data within stream */ + off_t offset; + /** Basis for data position + * + * Must be one of @c SEEK_CUR or @c SEEK_SET. + */ + int whence; /** Source socket address, or NULL */ struct sockaddr *src; /** Destination socket address, or NULL */ @@ -114,12 +116,6 @@ struct xfer_metadata { struct net_device *netdev; }; -/** Basis positions for seek() events */ -enum seek_whence { - SEEK_SET = 0, - SEEK_CUR, -}; - /** * Describe seek basis * @@ -128,8 +124,8 @@ enum seek_whence { static inline __attribute__ (( always_inline )) const char * whence_text ( int whence ) { switch ( whence ) { - case SEEK_SET: return "SET"; case SEEK_CUR: return "CUR"; + case SEEK_SET: return "SET"; default: return "INVALID"; } } @@ -141,7 +137,6 @@ extern void xfer_close ( struct xfer_interface *xfer, int rc ); extern int xfer_vredirect ( struct xfer_interface *xfer, int type, va_list args ); extern int xfer_redirect ( struct xfer_interface *xfer, int type, ... ); -extern int xfer_seek ( struct xfer_interface *xfer, off_t offset, int whence ); extern size_t xfer_window ( struct xfer_interface *xfer ); extern struct io_buffer * xfer_alloc_iob ( struct xfer_interface *xfer, size_t len ); @@ -156,12 +151,11 @@ extern int xfer_vprintf ( struct xfer_interface *xfer, const char *format, va_list args ); extern int xfer_printf ( struct xfer_interface *xfer, const char *format, ... ); +extern int xfer_seek ( struct xfer_interface *xfer, off_t offset, int whence ); extern void ignore_xfer_close ( struct xfer_interface *xfer, int rc ); extern int ignore_xfer_vredirect ( struct xfer_interface *xfer, int type, va_list args ); -extern int ignore_xfer_seek ( struct xfer_interface *xfer, off_t offset, - int whence ); extern size_t unlimited_xfer_window ( struct xfer_interface *xfer ); extern size_t no_xfer_window ( struct xfer_interface *xfer ); extern struct io_buffer * default_xfer_alloc_iob ( struct xfer_interface *xfer, |