ps_io_mapper_t io_mapper = {0};
error = sel4platsupport_new_io_mapper(simple, vspace, vka, &io_mapper);
assert(error == 0);
ps_io_ops_t io_ops = {
.io_mapper = io_mapper
};
sdio_host_dev_t* dev = (sdio_host_dev_t*) malloc(sizeof(*dev));
assert(dev != NULL);
memset(dev, 0, sizeof(*dev));
enum sdio_id id = sdio_default_id(); // return id=3
error = sdio_init(id, &io_ops, dev);
assert(error == 0);
mmc_card_t* mmc_card = (mmc_card_t*) malloc(sizeof(*mmc_card));
error = mmc_init(dev, &io_ops, mmc_card);
assert(error == 0 && mmc_card != NULL); void *vaddr = vspace_new_pages(&vspace, seL4_AllRights, 5, seL4_PageBits);
assert(vaddr != NULL); uintptr_t paddr = 0;
printf("mmc card capacity %llu bytes\n", mmc_card_capacity(*mmc_card));
long read_len = mmc_block_read(*mmc_card, 0x50000, 1, vaddr, paddr, NULL, NULL); // Stuck here
printf("read %lu bytes\n", read_len);