vhost-user-bridge.c (c35d17cabc1e2c72ac0adfd47a0dc9ea40875069) vhost-user-bridge.c (038adc2f5850e32019bda06c559d0301be436eae)
1/*
2 * Vhost User Bridge
3 *
4 * Copyright (c) 2015 Red Hat, Inc.
5 *
6 * Authors:
7 * Victor Kaplansky <victork@redhat.com>
8 *

--- 454 unchanged lines hidden (view full) ---

463static void
464vubr_queue_set_started(VuDev *dev, int qidx, bool started)
465{
466 VubrDev *vubr = container_of(dev, VubrDev, vudev);
467 VuVirtq *vq = vu_get_queue(dev, qidx);
468
469 if (started && vubr->notifier.fd >= 0) {
470 vu_set_queue_host_notifier(dev, vq, vubr->notifier.fd,
1/*
2 * Vhost User Bridge
3 *
4 * Copyright (c) 2015 Red Hat, Inc.
5 *
6 * Authors:
7 * Victor Kaplansky <victork@redhat.com>
8 *

--- 454 unchanged lines hidden (view full) ---

463static void
464vubr_queue_set_started(VuDev *dev, int qidx, bool started)
465{
466 VubrDev *vubr = container_of(dev, VubrDev, vudev);
467 VuVirtq *vq = vu_get_queue(dev, qidx);
468
469 if (started && vubr->notifier.fd >= 0) {
470 vu_set_queue_host_notifier(dev, vq, vubr->notifier.fd,
471 getpagesize(),
472 qidx * getpagesize());
471 qemu_real_host_page_size,
472 qidx * qemu_real_host_page_size);
473 }
474
475 if (qidx % 2 == 1) {
476 vu_set_queue_handler(dev, vq, started ? vubr_handle_tx : NULL);
477 }
478}
479
480static void

--- 108 unchanged lines hidden (view full) ---

589
590 return dev;
591}
592
593static void *notifier_thread(void *arg)
594{
595 VuDev *dev = (VuDev *)arg;
596 VubrDev *vubr = container_of(dev, VubrDev, vudev);
473 }
474
475 if (qidx % 2 == 1) {
476 vu_set_queue_handler(dev, vq, started ? vubr_handle_tx : NULL);
477 }
478}
479
480static void

--- 108 unchanged lines hidden (view full) ---

589
590 return dev;
591}
592
593static void *notifier_thread(void *arg)
594{
595 VuDev *dev = (VuDev *)arg;
596 VubrDev *vubr = container_of(dev, VubrDev, vudev);
597 int pagesize = getpagesize();
597 int pagesize = qemu_real_host_page_size;
598 int qidx;
599
600 while (true) {
601 for (qidx = 0; qidx < VHOST_USER_BRIDGE_MAX_QUEUES; qidx++) {
602 uint16_t *n = vubr->notifier.addr + pagesize * qidx;
603
604 if (*n == qidx) {
605 *n = 0xffff;

--- 19 unchanged lines hidden (view full) ---

625vubr_host_notifier_setup(VubrDev *dev)
626{
627 char template[] = "/tmp/vubr-XXXXXX";
628 pthread_t thread;
629 size_t length;
630 void *addr;
631 int fd;
632
598 int qidx;
599
600 while (true) {
601 for (qidx = 0; qidx < VHOST_USER_BRIDGE_MAX_QUEUES; qidx++) {
602 uint16_t *n = vubr->notifier.addr + pagesize * qidx;
603
604 if (*n == qidx) {
605 *n = 0xffff;

--- 19 unchanged lines hidden (view full) ---

625vubr_host_notifier_setup(VubrDev *dev)
626{
627 char template[] = "/tmp/vubr-XXXXXX";
628 pthread_t thread;
629 size_t length;
630 void *addr;
631 int fd;
632
633 length = getpagesize() * VHOST_USER_BRIDGE_MAX_QUEUES;
633 length = qemu_real_host_page_size * VHOST_USER_BRIDGE_MAX_QUEUES;
634
635 fd = mkstemp(template);
636 if (fd < 0) {
637 vubr_die("mkstemp()");
638 }
639
640 if (posix_fallocate(fd, 0, length) != 0) {
641 vubr_die("posix_fallocate()");

--- 196 unchanged lines hidden ---
634
635 fd = mkstemp(template);
636 if (fd < 0) {
637 vubr_die("mkstemp()");
638 }
639
640 if (posix_fallocate(fd, 0, length) != 0) {
641 vubr_die("posix_fallocate()");

--- 196 unchanged lines hidden ---