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:
Michael Brown
2006-05-31 18:57:11 +00:00
parent cf96d325d8
commit 99ef98d0bf
5 changed files with 17 additions and 11 deletions

View File

@@ -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 {

View File

@@ -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 );