X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=linux_module%2Fiface-host-dev.c;h=23a3a09dc9c795b1f71017622a3bc7a9e4caaf54;hb=c5909621b389bb4a5a5f405168b25fdda4b0db35;hp=86b0e0c66365577d977c165a7b65bbd1a22ed363;hpb=1f8ac11d4550b1113d9a8c23e62b236cb8ad8404;p=palacios.git diff --git a/linux_module/iface-host-dev.c b/linux_module/iface-host-dev.c index 86b0e0c..23a3a09 100644 --- a/linux_module/iface-host-dev.c +++ b/linux_module/iface-host-dev.c @@ -301,6 +301,10 @@ static unsigned int host_dev_poll(struct file * filp, palacios_spinlock_lock_irqsave(&(dev->lock),f); + + // register ourselves on the user wait queue + poll_wait(filp, &(dev->user_wait_queue), poll_tb); + if (dev->waiting) { // Yes, we have a request if you want it! palacios_spinlock_unlock_irqrestore(&(dev->lock),f); @@ -310,9 +314,6 @@ static unsigned int host_dev_poll(struct file * filp, // No request yet, so we need to wait for one to show up. - // register ourselves on the user wait queue - poll_wait(filp, &(dev->user_wait_queue), poll_tb); - palacios_spinlock_unlock_irqrestore(&(dev->lock),f); DEEP_DEBUG_PRINT("palacios: hostdev: poll delayed\n"); @@ -1322,6 +1323,11 @@ static int host_dev_init( void ) { } +static int host_dev_deinit(void) { + // nothing to do + return 0; +} + static int host_dev_guest_init(struct v3_guest * guest, void ** vm_data ) { struct palacios_host_dev * host_dev = palacios_alloc(sizeof(struct palacios_host_dev)); @@ -1357,7 +1363,7 @@ static int host_dev_guest_deinit(struct v3_guest * guest, void * vm_data) { static struct linux_ext host_dev_ext = { .name = "HOST_DEVICE_INTERFACE", .init = host_dev_init, - .deinit = NULL, + .deinit = host_dev_deinit, .guest_init = host_dev_guest_init, .guest_deinit = host_dev_guest_deinit };