|
iPXE
|
Data transfer buffer. More...
Go to the source code of this file.
Data Structures | |
| struct | xfer_buffer |
| A data transfer buffer. More... | |
| struct | xfer_buffer_operations |
| Data transfer buffer operations. More... | |
Macros | |
| #define | xfer_buffer_TYPE(object_type) typeof ( struct xfer_buffer * ( object_type ) ) |
Functions | |
| FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
| static void | xferbuf_malloc_init (struct xfer_buffer *xferbuf) |
| Initialise malloc()-based data transfer buffer. More... | |
| static void | xferbuf_umalloc_init (struct xfer_buffer *xferbuf) |
| Initialise umalloc()-based data transfer buffer. More... | |
| static void | xferbuf_fixed_init (struct xfer_buffer *xferbuf, void *data, size_t len) |
| Initialise fixed-size data transfer buffer. More... | |
| static void | xferbuf_void_init (struct xfer_buffer *xferbuf) |
| Initialise void data transfer buffer. More... | |
| void | xferbuf_detach (struct xfer_buffer *xferbuf) |
| Detach data from data transfer buffer. More... | |
| void | xferbuf_free (struct xfer_buffer *xferbuf) |
| Free data transfer buffer. More... | |
| int | xferbuf_write (struct xfer_buffer *xferbuf, size_t offset, const void *data, size_t len) |
| Write to data transfer buffer. More... | |
| int | xferbuf_read (struct xfer_buffer *xferbuf, size_t offset, void *data, size_t len) |
| Read from data transfer buffer. More... | |
| int | xferbuf_deliver (struct xfer_buffer *xferbuf, struct io_buffer *iobuf, struct xfer_metadata *meta) |
| Add received data to data transfer buffer. More... | |
| struct xfer_buffer * | xfer_buffer (struct interface *intf) |
| Get underlying data transfer buffer. More... | |
Variables | |
| struct xfer_buffer_operations | xferbuf_malloc_operations |
| malloc()-based data buffer operations More... | |
| struct xfer_buffer_operations | xferbuf_umalloc_operations |
| umalloc()-based data buffer operations More... | |
| struct xfer_buffer_operations | xferbuf_fixed_operations |
| Fixed-size data buffer operations. More... | |
| struct xfer_buffer_operations | xferbuf_void_operations |
| Void data buffer operations. More... | |
Data transfer buffer.
Definition in file xferbuf.h.
| #define xfer_buffer_TYPE | ( | object_type | ) | typeof ( struct xfer_buffer * ( object_type ) ) |
| FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
|
inlinestatic |
Initialise malloc()-based data transfer buffer.
| xferbuf | Data transfer buffer |
Data will be automatically allocated using malloc().
Definition at line 53 of file xferbuf.h.
References xfer_buffer::op, and xferbuf_malloc_operations.
Referenced by create_validator(), and peerblk_open().
|
inlinestatic |
Initialise umalloc()-based data transfer buffer.
| xferbuf | Data transfer buffer |
Data will be automatically allocated using umalloc() (and may therefore alter the system memory map).
Definition at line 66 of file xferbuf.h.
References xfer_buffer::op, and xferbuf_umalloc_operations.
Referenced by create_downloader(), and peermux_filter().
|
inlinestatic |
Initialise fixed-size data transfer buffer.
| xferbuf | Data transfer buffer |
| data | Data buffer |
| len | Length of data buffer |
Data will be never be automatically allocated.
Definition at line 80 of file xferbuf.h.
References xfer_buffer::data, data, xfer_buffer::len, len, xfer_buffer::op, and xferbuf_fixed_operations.
Referenced by block_translate(), and efi_pxe_mtftp().
|
inlinestatic |
Initialise void data transfer buffer.
| xferbuf | Data transfer buffer |
No data will be allocated, but the length will be recorded. This can be used to capture xfer_seek() results.
Definition at line 95 of file xferbuf.h.
References xfer_buffer::op, and xferbuf_void_operations.
Referenced by block_translate().
| void xferbuf_detach | ( | struct xfer_buffer * | xferbuf | ) |
Detach data from data transfer buffer.
| xferbuf | Data transfer buffer |
The caller assumes responsibility for eventually freeing the data previously owned by the data transfer buffer.
Definition at line 61 of file xferbuf.c.
References xfer_buffer::data, xfer_buffer::len, NULL, and xfer_buffer::pos.
Referenced by downloader_finished(), and xferbuf_free().
| void xferbuf_free | ( | struct xfer_buffer * | xferbuf | ) |
Free data transfer buffer.
| xferbuf | Data transfer buffer |
Definition at line 73 of file xferbuf.c.
References xfer_buffer::op, xfer_buffer_operations::realloc, and xferbuf_detach().
Referenced by downloader_free(), peerblk_reset(), peermux_free(), validator_free(), and validator_xfer_close().
| int xferbuf_write | ( | struct xfer_buffer * | xferbuf, |
| size_t | offset, | ||
| const void * | data, | ||
| size_t | len | ||
| ) |
Write to data transfer buffer.
| xferbuf | Data transfer buffer |
| offset | Starting offset |
| data | Data to write |
| len | Length of data |
Definition at line 112 of file xferbuf.c.
References xfer_buffer::data, data, ENOTTY, EOVERFLOW, len, memcpy(), offset, profile_start(), profile_stop(), rc, and xferbuf_ensure_size().
Referenced by peerblk_decrypt_write(), peerblk_retrieval_rx(), and xferbuf_deliver().
| int xferbuf_read | ( | struct xfer_buffer * | xferbuf, |
| size_t | offset, | ||
| void * | data, | ||
| size_t | len | ||
| ) |
Read from data transfer buffer.
| xferbuf | Data transfer buffer |
| offset | Starting offset |
| data | Data to write |
| len | Length of data |
Definition at line 146 of file xferbuf.c.
References xfer_buffer::data, data, ENOENT, ENOTTY, xfer_buffer::len, len, memcpy(), offset, profile_start(), and profile_stop().
Referenced by peerblk_decrypt_read().
| int xferbuf_deliver | ( | struct xfer_buffer * | xferbuf, |
| struct io_buffer * | iobuf, | ||
| struct xfer_metadata * | meta | ||
| ) |
Add received data to data transfer buffer.
| xferbuf | Data transfer buffer |
| iobuf | I/O buffer |
| meta | Data transfer metadata |
| rc | Return status code |
Definition at line 174 of file xferbuf.c.
References io_buffer::data, done, free_iob(), iob_len(), len, meta, xfer_buffer::pos, profile_start(), profile_stop(), rc, XFER_FL_ABS_OFFSET, and xferbuf_write().
Referenced by blktrans_deliver(), downloader_deliver(), efi_pxe_tftp_deliver(), peermux_info_deliver(), and validator_xfer_deliver().
| struct xfer_buffer* xfer_buffer | ( | struct interface * | intf | ) |
Get underlying data transfer buffer.
| interface | Data transfer interface |
| xferbuf | Data transfer buffer, or NULL on error |
This call will check that the xfer_buffer() handler belongs to the destination interface which also provides xfer_deliver() for this interface.
This is done to prevent accidental accesses to a data transfer buffer which may be located behind a non-transparent datapath via a series of pass-through interfaces.
Definition at line 305 of file xferbuf.c.
References dest, interface::intf, intf_get_dest_op, intf_object(), intf_put(), NULL, op, xfer_buffer_TYPE, and xfer_deliver().
Referenced by http_content_buffer(), peerblk_decrypt(), and peermux_block_buffer().
| struct xfer_buffer_operations xferbuf_malloc_operations |
malloc()-based data buffer operations
Definition at line 220 of file xferbuf.c.
Referenced by xferbuf_malloc_init().
| struct xfer_buffer_operations xferbuf_umalloc_operations |
umalloc()-based data buffer operations
Definition at line 242 of file xferbuf.c.
Referenced by xferbuf_umalloc_init().
| struct xfer_buffer_operations xferbuf_fixed_operations |
Fixed-size data buffer operations.
Definition at line 267 of file xferbuf.c.
Referenced by xferbuf_fixed_init().
| struct xfer_buffer_operations xferbuf_void_operations |
Void data buffer operations.
Definition at line 287 of file xferbuf.c.
Referenced by xferbuf_void_init().
1.8.15