diff -r f6bd46559b93 drivers/xen/xenbus/xenbus_dev.c --- a/drivers/xen/xenbus/xenbus_dev.c Mon Mar 6 17:57:34 2006 +++ b/drivers/xen/xenbus/xenbus_dev.c Mon Mar 20 11:04:49 2006 @@ -36,6 +36,7 @@ #include #include #include +#include #include "xenbus_comms.h" @@ -208,11 +209,22 @@ return 0; } +static unsigned int xenbus_dev_poll(struct file *file, poll_table *wait) +{ + struct xenbus_dev_data *u = file->private_data; + + poll_wait(file, &u->read_waitq, wait); + if (u->read_cons != u->read_prod) + return POLLIN | POLLRDNORM; + return 0; +} + static struct file_operations xenbus_dev_file_ops = { .read = xenbus_dev_read, .write = xenbus_dev_write, .open = xenbus_dev_open, .release = xenbus_dev_release, + .poll = xenbus_dev_poll, }; static int __init