iPXE
|
Block device translator. More...
#include <stdlib.h>
#include <errno.h>
#include <assert.h>
#include <ipxe/iobuf.h>
#include <ipxe/xfer.h>
#include <ipxe/blockdev.h>
#include <ipxe/blocktrans.h>
Go to the source code of this file.
Functions | |
FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
static int | blktrans_xferbuf_realloc (struct xfer_buffer *xferbuf, size_t len) |
Reallocate block device translator data buffer. More... | |
static void | blktrans_xferbuf_write (struct xfer_buffer *xferbuf, size_t offset, const void *data, size_t len) |
Write data to block device translator data buffer. More... | |
static void | blktrans_xferbuf_read (struct xfer_buffer *xferbuf, size_t offset, void *data, size_t len) |
Read data from block device translator data buffer. More... | |
static void | blktrans_close (struct block_translator *blktrans, int rc) |
Close block device translator. More... | |
static int | blktrans_deliver (struct block_translator *blktrans, struct io_buffer *iobuf, struct xfer_metadata *meta) |
Deliver data. More... | |
static struct xfer_buffer * | blktrans_buffer (struct block_translator *blktrans) |
Get underlying data transfer buffer. More... | |
int | block_translate (struct interface *block, userptr_t buffer, size_t size) |
Insert block device translator. More... | |
Variables | |
static struct xfer_buffer_operations | blktrans_xferbuf_operations |
Block device translator data transfer buffer operations. More... | |
static struct interface_operation | blktrans_block_operations [] |
Block device translator block device interface operations. More... | |
static struct interface_descriptor | blktrans_block_desc |
Block device translator block device interface descriptor. More... | |
static struct interface_operation | blktrans_xfer_operations [] |
Block device translator data transfer interface operations. More... | |
static struct interface_descriptor | blktrans_xfer_desc |
Block device translator data transfer interface descriptor. More... | |
Block device translator.
Definition in file blocktrans.c.
FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
|
static |
Reallocate block device translator data buffer.
xferbuf | Data transfer buffer |
len | New length (or zero to free buffer) |
rc | Return status code |
Definition at line 48 of file blocktrans.c.
References block_translator::buffer, container_of, ENOTSUP, len, xfer_buffer::len, and block_translator::xferbuf.
|
static |
Write data to block device translator data buffer.
xferbuf | Data transfer buffer |
offset | Starting offset |
data | Data to copy |
len | Length of data |
Definition at line 75 of file blocktrans.c.
References assert(), block_translator::buffer, container_of, copy_to_user(), data, len, offset, and block_translator::xferbuf.
|
static |
Read data from block device translator data buffer.
xferbuf | Data transfer buffer |
offset | Starting offset |
data | Data to read |
len | Length of data |
Definition at line 101 of file blocktrans.c.
References assert(), block_translator::buffer, container_of, copy_from_user(), data, len, offset, and block_translator::xferbuf.
|
static |
Close block device translator.
blktrans | Block device translator |
rc | Reason for close |
Definition at line 132 of file blocktrans.c.
References block_device_capacity::blksize, block_translator::blksize, block_translator::block, block_capacity(), block_device_capacity::blocks, intf_shutdown(), xfer_buffer::len, block_device_capacity::max_count, rc, block_translator::xfer, and block_translator::xferbuf.
Referenced by blktrans_deliver().
|
static |
Deliver data.
blktrans | Block device translator |
iobuf | I/O buffer |
meta | Data transfer metadata |
rc | Return status code |
Definition at line 161 of file blocktrans.c.
References blktrans_close(), DBGC, iob_disown, meta(), rc, strerror(), block_translator::xferbuf, and xferbuf_deliver().
|
static |
Get underlying data transfer buffer.
blktrans | Block device translator |
xferbuf | Data transfer buffer |
Definition at line 188 of file blocktrans.c.
References block_translator::xferbuf.
Insert block device translator.
block | Block device interface |
buffer | Data buffer (or UNULL) |
size | Length of data buffer, or block size |
rc | Return status code |
Definition at line 223 of file blocktrans.c.
References block_translator::blksize, blktrans_block_desc, blktrans_xfer_desc, blktrans_xferbuf_operations, block, block_translator::block, buffer, block_translator::buffer, DBGC2, ENOMEM, intf_init(), intf_insert(), xfer_buffer::len, NULL, xfer_buffer::op, rc, ref_init, ref_put, block_translator::refcnt, size, user_to_phys(), block_translator::xfer, block_translator::xferbuf, and zalloc().
Referenced by http_block_read(), and http_block_read_capacity().
|
static |
Block device translator data transfer buffer operations.
Definition at line 120 of file blocktrans.c.
Referenced by block_translate().
|
static |
Block device translator block device interface operations.
Definition at line 194 of file blocktrans.c.
|
static |
Block device translator block device interface descriptor.
Definition at line 199 of file blocktrans.c.
Referenced by block_translate().
|
static |
Block device translator data transfer interface operations.
Definition at line 204 of file blocktrans.c.
|
static |
Block device translator data transfer interface descriptor.
Definition at line 211 of file blocktrans.c.
Referenced by block_translate().