[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC 6/7] sd.c: introduce async write interface
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [RFC 6/7] sd.c: introduce async write interface |
Date: |
Fri, 14 Jun 2013 13:09:06 +0100 |
On 10 May 2013 17:10, Igor Mitsyanko <address@hidden> wrote:
> Signed-off-by: Igor Mitsyanko <address@hidden>
> ---
> hw/sd/sd.c | 145
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
> 1 file changed, 133 insertions(+), 12 deletions(-)
>
> diff --git a/hw/sd/sd.c b/hw/sd/sd.c
> index 659ec56..615ab61 100644
> --- a/hw/sd/sd.c
> +++ b/hw/sd/sd.c
> @@ -958,6 +958,11 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
> sd->state = sd_programming_state;
> /* Bzzzzzzztt .... Operation complete. */
> sd->state = sd_transfer_state;
> + sd->transf_cnt = 0;
> + if (sd->aiocb) {
> + bdrv_aio_cancel(sd->aiocb);
> + sd->aiocb = NULL;
> + }
> return sd_r1b;
>
> default:
> @@ -1600,6 +1605,90 @@ static void sd_blk_write(SDState *sd, uint64_t addr,
> uint32_t len)
> #define APP_READ_BLOCK(a, len) memset(sd->data, 0xec, len)
> #define APP_WRITE_BLOCK(a, len)
>
> +static void sd_write_done(void *opaque, int ret)
> +{
> + SDState *sd = opaque;
> +
> + DPRINTF("sd_write_done: ret = %d\n", ret);
> + sd->aiocb = NULL;
> +
> + if (ret != 0) {
> + return;
> + }
> +
> + switch (sd->current_cmd) {
> + case 24: /* CMD24: WRITE_SINGLE_BLOCK */
> + sd->blk_written++;
> + sd->csd[14] |= 0x40;
> + /* Bzzzzzzztt .... Operation complete. */
These 'bzzzzt' comments don't really apply to the async
interface, I think -- they're a kind of joke about the
fact that some of these commands which take a long time
on hardware are (were) completely synchronous in the
QEMU model and so the 'operation' is indicated as taking
place via the 'bzzzt' sound effect.
-- PMM
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [RFC 6/7] sd.c: introduce async write interface,
Peter Maydell <=