diff options
| author | Michael Brown | 2015-08-04 16:33:11 +0200 |
|---|---|---|
| committer | Michael Brown | 2015-08-16 01:48:34 +0200 |
| commit | 09236e603055b1833c85a6a5a99de401e32df7fc (patch) | |
| tree | d38613f1b2b7030a84a441c0d3eb73366a2a5bd1 /src/include | |
| parent | [prefix] Use correct register for KEEP_IT_REAL physical address conversion (diff) | |
| download | ipxe-09236e603055b1833c85a6a5a99de401e32df7fc.tar.gz ipxe-09236e603055b1833c85a6a5a99de401e32df7fc.tar.xz ipxe-09236e603055b1833c85a6a5a99de401e32df7fc.zip | |
[block] Add generic block device translator
Add a generic mechanism for providing block devices on top of a data
transfer interface (such as HTTP).
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/ipxe/blocktrans.h | 38 | ||||
| -rw-r--r-- | src/include/ipxe/errfile.h | 1 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/include/ipxe/blocktrans.h b/src/include/ipxe/blocktrans.h new file mode 100644 index 000000000..fee71b96c --- /dev/null +++ b/src/include/ipxe/blocktrans.h @@ -0,0 +1,38 @@ +#ifndef _IPXE_BLOCKTRANS_H +#define _IPXE_BLOCKTRANS_H + +/** @file + * + * Block device translator + * + */ + +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); + +#include <stdint.h> +#include <ipxe/refcnt.h> +#include <ipxe/interface.h> +#include <ipxe/xferbuf.h> +#include <ipxe/uaccess.h> + +/** A block device translator */ +struct block_translator { + /** Reference count */ + struct refcnt refcnt; + /** Block device interface */ + struct interface block; + /** Data transfer interface */ + struct interface xfer; + + /** Data transfer buffer */ + struct xfer_buffer xferbuf; + /** Data buffer */ + userptr_t buffer; + /** Block size */ + size_t blksize; +}; + +extern int block_translate ( struct interface *block, + userptr_t buffer, size_t size ); + +#endif /* _IPXE_BLOCKTRANS_H */ diff --git a/src/include/ipxe/errfile.h b/src/include/ipxe/errfile.h index b48d2a0ce..5e46df836 100644 --- a/src/include/ipxe/errfile.h +++ b/src/include/ipxe/errfile.h @@ -69,6 +69,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #define ERRFILE_ansicol ( ERRFILE_CORE | 0x001d0000 ) #define ERRFILE_ansicoldef ( ERRFILE_CORE | 0x001e0000 ) #define ERRFILE_fault ( ERRFILE_CORE | 0x001f0000 ) +#define ERRFILE_blocktrans ( ERRFILE_CORE | 0x00200000 ) #define ERRFILE_eisa ( ERRFILE_DRIVER | 0x00000000 ) #define ERRFILE_isa ( ERRFILE_DRIVER | 0x00010000 ) |
