bitkeeper revision 1.834 (406d7297L8YEnoDy3p-Js-U7j2roug)
authoriap10@tetris.cl.cam.ac.uk <iap10@tetris.cl.cam.ac.uk>
Fri, 2 Apr 2004 14:03:03 +0000 (14:03 +0000)
committeriap10@tetris.cl.cam.ac.uk <iap10@tetris.cl.cam.ac.uk>
Fri, 2 Apr 2004 14:03:03 +0000 (14:03 +0000)
manual merge as two conflicting dom0 ops

1  2 
tools/xc/py/Xc.c
xen/common/dom0_ops.c
xen/common/domain.c
xen/common/memory.c
xen/common/sched_bvt.c
xen/common/sched_rrobin.c
xen/common/schedule.c
xen/include/hypervisor-ifs/dom0_ops.h
xen/include/xen/mm.h
xen/include/xen/sched-if.h
xen/include/xen/sched.h

index 4c82b03d73f5bd62629df6b0af3a98da235eb9c9,3cbbe7efa66558f87336bd88874ba971e2ad05de..5114b52afebcbf3c528db334bc1e2508cecd84ef
@@@ -914,28 -986,22 +986,44 @@@ static PyObject *pyxc_rrobin_global_set
      return zero;
  }
  
 +static PyObject *pyxc_shadow_control(PyObject *self,
 +                                     PyObject *args,
 +                                     PyObject *kwds)
 +{
 +    XcObject *xc = (XcObject *)self;
 +
 +    u64 dom;
 +    int op=0;
 +
 +    static char *kwd_list[] = { "dom", "op", NULL };
 +
 +    if ( !PyArg_ParseTupleAndKeywords(args, kwds, "L|i", kwd_list, 
 +                                      &dom, &op) )
 +        return NULL;
 +
 +    if ( xc_shadow_control(xc->xc_handle, dom, op) != 0 )
 +        return PyErr_SetFromErrno(xc_error);
 +    
 +    Py_INCREF(zero);
 +    return zero;
 +}
 +
+ static PyObject *pyxc_rrobin_global_get(PyObject *self,
+                                         PyObject *args,
+                                         PyObject *kwds)
+ {
+     XcObject *xc = (XcObject *)self;
+     u64 slice;
+     if ( !PyArg_ParseTuple(args, "") )
+         return NULL;
+     if ( xc_rrobin_global_get(xc->xc_handle, &slice) != 0 )
+         return PyErr_SetFromErrno(xc_error);
+     
+     return Py_BuildValue("s:L", "slice", slice);
+ }
  
  static PyMethodDef pyxc_methods[] = {
      { "domain_create", 
index db4ea2acd4e5ed676cd6acff62ce0a8a25777071,4c1a3cdefd75d4c3dfc9b574959511938132aae2..7251b71d632e5df08423921d345eb68831c0a292
@@@ -495,18 -487,13 +496,26 @@@ long do_dom0_op(dom0_op_t *u_dom0_op
      }
      break;
  
 +    case DOM0_SHADOW_CONTROL:
 +    {
 +        struct task_struct *p; 
 +      
 +      p = find_domain_by_id( op->u.shadow_control.domain );
 +      if ( p )
 +      {
 +            ret = shadow_mode_control(p, op->u.shadow_control.op );
 +          put_task_struct(p);
 +        }
 +    }
 +    break;
++
+     case DOM0_SCHED_ID:
+     {
+         op->u.sched_id.sched_id = sched_id();
+         copy_to_user(u_dom0_op, op, sizeof(*op));
+         ret = 0;        
+     }
       
      default:
          ret = -ENOSYS;
index 8b9dd6916dd658eb4b2d699da009ee75426d8c91,e86a5eba27fbee029bce6ef1d24fa8174087a247..2db0331d89553ff2eac247cf6ba32885401c7f03
@@@ -849,14 -1017,11 +1017,11 @@@ int construct_dom0(struct task_struct *
  
      set_bit(PF_CONSTRUCTED, &p->flags);
  
- #if 0 // XXXXX DO NOT CHECK IN ENBALED !!! (but useful for testing so leave) 
+ #if 0 // XXXXX DO NOT CHECK IN ENABLED !!! (but useful for testing so leave) 
 -    shadow_mode_enable(p, SHM_test); 
 +    shadow_mode_enable(&p->mm, SHM_test); 
  #endif
  
-     new_thread(p, 
-                (unsigned long)virt_load_address, 
-                (unsigned long)virt_stack_address, 
-                (unsigned long)virt_startinfo_address);
+     new_thread(p, vkern_entry, vstack_end, vstartinfo_start);
  
      return 0;
  }
Simple merge
Simple merge
Simple merge
Simple merge
index 70cf92225ba5d5891e1780178810007da1edef24,251f4853a412ad9fe21de6690435b70239a522cd..7dc221ad77d7ba4e518eb1b8d6b74816ffd39a06
@@@ -214,24 -213,16 +213,34 @@@ typedef struct dom0_pcidev_access_s
      int          enable;
  } dom0_pcidev_access_t;
  
- #define DOM0_SHADOW_CONTROL   24
+ /*
+  * Get the ID of the current scheduler.
+  */
+ #define DOM0_SCHED_ID        24
+ typedef struct dom0_sched_id_st
+ {
+     /* OUT variable */
+     int sched_id;
+ } dom0_sched_id_t;
 +/* 
 + * Control shadow pagetables operation
 + */
++#define DOM0_SHADOW_CONTROL   25
 +
 +#define DOM0_SHADOW_CONTROL_OP_OFF         0
 +#define DOM0_SHADOW_CONTROL_OP_ENABLE_TEST 1
 +#define DOM0_SHADOW_CONTROL_OP_ENABLE_LOGDIRTY 2
 +#define DOM0_SHADOW_CONTROL_OP_FLUSH       10
 +#define DOM0_SHADOW_CONTROL_OP_CLEAN       11
 +typedef struct dom0_shadow_control_st
 +{
 +    /* IN variables. */
 +    domid_t      domain;
 +    int          op;
 +} dom0_shadow_control_t;
 +
 +
  typedef struct dom0_op_st
  {
      unsigned long cmd;
          dom0_gettbufs_t         gettbufs;
          dom0_physinfo_t         physinfo;
          dom0_pcidev_access_t    pcidev_access;
+         dom0_sched_id_t         sched_id;
 +      dom0_shadow_control_t   shadow_control;
      } u;
  } dom0_op_t;
  
Simple merge
index cf7358719a90c97c2d0bf73d3614976ff1ce9846,7e55f46b918ccf96c1381e7488e78f2d7aec415a..51579c40867df0102081727dfdb12ff4cefdb9e4
@@@ -50,7 -49,7 +49,8 @@@ struct schedule
      void         (*dump_settings)  (void);
      void         (*dump_cpu_state) (int);
      void         (*dump_runq_el)   (struct task_struct *);
+     int          (*prn_state)      (int);
 +    void         (*pause)          (struct task_struct *);
  };
  
  /* per CPU scheduler information */
index ad8d3c68fdce3890e3539b17eb4a3b8df7e4f2b9,033f860c01be569659b98551adfde37f158707f9..fcccf3fa235a694f534564a8364095a1ffaaa09c
@@@ -266,7 -273,7 +274,8 @@@ void sched_add_domain(struct task_struc
  int  sched_rem_domain(struct task_struct *p);
  long sched_ctl(struct sched_ctl_cmd *);
  long sched_adjdom(struct sched_adjdom_cmd *);
+ int  sched_id();
 +void sched_pause_sync(struct task_struct *);
  void init_idle_task(void);
  void __wake_up(struct task_struct *p);
  void wake_up(struct task_struct *p);