From 4a4ad39633edaebc4cfe4bd5562be1d80b4e3c55 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Wed, 5 Oct 2005 16:32:07 +0100 Subject: Send event-channel notification from console daemon to guest console driver when the output ring is emptied. This can be used to kick transmission of more characters without needing to poll. Signed-off-by: Keir Fraser --- tools/console/daemon/io.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'tools') diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c index e4739d977c..a841af1c95 100644 --- a/tools/console/daemon/io.c +++ b/tools/console/daemon/io.c @@ -86,8 +86,11 @@ static void buffer_append(struct domain *dom) struct ring_head *ring = (struct ring_head *)dom->page; size_t size; u32 oldcons; + int notify = 0; while ((size = ring->prod - ring->cons) != 0) { + notify = 1; + if ((buffer->capacity - buffer->size) < size) { buffer->capacity += (size + 1024); buffer->data = realloc(buffer->data, buffer->capacity); @@ -115,6 +118,9 @@ static void buffer_append(struct domain *dom) buffer->capacity = buffer->max_capacity; } } + + if (notify) + xc_evtchn_send(xc, dom->local_port); } static bool buffer_empty(struct buffer *buffer) -- cgit v1.2.3