anchor.diff:              (dotimes (i (1- queue-size))
                 (setf (vring-desc-next vq i) (1+ i)
                       (vring-desc-flags vq i) (ash 1 +vring-desc-f-next+)))
  -            (setf (virtqueue-n-free-descriptors vq) queue-size
  +            (setf (sys.int::semaphore-count (virtqueue-n-free-descriptors vq)) queue-size
                     (virtqueue-next-free-descriptor vq) 0)))))))
   
   (defun vring-alloc-descriptor (vq)
  -  (sys.int::process-wait "Alloc vring descriptor"
  -                         (lambda ()
  -                           (not (zerop (virtqueue-n-free-descriptors vq)))))
  +  (sys.int::wait-on-semaphore (virtqueue-n-free-descriptors vq))
     (let ((id (virtqueue-next-free-descriptor vq)))
       (setf (virtqueue-next-free-descriptor vq)
             (if (logbitp +vring-desc-f-next+ (vring-desc-flags vq id))
                 (vring-desc-next vq id)
                 nil))
  -    (decf (virtqueue-n-free-descriptors vq))
       id))
   
   (defun vring-add-to-avail-ring (vq desc)
  
positive.code:   rx-array
    tx-physical
    tx-array
    free-tx-buffers
    process
    (irq-semaphore (sys.int::make-semaphore :name "Virtio-Net interrupt" :area :static)
  
negative.code:   size
    avail-offset
    used-offset
    (n-free-descriptors (sys.int::make-semaphore :name "Virt-Queue n-free descriptors")
                        :read-only t)
    next-free-descriptor
    last-seen-used)
  
  