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 --- |