|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v1 1/3] xen/console: cleanup conring management
From: Denis Mukhin <dmukhin@xxxxxxxx>
Move console_locks_busted handling inside conring_puts() to remove
tasklet code duplication.
Signed-off-by: Denis Mukhin <dmukhin@xxxxxxxx>
---
xen/drivers/char/console.c | 29 ++++++++++++++---------------
1 file changed, 14 insertions(+), 15 deletions(-)
diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index c3150fbdb7..aaa97088aa 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -325,6 +325,17 @@ static void cf_check do_dec_thresh(unsigned char key, bool
unused)
* ********************************************************
*/
+static void cf_check notify_dom0_con_ring(void *unused)
+{
+ send_global_virq(VIRQ_CON_RING);
+}
+
+static DECLARE_SOFTIRQ_TASKLET(notify_dom0_con_ring_tasklet,
+ notify_dom0_con_ring,
+ NULL);
+
+static bool console_locks_busted;
+
static void conring_puts(const char *str, size_t len)
{
ASSERT(rspin_is_locked(&console_lock));
@@ -334,6 +345,9 @@ static void conring_puts(const char *str, size_t len)
if ( conringp - conringc > conring_size )
conringc = conringp - conring_size;
+
+ if ( !console_locks_busted )
+ tasklet_schedule(¬ify_dom0_con_ring_tasklet);
}
long read_console_ring(struct xen_sysctl_readconsole *op)
@@ -594,13 +608,6 @@ static void cf_check serial_rx(char c)
__serial_rx(c);
}
-static void cf_check notify_dom0_con_ring(void *unused)
-{
- send_global_virq(VIRQ_CON_RING);
-}
-static DECLARE_SOFTIRQ_TASKLET(notify_dom0_con_ring_tasklet,
- notify_dom0_con_ring, NULL);
-
#ifdef CONFIG_X86
static inline void xen_console_write_debug_port(const char *buf, size_t len)
{
@@ -648,10 +655,7 @@ static long
guest_console_write(XEN_GUEST_HANDLE_PARAM(char) buffer,
#endif
if ( opt_console_to_ring )
- {
conring_puts(kbuf, kcount);
- tasklet_schedule(¬ify_dom0_con_ring_tasklet);
- }
nrspin_unlock_irq(&console_lock);
}
@@ -753,8 +757,6 @@ long do_console_io(
* *****************************************************
*/
-static bool console_locks_busted;
-
static void __putstr(const char *str)
{
size_t len = strlen(str);
@@ -775,9 +777,6 @@ static void __putstr(const char *str)
#endif
conring_puts(str, len);
-
- if ( !console_locks_busted )
- tasklet_schedule(¬ify_dom0_con_ring_tasklet);
}
static int printk_prefix_check(char *p, char **pp)
--
2.34.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |