// ivshmem_inmate.c #include "ivshmem_common.h" int main(int argc, char *argv[]) { if (argc < 2) error(1, 0, "Usage: %s /dev/uioX", argv[0]); ivshmem_ctx ctx; ivshmem_init(&ctx, argv[1]); printf("Inmate ID: %u, Peer ID: 0\n", ctx.id); printf("Waiting for root...\n"); ivshmem_wait_irq(&ctx); uint32_t received = ctx.in[ctx.id]; printf("Received from root: %u\n", received); ctx.out[ctx.id] = 99; printf("Sent 99 to root\n"); mmio_write32(&ctx.regs->doorbell, 0); ivshmem_cleanup(&ctx); return 0; }