Insert block device translator.
- Parameters
-
| block | Block device interface |
| buffer | Data buffer (or NULL) |
| size | Length of data buffer, or block size |
- Return values
-
Definition at line 140 of file blocktrans.c.
140 {
143
144
145 blktrans =
zalloc (
sizeof ( *blktrans ) );
146 if ( ! blktrans ) {
148 goto err_alloc;
149 }
155 } else {
158 }
159
160
163
164 DBGC2 ( blktrans,
"BLKTRANS %p created", blktrans );
166 DBGC2 ( blktrans,
" for %#lx+%#zx",
168 }
169 DBGC2 ( blktrans,
"\n" );
170 return 0;
171
173 err_alloc:
175}
#define NULL
NULL pointer (VOID *)
struct arbelprm_rc_send_wqe rc
static struct interface_descriptor blktrans_xfer_desc
Block device translator data transfer interface descriptor.
static struct interface_descriptor blktrans_block_desc
Block device translator block device interface descriptor.
uint16_t size
Buffer size.
uint32_t buffer
Buffer index (or NETVSC_RNDIS_NO_BUFFER)
#define ENOMEM
Not enough space.
void intf_insert(struct interface *intf, struct interface *upper, struct interface *lower)
Insert a filter interface.
static void intf_init(struct interface *intf, struct interface_descriptor *desc, struct refcnt *refcnt)
Initialise an object interface.
void * zalloc(size_t size)
Allocate cleared memory.
uint8_t block[3][8]
DES-encrypted blocks.
#define ref_put(refcnt)
Drop reference to object.
#define ref_init(refcnt, free)
Initialise a reference counter.
A block device translator.
struct interface xfer
Data transfer interface.
size_t blksize
Block size.
struct xfer_buffer xferbuf
Data transfer buffer.
struct refcnt refcnt
Reference count.
struct interface block
Block device interface.
static void xferbuf_fixed_init(struct xfer_buffer *xferbuf, void *data, size_t len)
Initialise fixed-size data transfer buffer.
static void xferbuf_void_init(struct xfer_buffer *xferbuf)
Initialise void data transfer buffer.
References block_translator::blksize, blktrans_block_desc, blktrans_xfer_desc, block, block_translator::block, buffer, DBGC2, ENOMEM, intf_init(), intf_insert(), NULL, rc, ref_init, ref_put, block_translator::refcnt, size, block_translator::xfer, block_translator::xferbuf, xferbuf_fixed_init(), xferbuf_void_init(), and zalloc().
Referenced by http_block_read(), and http_block_read_capacity().