int vring_more_used(struct vring_virtqueue *vq)
{
struct vring_used *used = GET_FLATPTR(vq->vring.used);
int vring_more_used(struct vring_virtqueue *vq)
{
struct vring_used *used = GET_FLATPTR(vq->vring.used);
/* link it with free list and point to it */
SET_FLATPTR(desc[i].next, GET_FLATPTR(vq->free_head));
/* link it with free list and point to it */
SET_FLATPTR(desc[i].next, GET_FLATPTR(vq->free_head));
// BUG_ON(!vring_more_used(vq));
elem = &used->ring[GET_FLATPTR(vq->last_used_idx) % GET_FLATPTR(vr->num)];
// BUG_ON(!vring_more_used(vq));
elem = &used->ring[GET_FLATPTR(vq->last_used_idx) % GET_FLATPTR(vr->num)];
av = (GET_FLATPTR(avail->idx) + num_added) % GET_FLATPTR(vr->num);
SET_FLATPTR(avail->ring[av], head);
av = (GET_FLATPTR(avail->idx) + num_added) % GET_FLATPTR(vr->num);
SET_FLATPTR(avail->ring[av], head);
}
void vring_kick(unsigned int ioaddr, struct vring_virtqueue *vq, int num_added)
{
struct vring *vr = &vq->vring;
struct vring_avail *avail = GET_FLATPTR(vr->avail);
}
void vring_kick(unsigned int ioaddr, struct vring_virtqueue *vq, int num_added)
{
struct vring *vr = &vq->vring;
struct vring_avail *avail = GET_FLATPTR(vr->avail);