[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 10/11] xen/arm: vpl011: Modify handle_ring_read and buffer_append to read/append vpl011 data
MOdifications in the following functions: - handle_ring_read() - to allow reading data from both PV or vpl011 OUT ring buffers based on which port received the event - buffer_append() - append data received for either PV or vp011 OUT ring buffer Signed-off-by: Bhupinder Thakur <bhupinder.thakur@xxxxxxxxxx> --- tools/console/daemon/io.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c index b1aa615..4e531e7 100644 --- a/tools/console/daemon/io.c +++ b/tools/console/daemon/io.c @@ -163,12 +163,11 @@ static int write_with_timestamp(int fd, const char *data, size_t sz, return 0; } -static void buffer_append(struct domain *dom) +static void buffer_append(struct domain *dom, struct xencons_interface *intf, int port) { struct buffer *buffer = &dom->buffer; XENCONS_RING_IDX cons, prod, size; - struct xencons_interface *intf = dom->interface; - + cons = intf->out_cons; prod = intf->out_prod; xen_mb(); @@ -192,7 +191,8 @@ static void buffer_append(struct domain *dom) xen_mb(); intf->out_cons = cons; - xenevtchn_notify(dom->xce_handle, dom->local_port); + + xenevtchn_notify(dom->xce_handle, port); /* Get the data to the logfile as early as possible because if * no one is listening on the console pty then it will fill up @@ -961,6 +961,7 @@ static void handle_tty_write(struct domain *dom) static void handle_ring_read(struct domain *dom) { xenevtchn_port_or_error_t port; + struct xencons_interface *intf; if (dom->is_dead) return; @@ -970,7 +971,15 @@ static void handle_ring_read(struct domain *dom) dom->event_count++; - buffer_append(dom); + /* + * select the interface based on the port which the event received + */ + if ( port == dom->vpl011_local_port ) + intf = dom->vpl011_interface; + else + intf = dom->interface; + + buffer_append(dom, intf, port); if (dom->event_count < RATE_LIMIT_ALLOWANCE) (void)xenevtchn_unmask(dom->xce_handle, port); @@ -1161,6 +1170,8 @@ void handle_io(void) d->next_period = now + RATE_LIMIT_PERIOD; if (d->event_count >= RATE_LIMIT_ALLOWANCE) { (void)xenevtchn_unmask(d->xce_handle, d->local_port); + if ( d->vpl011_initialized ) + (void)xenevtchn_unmask(d->xce_handle, d->vpl011_local_port); } d->event_count = 0; } -- 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |