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