[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v1] xen/console: group pbuf under console field



From: Denis Mukhin <dmukhin@xxxxxxxx>

Group all pbuf-related data structures under domain's console field.

No functional change.

Signed-off-by: Denis Mukhin <dmukhin@xxxxxxxx>
---
 xen/arch/x86/hvm/hvm.c     | 14 +++++++-------
 xen/common/domain.c        |  8 ++++----
 xen/drivers/char/console.c | 19 +++++++++++--------
 xen/include/xen/sched.h    | 12 ++++++------
 4 files changed, 28 insertions(+), 25 deletions(-)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 4cb2e13046..17d1fd42ce 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -571,16 +571,16 @@ static int cf_check hvm_print_line(
     if ( !is_console_printable(c) )
         return X86EMUL_OKAY;
 
-    spin_lock(&cd->pbuf_lock);
+    spin_lock(&cd->console.pbuf_lock);
     if ( c != '\n' )
-        cd->pbuf[cd->pbuf_idx++] = c;
-    if ( (cd->pbuf_idx == (DOMAIN_PBUF_SIZE - 1)) || (c == '\n') )
+        cd->console.pbuf[cd->console.pbuf_idx++] = c;
+    if ( (cd->console.pbuf_idx == (DOMAIN_PBUF_SIZE - 1)) || (c == '\n') )
     {
-        cd->pbuf[cd->pbuf_idx] = '\0';
-        guest_printk(cd, XENLOG_G_DEBUG "%s\n", cd->pbuf);
-        cd->pbuf_idx = 0;
+        cd->console.pbuf[cd->console.pbuf_idx] = '\0';
+        guest_printk(cd, XENLOG_G_DEBUG "%s\n", cd->console.pbuf);
+        cd->console.pbuf_idx = 0;
     }
-    spin_unlock(&cd->pbuf_lock);
+    spin_unlock(&cd->console.pbuf_lock);
 
     return X86EMUL_OKAY;
 }
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 153cd75340..dd1867b2fe 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -669,7 +669,7 @@ static void _domain_destroy(struct domain *d)
     BUG_ON(!d->is_dying);
     BUG_ON(atomic_read(&d->refcnt) != DOMAIN_DESTROYED);
 
-    xfree(d->pbuf);
+    xfree(d->console.pbuf);
 
     argo_destroy(d);
 
@@ -862,7 +862,7 @@ struct domain *domain_create(domid_t domid,
     spin_lock_init(&d->shutdown_lock);
     d->shutdown_code = SHUTDOWN_CODE_INVALID;
 
-    spin_lock_init(&d->pbuf_lock);
+    spin_lock_init(&d->console.pbuf_lock);
 
     rwlock_init(&d->vnuma_rwlock);
 
@@ -956,8 +956,8 @@ struct domain *domain_create(domid_t domid,
         goto fail;
 
     err = -ENOMEM;
-    d->pbuf = xzalloc_array(char, DOMAIN_PBUF_SIZE);
-    if ( !d->pbuf )
+    d->console.pbuf = xzalloc_array(char, DOMAIN_PBUF_SIZE);
+    if ( !d->console.pbuf )
         goto fail;
 
     if ( (err = sched_init_domain(d, config->cpupool_id)) != 0 )
diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index 616f4968b0..3855962af7 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -769,22 +769,25 @@ static long 
guest_console_write(XEN_GUEST_HANDLE_PARAM(char) buffer,
             } while ( --kcount > 0 );
 
             *kout = '\0';
-            spin_lock(&cd->pbuf_lock);
+            spin_lock(&cd->console.pbuf_lock);
             kcount = kin - kbuf;
             if ( c != '\n' &&
-                 (cd->pbuf_idx + (kout - kbuf) < (DOMAIN_PBUF_SIZE - 1)) )
+                 cd->console.pbuf_idx + kout - kbuf < DOMAIN_PBUF_SIZE - 1 )
             {
                 /* buffer the output until a newline */
-                memcpy(cd->pbuf + cd->pbuf_idx, kbuf, kout - kbuf);
-                cd->pbuf_idx += (kout - kbuf);
+                memcpy(cd->console.pbuf + cd->console.pbuf_idx,
+                       kbuf,
+                       kout - kbuf);
+                cd->console.pbuf_idx += (kout - kbuf);
             }
             else
             {
-                cd->pbuf[cd->pbuf_idx] = '\0';
-                guest_printk(cd, XENLOG_G_DEBUG "%s%s\n", cd->pbuf, kbuf);
-                cd->pbuf_idx = 0;
+                cd->console.pbuf[cd->console.pbuf_idx] = '\0';
+                guest_printk(cd,
+                             XENLOG_G_DEBUG "%s%s\n", cd->console.pbuf, kbuf);
+                cd->console.pbuf_idx = 0;
             }
-            spin_unlock(&cd->pbuf_lock);
+            spin_unlock(&cd->console.pbuf_lock);
         }
 
         guest_handle_add_offset(buffer, kcount);
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index fe53d4fab7..637aa09ec4 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -562,12 +562,6 @@ struct domain
     /* Control-plane tools handle for this domain. */
     xen_domain_handle_t handle;
 
-    /* hvm_print_line() and guest_console_write() logging. */
-#define DOMAIN_PBUF_SIZE 200
-    char       *pbuf;
-    unsigned int pbuf_idx;
-    spinlock_t  pbuf_lock;
-
     /* OProfile support. */
     struct xenoprof *xenoprof;
 
@@ -654,6 +648,12 @@ struct domain
 
     /* Console settings. */
     struct {
+        /* hvm_print_line() and guest_console_write() logging. */
+#define DOMAIN_PBUF_SIZE 200
+        char *pbuf;
+        unsigned int pbuf_idx;
+        spinlock_t pbuf_lock;
+
         /* Permission to take ownership of the physical console input. */
         bool input_allowed;
     } console;
-- 
2.34.1





 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.