idx 65 kernel/virtio.h uint16 idx; // driver will write ring[idx] next idx 79 kernel/virtio.h uint16 idx; // device increments when it adds a ring[] entry idx 202 kernel/virtio_disk.c alloc3_desc(int *idx) idx 205 kernel/virtio_disk.c idx[i] = alloc_desc(); idx 206 kernel/virtio_disk.c if(idx[i] < 0){ idx 208 kernel/virtio_disk.c free_desc(idx[j]); idx 227 kernel/virtio_disk.c int idx[3]; idx 229 kernel/virtio_disk.c if(alloc3_desc(idx) == 0) { idx 238 kernel/virtio_disk.c struct virtio_blk_req *buf0 = &disk.ops[idx[0]]; idx 247 kernel/virtio_disk.c disk.desc[idx[0]].addr = (uint64) buf0; idx 248 kernel/virtio_disk.c disk.desc[idx[0]].len = sizeof(struct virtio_blk_req); idx 249 kernel/virtio_disk.c disk.desc[idx[0]].flags = VRING_DESC_F_NEXT; idx 250 kernel/virtio_disk.c disk.desc[idx[0]].next = idx[1]; idx 252 kernel/virtio_disk.c disk.desc[idx[1]].addr = (uint64) b->data; idx 253 kernel/virtio_disk.c disk.desc[idx[1]].len = BSIZE; idx 255 kernel/virtio_disk.c disk.desc[idx[1]].flags = 0; // device reads b->data idx 257 kernel/virtio_disk.c disk.desc[idx[1]].flags = VRING_DESC_F_WRITE; // device writes b->data idx 258 kernel/virtio_disk.c disk.desc[idx[1]].flags |= VRING_DESC_F_NEXT; idx 259 kernel/virtio_disk.c disk.desc[idx[1]].next = idx[2]; idx 261 kernel/virtio_disk.c disk.info[idx[0]].status = 0xff; // device writes 0 on success idx 262 kernel/virtio_disk.c disk.desc[idx[2]].addr = (uint64) &disk.info[idx[0]].status; idx 263 kernel/virtio_disk.c disk.desc[idx[2]].len = 1; idx 264 kernel/virtio_disk.c disk.desc[idx[2]].flags = VRING_DESC_F_WRITE; // device writes the status idx 265 kernel/virtio_disk.c disk.desc[idx[2]].next = 0; idx 269 kernel/virtio_disk.c disk.info[idx[0]].b = b; idx 272 kernel/virtio_disk.c disk.avail->ring[disk.avail->idx % NUM] = idx[0]; idx 277 kernel/virtio_disk.c disk.avail->idx += 1; // not % NUM ... idx 288 kernel/virtio_disk.c disk.info[idx[0]].b = 0; idx 289 kernel/virtio_disk.c free_chain(idx[0]); idx 312 kernel/virtio_disk.c while(disk.used_idx != disk.used->idx){