WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Small sysctl cleanups.

# HG changeset patch
# User Keir Fraser <keir@xxxxxxxxxxxxx>
# Date 1182976071 -3600
# Node ID b370047d0fa033f7f9d8a91ff101a11b4314e9b7
# Parent  f152e44325a7eab2bf6e0994c4ef5fca12d93d52
Small sysctl cleanups.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/common/schedule.c       |    8 ++------
 xen/common/sysctl.c         |   17 +++++++++--------
 xen/include/public/sysctl.h |    2 +-
 3 files changed, 12 insertions(+), 15 deletions(-)

diff -r f152e44325a7 -r b370047d0fa0 xen/common/schedule.c
--- a/xen/common/schedule.c     Wed Jun 27 21:05:54 2007 +0100
+++ b/xen/common/schedule.c     Wed Jun 27 21:27:51 2007 +0100
@@ -72,12 +72,8 @@ static inline void vcpu_runstate_change(
     ASSERT(v->runstate.state != new_state);
     ASSERT(spin_is_locked(&per_cpu(schedule_data,v->processor).schedule_lock));
 
-    if(unlikely((v->runstate.state_entry_time - new_entry_time) > TIME_SLOP))
-        /* Local time on this CPU has been warped */
-        v->runstate.time[v->runstate.state] = new_entry_time; 
-    else 
-        v->runstate.time[v->runstate.state] +=
-            new_entry_time - v->runstate.state_entry_time;
+    v->runstate.time[v->runstate.state] +=
+        new_entry_time - v->runstate.state_entry_time;
     v->runstate.state_entry_time = new_entry_time;
     v->runstate.state = new_state;
 }
diff -r f152e44325a7 -r b370047d0fa0 xen/common/sysctl.c
--- a/xen/common/sysctl.c       Wed Jun 27 21:05:54 2007 +0100
+++ b/xen/common/sysctl.c       Wed Jun 27 21:27:51 2007 +0100
@@ -140,19 +140,20 @@ long do_sysctl(XEN_GUEST_HANDLE(xen_sysc
     {
         uint32_t i, nr_cpus;
         uint64_t idletime;
+        struct vcpu *v;
 
-        nr_cpus = (op->u.cpuinfo.max_cpus > NR_CPUS) ? NR_CPUS :
-            op->u.cpuinfo.max_cpus;
+        nr_cpus = min_t(uint32_t, op->u.cpuinfo.max_cpus, NR_CPUS);
 
         for ( i = 0; i < nr_cpus; i++ )
         {
-            if(!idle_vcpu[i])
-                /* XXX: assumes no further CPUs after first missing one */
+            /* Assume no holes in idle-vcpu map. */
+            if ( (v = idle_vcpu[i]) == NULL )
                 break;
 
-            /* somewhat imprecise but should suffice */
-            idletime = idle_vcpu[i]->runstate.time[RUNSTATE_running] +
-                (NOW() - idle_vcpu[i]->runstate.state_entry_time);
+            idletime = v->runstate.time[RUNSTATE_running];
+            if ( v->is_running )
+                idletime += NOW() - v->runstate.state_entry_time;
+
             if ( copy_to_guest_offset(op->u.cpuinfo.buffer, i, &idletime, 1) )
             {
                 ret = -EFAULT;
@@ -163,7 +164,7 @@ long do_sysctl(XEN_GUEST_HANDLE(xen_sysc
         op->u.cpuinfo.nr_cpus = i;
         ret = 0;
 
-        if( copy_to_guest (u_sysctl, op, 1) )
+        if ( copy_to_guest(u_sysctl, op, 1) )
             ret = -EFAULT;
     }
     break;
diff -r f152e44325a7 -r b370047d0fa0 xen/include/public/sysctl.h
--- a/xen/include/public/sysctl.h       Wed Jun 27 21:05:54 2007 +0100
+++ b/xen/include/public/sysctl.h       Wed Jun 27 21:27:51 2007 +0100
@@ -158,7 +158,7 @@ struct xen_sysctl_cpuinfo {
     /* IN variables. */
     uint32_t                      max_cpus;
     XEN_GUEST_HANDLE_64(uint64_t) buffer;
-    /* IN/OUT variables. */
+    /* OUT variables. */
     uint32_t                      nr_cpus;
 }; 
 typedef struct xen_sysctl_cpuinfo xen_sysctl_cpuinfo_t;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Small sysctl cleanups., Xen patchbot-unstable <=