static int ld_sdmmc_start(struct ld_softc *ld, struct buf *bp) { struct ld_sdmmc_softc *sc = device_private(ld->sc_dv); struct ld_sdmmc_task *task = &sc->sc_task; task->task_sc = sc; task->task_bp = bp; sdmmc_init_task(&task->task, ld_sdmmc_dobio, task); callout_reset(&task->task_callout, hz, ld_sdmmc_timeout, task); sdmmc_add_task(sc->sc_sf->sc, &task->task); return 0; }
static int ld_sdmmc_start(struct ld_softc *ld, struct buf *bp) { struct ld_sdmmc_softc *sc = device_private(ld->sc_dv); struct ld_sdmmc_task *task = &sc->sc_task[sc->sc_nexttask]; sc->sc_nexttask = (sc->sc_nexttask + 1) % LD_SDMMC_MAXQUEUECNT; task->task_sc = sc; task->task_bp = bp; sdmmc_init_task(&task->task, ld_sdmmc_dobio, task); sdmmc_add_task(sc->sc_sf->sc, &task->task); return 0; }