summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorMichael Brown2008-01-08 17:46:55 +0100
committerMichael Brown2008-01-08 17:46:55 +0100
commitf6a8158eed215954dafb7f622f6fd345b5b473d2 (patch)
tree74c855e3fb0a953ec463bfd4b5edb0248bd93ce8 /src/include
parentAdded the embedded pxelinux payload patch from hpa. (diff)
downloadipxe-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.h2
-rw-r--r--src/include/gpxe/xfer.h38
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,