[int13] Provide a permanently closed window via the control interface
Allow objects to support both streaming and block device protocols, by starting streaming data only when the data transfer window opens. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
parent
5eb60f4883
commit
69f5b2e8dc
|
@ -1333,6 +1333,20 @@ static void int13_unhook_vector ( void ) {
|
||||||
&int13_vector );
|
&int13_vector );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check INT13 emulated drive flow control window
|
||||||
|
*
|
||||||
|
* @v int13 Emulated drive
|
||||||
|
*/
|
||||||
|
static size_t int13_block_window ( struct int13_drive *int13 __unused ) {
|
||||||
|
|
||||||
|
/* We are never ready to receive data via this interface.
|
||||||
|
* This prevents objects that support both block and stream
|
||||||
|
* interfaces from attempting to send us stream data.
|
||||||
|
*/
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle INT 13 emulated drive underlying block device closing
|
* Handle INT 13 emulated drive underlying block device closing
|
||||||
*
|
*
|
||||||
|
@ -1357,6 +1371,7 @@ static void int13_block_close ( struct int13_drive *int13, int rc ) {
|
||||||
|
|
||||||
/** INT 13 drive interface operations */
|
/** INT 13 drive interface operations */
|
||||||
static struct interface_operation int13_block_op[] = {
|
static struct interface_operation int13_block_op[] = {
|
||||||
|
INTF_OP ( xfer_window, struct int13_drive *, int13_block_window ),
|
||||||
INTF_OP ( intf_close, struct int13_drive *, int13_block_close ),
|
INTF_OP ( intf_close, struct int13_drive *, int13_block_close ),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Reference in New Issue