mirror of
https://github.com/ipxe/ipxe
synced 2025-12-20 12:00:19 +03:00
ATA devices are now asynchronous. The ATA layer itself now performs the
async_wait(), though we may wish to move this higher up the stack, and consider making the block device model asynchronous. (There is only a marginal cost for synchronous devices, since they can simply call async_done() before returning; async_wait() will work seamlessly in this situation).
This commit is contained in:
@@ -115,7 +115,8 @@ struct aoe_session {
|
||||
|
||||
extern void aoe_open ( struct aoe_session *aoe );
|
||||
extern void aoe_close ( struct aoe_session *aoe );
|
||||
extern void aoe_issue ( struct aoe_session *aoe, struct ata_command *command );
|
||||
extern struct async_operation * aoe_issue ( struct aoe_session *aoe,
|
||||
struct ata_command *command );
|
||||
|
||||
/** An AoE device */
|
||||
struct aoe_device {
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
struct async_operation;
|
||||
|
||||
/**
|
||||
* An ATA Logical Block Address
|
||||
*
|
||||
@@ -191,10 +193,10 @@ struct ata_device {
|
||||
*
|
||||
* @v ata ATA device
|
||||
* @v command ATA command
|
||||
* @ret rc Return status code
|
||||
* @ret aop Asynchronous operation
|
||||
*/
|
||||
int ( * command ) ( struct ata_device *ata,
|
||||
struct ata_command *command );
|
||||
struct async_operation * ( * command ) ( struct ata_device *ata,
|
||||
struct ata_command *command );
|
||||
};
|
||||
|
||||
extern int init_atadev ( struct ata_device *ata );
|
||||
|
||||
Reference in New Issue
Block a user