From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH 1/1] Add .adjust_global callback Date: Tue, 4 May 2010 10:46:30 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0044624696==" Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Kathy Hadley , keir.fraser@citrix.com, xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --===============0044624696== Content-Type: multipart/related; boundary=00151747b414f613fe0485c69c16 --00151747b414f613fe0485c69c16 Content-Type: multipart/alternative; boundary=00151747b414f613fb0485c69c15 --00151747b414f613fb0485c69c15 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Keir, the new SCHEDOP_adjust_global needs to have the cpupool_id so that we can call the "global" parameters for the right pool. Would it make sense t= o overload the domid in DOMCTL, making it the cpupool_id if the command is XEN_DOMCTL_SCHEDOP_{get,put}_global_info? Or should we put it somewhere else? I glanced around the other hypercalls, and nothing seems much better= ; the cpupools stuff is in the DOMCTL file anyway. -George On Mon, May 3, 2010 at 10:29 PM, George Dunlap wrote: > Hmm, and it also needs to be adjusted for the new cpu pools stuff. I'll > take a look at it tomorrow. > -George > > > > > On Mon, May 3, 2010 at 4:50 PM, George Dunlap > wrote: > >> Also, the SCHEDOP needs an xsm callback; but I'm not an expert enough in >> the xsm framework to say what it needs. >> >> Other than that: >> >> Acked-by: George Dunlap >> >> >> On Mon, Apr 19, 2010 at 6:54 AM, Dulloor wrote: >> >>> You don't have to explicitly set adjust_global to NULL for credit and >>> sedf. >>> >>> -dulloor >>> >>> On Mon, Apr 19, 2010 at 9:39 AM, Kathy Hadley < >>> Kathy.Hadley@dornerworks.com> wrote: >>> >>>> Resubmitting now that I have been added to the Xen-devel mailing list= . >>>> >>>> >>>> >>>> Kathy Hadley >>>> >>>> DornerWorks, Ltd. >>>> >>>> >>>> >>>> *From:* Kathy Hadley >>>> *Sent:* Friday, April 16, 2010 10:14 AM >>>> *To:* 'xen-devel@lists.xensource.com' >>>> *Cc:* 'Keir.Fraser@citrix.com' >>>> *Subject:* [Xen-Devel] [PATCH 1/1] Add .adjust_global callback >>>> >>>> >>>> >>>> This patch adds an .adjust_global scheduler callback function, which >>>> allows adjusting the global scheduler parameters (rather than just one >>>> domain=92s parameters). This patch supports the addition of an ARINC = 653 >>>> scheduler (which will be submitted in a subsequent patch), and was sug= gested >>>> by George Dunlap and Keir Fraser in response to an earlier patch (ref: >>>> [Xen-devel] [PATCH 1/1] Xen ARINC 653 scheduler). >>>> >>>> >>>> >>>> Thanks and regards, >>>> >>>> >>>> >>>> >>>> >>>> [image: cid:image001.jpg@01CAD7E0.50E45D70] >>>> >>>> *Kathy Hadley >>>> *DornerWorks, Ltd. >>>> *Embedded Systems Engineering >>>> >>>> *3445 Lake Eastbrook Blvd SE >>>> Grand Rapids, MI 49546 >>>> >>>> Direct: 616.389.6127 >>>> >>>> Tel: 616.245.8369 >>>> >>>> Fax: 616.245.8372 >>>> >>>> >>>> >>>> Kathy.Hadley@DornerWorks.com >>>> >>>> www.DornerWorks.com >>>> >>>> [image: cid:image002.jpg@01CAD7E0.50E45D70] >>>> >>>> *Honored as one of the 2010 =93Michigan 50 Companies to Watch=94* >>>> >>>> >>>> >>>> diff -rupN a/xen/common/domctl.c b/xen/common/domctl.c >>>> >>>> --- a/xen/common/domctl.c 2010-04-07 12:12:06.000000000 -0400 >>>> >>>> +++ b/xen/common/domctl.c 2010-04-14 10:57:11.262796000 -0400 >>>> >>>> @@ -592,22 +592,35 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc >>>> >>>> >>>> >>>> case XEN_DOMCTL_scheduler_op: >>>> >>>> { >>>> >>>> - struct domain *d; >>>> >>>> - >>>> >>>> - ret =3D -ESRCH; >>>> >>>> - if ( (d =3D rcu_lock_domain_by_id(op->domain)) =3D=3D NULL ) >>>> >>>> - break; >>>> >>>> + if ( (op->u.scheduler_op.cmd =3D=3D >>>> XEN_DOMCTL_SCHEDOP_put_global_info) >>>> >>>> + || (op->u.scheduler_op.cmd =3D=3D >>>> XEN_DOMCTL_SCHEDOP_get_global_info) ) >>>> >>>> + { >>>> >>>> + ret =3D sched_adjust_global(&op->u.scheduler_op); >>>> >>>> + if (op->u.scheduler_op.cmd =3D=3D >>>> XEN_DOMCTL_SCHEDOP_get_global_info) >>>> >>>> + { >>>> >>>> + if ( copy_to_guest(u_domctl, op, 1) ) >>>> >>>> + ret =3D -EFAULT; >>>> >>>> + } >>>> >>>> + } >>>> >>>> + else >>>> >>>> + { >>>> >>>> + struct domain *d; >>>> >>>> >>>> >>>> - ret =3D xsm_scheduler(d); >>>> >>>> - if ( ret ) >>>> >>>> - goto scheduler_op_out; >>>> >>>> + ret =3D -ESRCH; >>>> >>>> + if ( (d =3D rcu_lock_domain_by_id(op->domain)) =3D=3D NUL= L ) >>>> >>>> + break; >>>> >>>> >>>> >>>> - ret =3D sched_adjust(d, &op->u.scheduler_op); >>>> >>>> - if ( copy_to_guest(u_domctl, op, 1) ) >>>> >>>> - ret =3D -EFAULT; >>>> >>>> + ret =3D xsm_scheduler(d); >>>> >>>> + if ( ret ) >>>> >>>> + goto scheduler_op_out; >>>> >>>> + >>>> >>>> + ret =3D sched_adjust(d, &op->u.scheduler_op); >>>> >>>> + if ( copy_to_guest(u_domctl, op, 1) ) >>>> >>>> + ret =3D -EFAULT; >>>> >>>> >>>> >>>> - scheduler_op_out: >>>> >>>> - rcu_unlock_domain(d); >>>> >>>> + scheduler_op_out: >>>> >>>> + rcu_unlock_domain(d); >>>> >>>> + } >>>> >>>> } >>>> >>>> break; >>>> >>>> >>>> >>>> diff -rupN a/xen/common/sched_credit.c b/xen/common/sched_credit.c >>>> >>>> --- a/xen/common/sched_credit.c 2010-04-07 12:12:06.00000000= 0 >>>> -0400 >>>> >>>> +++ b/xen/common/sched_credit.c 2010-04-13 17:30:40.710992000 >>>> -0400 >>>> >>>> @@ -1404,6 +1404,7 @@ const struct scheduler sched_credit_def >>>> >>>> .wake =3D csched_vcpu_wake, >>>> >>>> >>>> >>>> .adjust =3D csched_dom_cntl, >>>> >>>> + .adjust_global =3D NULL, >>>> >>>> >>>> >>>> .pick_cpu =3D csched_cpu_pick, >>>> >>>> .do_schedule =3D csched_schedule, >>>> >>>> diff -rupN a/xen/common/sched_sedf.c b/xen/common/sched_sedf.c >>>> >>>> --- a/xen/common/sched_sedf.c 2010-04-07 12:12:06.000000000 -0400 >>>> >>>> +++ b/xen/common/sched_sedf.c 2010-04-13 17:30:40.710992000 >>>> -0400 >>>> >>>> @@ -1473,6 +1473,7 @@ const struct scheduler sched_sedf_def =3D >>>> >>>> .sleep =3D sedf_sleep, >>>> >>>> .wake =3D sedf_wake, >>>> >>>> .adjust =3D sedf_adjust, >>>> >>>> + .adjust_global =3D NULL, >>>> >>>> }; >>>> >>>> >>>> >>>> /* >>>> >>>> diff -rupN a/xen/common/schedule.c b/xen/common/schedule.c >>>> >>>> --- a/xen/common/schedule.c 2010-04-07 12:12:06.000000000 -0400 >>>> >>>> +++ b/xen/common/schedule.c 2010-04-14 10:57:11.262796000 -0400 >>>> >>>> @@ -804,6 +804,21 @@ long sched_adjust(struct domain *d, stru >>>> >>>> return ret; >>>> >>>> } >>>> >>>> >>>> >>>> +/* Adjust scheduling parameters globally */ >>>> >>>> +long sched_adjust_global(struct xen_domctl_scheduler_op *op) >>>> >>>> +{ >>>> >>>> + long ret; >>>> >>>> + >>>> >>>> + if ( (op->sched_id !=3D ops.sched_id) >>>> >>>> + || ( (op->cmd !=3D XEN_DOMCTL_SCHEDOP_put_global_info) >>>> >>>> + && (op->cmd !=3D XEN_DOMCTL_SCHEDOP_get_global_info) ) ) >>>> >>>> + return -EINVAL; >>>> >>>> + >>>> >>>> + ret =3D SCHED_OP(adjust_global, op); >>>> >>>> + >>>> >>>> + return ret; >>>> >>>> +} >>>> >>>> + >>>> >>>> static void vcpu_periodic_timer_work(struct vcpu *v) >>>> >>>> { >>>> >>>> s_time_t now =3D NOW(); >>>> >>>> diff -rupN a/xen/include/public/domctl.h b/xen/include/public/domctl.h >>>> >>>> --- a/xen/include/public/domctl.h 2010-04-07 12:12:06.000000000 -0400 >>>> >>>> +++ b/xen/include/public/domctl.h 2010-04-14 10:57:11.26279600= 0 >>>> -0400 >>>> >>>> @@ -306,6 +306,8 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_max_v >>>> >>>> /* Set or get info? */ >>>> >>>> #define XEN_DOMCTL_SCHEDOP_putinfo 0 >>>> >>>> #define XEN_DOMCTL_SCHEDOP_getinfo 1 >>>> >>>> +#define XEN_DOMCTL_SCHEDOP_put_global_info 2 >>>> >>>> +#define XEN_DOMCTL_SCHEDOP_get_global_info 3 >>>> >>>> struct xen_domctl_scheduler_op { >>>> >>>> uint32_t sched_id; /* XEN_SCHEDULER_* */ >>>> >>>> uint32_t cmd; /* XEN_DOMCTL_SCHEDOP_* */ >>>> >>>> diff -rupN a/xen/include/xen/sched.h b/xen/include/xen/sched.h >>>> >>>> --- a/xen/include/xen/sched.h 2010-04-07 12:12:06.000000000 -0400 >>>> >>>> +++ b/xen/include/xen/sched.h 2010-04-13 17:30:40.710992000 -0400 >>>> >>>> @@ -472,6 +472,7 @@ void sched_destroy_vcpu(struct vcpu *v); >>>> >>>> int sched_init_domain(struct domain *d); >>>> >>>> void sched_destroy_domain(struct domain *d); >>>> >>>> long sched_adjust(struct domain *, struct xen_domctl_scheduler_op *); >>>> >>>> +long sched_adjust_global(struct xen_domctl_scheduler_op *); >>>> >>>> int sched_id(void); >>>> >>>> void sched_tick_suspend(void); >>>> >>>> void sched_tick_resume(void); >>>> >>>> diff -rupN a/xen/include/xen/sched-if.h b/xen/include/xen/sched-if.h >>>> >>>> --- a/xen/include/xen/sched-if.h 2010-04-07 12:12:06.000000000 -0400 >>>> >>>> +++ b/xen/include/xen/sched-if.h 2010-04-13 17:30:40.7109920= 00 >>>> -0400 >>>> >>>> @@ -76,6 +76,7 @@ struct scheduler { >>>> >>>> int (*pick_cpu) (struct vcpu *); >>>> >>>> int (*adjust) (struct domain *, >>>> >>>> struct xen_domctl_scheduler_op *)= ; >>>> >>>> + int (*adjust_global) (struct xen_domctl_scheduler_op *)= ; >>>> >>>> void (*dump_settings) (void); >>>> >>>> void (*dump_cpu_state) (int); >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> _______________________________________________ >>>> Xen-devel mailing list >>>> Xen-devel@lists.xensource.com >>>> http://lists.xensource.com/xen-devel >>>> >>>> >>> >>> _______________________________________________ >>> Xen-devel mailing list >>> Xen-devel@lists.xensource.com >>> http://lists.xensource.com/xen-devel >>> >>> >> > --00151747b414f613fb0485c69c15 Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Keir, the new SCHEDOP_adjust_global needs to have the cpupool_id so that we= can call the "global" parameters for the right pool.=A0 Would it= make sense to overload the domid in DOMCTL, making it the cpupool_id if th= e command is XEN_DOMCTL_SCHEDOP_{get,put}_global_info?=A0 Or should we put = it somewhere else?=A0 I glanced around the other hypercalls, and nothing se= ems much better; the cpupools stuff is in the DOMCTL file anyway.

=A0-George

On Mon, May 3, 2010 at 10:= 29 PM, George Dunlap <George.Dunlap@eu.citrix.com> wrote:
Hmm, and it also needs to be adjusted for the new cpu pools stuff.=A0 I'= ;ll take a look at it tomorrow.
=A0-George




On Mon, May 3, 2010 at 4:50 PM, George Dunlap <George.Dunlap@= eu.citrix.com> wrote:
Also, the SCHEDOP= needs an xsm callback; but I'm not an expert enough in the xsm framewo= rk to say what it needs.

Other than that:

Acked-by: George Dunlap <george.dunlap@eu.citrix.com>


On Mon, Apr 19, 2010 at 6:54 AM, Dulloor <d= ulloor@gmail.com> wrote:
You don't have to explicitly set adjust_global to NULL for credit and s= edf.

-dulloor

On Mon, Apr 19, 2010 at 9:39 AM, Kathy Hadley <Kathy.Hadley@do= rnerworks.com> wrote:
=

Resubmittin= g now that I have been added to the Xen-devel mailing list.

=A0<= /p>

Kathy Hadle= y

DornerWorks= , Ltd.

=A0<= /p>

From:= Kathy Hadley
Sent: Friday, April 16, 2010 10:14 AM
To: 'xen-devel@lists.xensource.com'
Cc: 'Keir.Fraser@citrix.com'
Subject: [Xen-Devel] [PATCH 1/1] Add .adjust_global callback
<= /p>

=A0

This patch adds an .adjust_global scheduler callback function, which allows adjusting the global scheduler parameters (rather th= an just one domain=92s parameters).=A0 This patch supports the addition of an ARINC 653 scheduler (which will be submitted in a subsequent patch), and= was suggested by George Dunlap and Keir Fraser in response to an earlier patch (ref: [Xen-devel] [PATCH 1/1] Xen ARINC 653 scheduler).

=A0

Thanks and regards,

=A0

=A0

3D"cid:image00=

Kathy Hadley
DornerWorks, Ltd.
Embedded Systems Engineering

3445 Lake Eastbrook Blvd SE
Grand Rapids, MI=A0 49546

Direct: 616.389.6127

Tel:=A0=A0=A0=A0=A0 616.245.8369

Fax:=A0=A0=A0=A0 616.245.8372

=A0

Kathy.Hadley@DornerWorks.com

www.DornerWorks.com

3D"cid:image002.jpg@01CAD7E0.50=

Honored as one of the 2010 =93Michigan 50 Companies to Watch=94

=A0

diff -rupN a/xen/common/domctl.c b/xen/common/domctl.c

--- a/xen/common/domctl.c=A0=A0=A0=A0=A0=A0=A0 2010-04-07 12:12:06.000000000 -0400

+++ b/xen/common/domctl.c=A0=A0=A0=A0 2010-04-14 10:57:11.262796000 -0400

@@ -592,22 +592,35 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc

=A0

=A0=A0=A0=A0 case XEN_DOMCTL_scheduler_op:

=A0=A0=A0=A0 {

-=A0=A0=A0=A0=A0=A0=A0 struct domain *d;

-

-=A0=A0=A0=A0=A0=A0=A0 ret =3D -ESRCH;

-=A0=A0=A0=A0=A0=A0=A0 if ( (d =3D rcu_lock_domain_by_id(op->domain)) =3D=3D NULL )

-=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 break;

+=A0=A0=A0=A0=A0=A0=A0 if ( (op->u.scheduler_op.cmd =3D=3D XEN_DOMCTL_SCHEDOP_put_global_info= )

+=A0=A0=A0=A0=A0=A0=A0=A0=A0 || (op->u.scheduler_op.cmd =3D=3D XEN_DOMCTL_SCHEDOP_get_global_info) = )

+=A0=A0=A0=A0=A0=A0=A0 {

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ret =3D sched_adjust_global(&op->u.scheduler_op);

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 if (op->u.scheduler_op.cmd =3D=3D XEN_DOMCTL_SCHEDOP_get_global_info)<= /span>

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 {

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 if ( copy_to_guest(u_domctl, op, 1) )

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0 ret =3D -EFAULT;

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 }

+=A0=A0=A0=A0=A0=A0=A0 }

+=A0=A0=A0=A0=A0=A0=A0 else

+=A0=A0=A0=A0=A0=A0=A0 {

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 struct domain *d;

=A0

-=A0=A0=A0=A0=A0=A0=A0 ret =3D xsm_scheduler(d);

-=A0=A0=A0=A0=A0=A0=A0 if ( ret )

-=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 goto scheduler_op_out;

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ret =3D -ESRCH;

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 if ( (d =3D rcu_lock_domain_by_id(op->domain)) =3D=3D NULL )

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 break;

=A0

-=A0=A0=A0=A0=A0=A0=A0 ret =3D sched_adjust(d, &op->u.scheduler_op);

-=A0=A0=A0=A0=A0=A0=A0 if ( copy_to_guest(u_domctl, op, 1) )

-=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ret =3D -EFAULT;

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ret =3D xsm_scheduler(d);

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 if ( ret )

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 goto scheduler_op_out;

+

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ret =3D sched_adjust(d, &op->u.scheduler_op);

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 if ( copy_to_guest(u_domctl, op, 1) )

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ret =3D -EFAULT;

=A0

-=A0=A0=A0 scheduler_op_out:

-=A0=A0=A0=A0=A0=A0=A0 rcu_unlock_domain(d);

+=A0=A0=A0=A0=A0=A0=A0 scheduler_op_out:

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 rcu_unlock_domain(d);

+=A0=A0=A0=A0=A0=A0=A0 }

=A0=A0=A0=A0 }

=A0=A0=A0=A0 break;

=A0

diff -rupN a/xen/common/sched_credit.c b/xen/common/sched_credit.c

--- a/xen/common/sched_credit.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 2010-04-07 12:12:06.000000000 -0400

+++ b/xen/common/sched_credit.c=A0=A0=A0=A0=A0=A0=A0 2010-04-13 17:30:40.710992000 -0400

@@ -1404,6 +1404,7 @@ const struct scheduler sched_credit_def

=A0=A0=A0=A0 .wake=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =3D csched_vcpu_wake,

=A0

=A0=A0=A0=A0 .adjust=A0=A0=A0=A0=A0=A0=A0=A0 =3D csched_dom_cntl,

+=A0=A0=A0 .adjust_global=A0 =3D NULL,

=A0

=A0=A0=A0=A0 .pick_cpu=A0=A0=A0=A0=A0=A0 =3D csched_cpu_pick,

=A0=A0=A0=A0 .do_schedule=A0=A0=A0 =3D csched_schedule,

diff -rupN a/xen/common/sched_sedf.c b/xen/common/sched_sedf.c

--- a/xen/common/sched_sedf.c 2010-04-07 12:12:06.000000000 -0400

+++ b/xen/common/sched_sedf.c=A0=A0=A0=A0=A0=A0=A0=A0=A0 2010-04-13 17:30:40.710992000 -0400

@@ -1473,6 +1473,7 @@ const struct scheduler sched_sedf_def =3D

=A0=A0=A0=A0 .sleep=A0=A0=A0=A0=A0=A0=A0=A0=A0 =3D sedf_sleep,

=A0=A0=A0=A0 .wake=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =3D sedf_wake,

=A0=A0=A0=A0 .adjust=A0=A0=A0=A0=A0=A0=A0=A0 =3D sedf_adjust,

+=A0=A0=A0 .adjust_global=A0 =3D NULL,

=A0};

=A0

=A0/*

diff -rupN a/xen/common/schedule.c b/xen/common/schedule.c

--- a/xen/common/schedule.c=A0=A0=A0=A0 2010-04-07 12:12:06.000000000 -0400

+++ b/xen/common/schedule.c=A0 2010-04-14 10:57:11.262796000 -0400

@@ -804,6 +804,21 @@ long sched_adjust(struct domain *d, stru

=A0=A0=A0=A0 return ret;

=A0}

=A0

+/* Adjust scheduling parameters globally */

+long sched_adjust_global(struct xen_domctl_scheduler_op *op)

+{

+=A0=A0=A0 long ret;

+

+=A0=A0=A0 if ( (op->sched_id !=3D ops.sched_id)

+=A0=A0=A0=A0=A0 || ( (op->cmd !=3D XEN_DOMCTL_SCHEDOP_put_global_info)

+=A0=A0=A0=A0=A0=A0=A0 && (op->cmd !=3D XEN_DOMCTL_SCHEDOP_get_global_info) ) )

+=A0=A0=A0=A0=A0=A0=A0 return -EINVAL;

+

+=A0=A0=A0 ret =3D SCHED_OP(adjust_global, op);

+

+=A0=A0=A0 return ret;

+}

+

=A0static void vcpu_periodic_timer_work(struct vcpu *v)

=A0{

=A0=A0=A0=A0 s_time_t now =3D NOW();

diff -rupN a/xen/include/public/domctl.h b/xen/include/public/domctl.h<= /p>

--- a/xen/include/public/domctl.h 2010-04-07 12:12:06.000000000 -0400<= /p>

+++ b/xen/include/public/domctl.h=A0=A0=A0=A0=A0=A0=A0=A0 2010-04-14 10:57:11.262796000 -0400

@@ -306,6 +306,8 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_max_v

=A0/* Set or get info? */

=A0#define XEN_DOMCTL_SCHEDOP_putinfo 0

=A0#define XEN_DOMCTL_SCHEDOP_getinfo 1

+#define XEN_DOMCTL_SCHEDOP_put_global_info 2

+#define XEN_DOMCTL_SCHEDOP_get_global_info 3

=A0struct xen_domctl_scheduler_op {

=A0=A0=A0=A0 uint32_t sched_id;=A0 /* XEN_SCHEDULER_* */

=A0=A0=A0=A0 uint32_t cmd;=A0=A0=A0=A0=A0=A0 /* XEN_DOMCTL_SCHEDOP_* */

diff -rupN a/xen/include/xen/sched.h b/xen/include/xen/sched.h

--- a/xen/include/xen/sched.h=A0=A0=A0=A0=A0 2010-04-07 12:12:06.000000000 -0400

+++ b/xen/include/xen/sched.h=A0 2010-04-13 17:30:40.710992000 -0400

@@ -472,6 +472,7 @@ void sched_destroy_vcpu(struct vcpu *v);

=A0int=A0 sched_init_domain(struct domain *d);

=A0void sched_destroy_domain(struct domain *d);

=A0long sched_adjust(struct domain *, struct xen_domctl_scheduler_op *);

+long sched_adjust_global(struct xen_domctl_scheduler_op *);

=A0int=A0 sched_id(void);

=A0void sched_tick_suspend(void);

=A0void sched_tick_resume(void);

diff -rupN a/xen/include/xen/sched-if.h b/xen/include/xen/sched-if.h

--- a/xen/include/xen/sched-if.h=A0=A0 2010-04-07 12:12:06.000000000 -0400

+++ b/xen/include/xen/sched-if.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 2010-04-13 17:30:40.710992000 -0400

@@ -76,6 +76,7 @@ struct scheduler {

=A0=A0=A0=A0 int=A0=A0=A0=A0=A0=A0=A0=A0=A0 (*pick_cpu)=A0=A0=A0=A0=A0=A0 (struct vcpu *);

=A0=A0=A0=A0 int=A0=A0=A0=A0=A0=A0=A0=A0=A0 (*adjust)=A0=A0=A0=A0=A0=A0=A0=A0 (struct domain *,

=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 struct xen_domctl_scheduler_op *);

+=A0=A0=A0 int=A0=A0=A0=A0=A0=A0=A0=A0=A0 (*adjust_global)=A0 (struct xen_domctl_scheduler_op *);

=A0=A0=A0=A0 void=A0=A0=A0=A0=A0=A0=A0=A0 (*dump_settings)=A0 (void);

=A0=A0=A0=A0 void=A0=A0=A0=A0=A0=A0=A0=A0 (*dump_cpu_state) (int);

=A0<= /p>

=A0<= /p>

=A0<= /p>

=A0

=A0


_______________________________________________
Xen-devel mailing list
Xen-deve= l@lists.xensource.com
http://l= ists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-deve= l@lists.xensource.com
http://l= ists.xensource.com/xen-devel




--00151747b414f613fb0485c69c15-- --00151747b414f613fe0485c69c16 Content-Type: image/jpeg; name="image002.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: 0.0.2 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCABVAFIDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDrNJOm pZzXl3Ikrx52wbhuOPbuaZbeJIJ72K2vNESGKZwiuvJBPTPFYcMUaS7o0+duOOSa6a0s7fRrZdR1 THmZ/cw4yd3bA/vfypiGaraLYXgRCSjjcoPUe1WZvI0XT0nntzdXMvCQj1/+t3NYmoanLdM93MAp AGFHRRnpW74jORayryhBAP1waAIdL1W31i4exurD7FdbdybejD2plzIdPkfzYXmMR/1adX9K5LX/ ABENJki+xuPt6ZKsOfLBGDn86q+HPF8skq2mrTl2biO4c8/Rj/WsnWgp8p1RwtSVP2iR6PaXCX+i veGyFq/zDYeSMHr0qGEtJIqL1Y4qW1cf8I/Kc92/nVfTplF7FuIGTgfU1qco/VNWXS50srOyN7dl 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 miiigD//2Q== --00151747b414f613fe0485c69c16 Content-Type: image/jpeg; name="image001.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: 0.0.1 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCABSAGcDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwBdc1SD QLXRre10LRpBNpkErvPZKzFiOTn8Kyf+Exf/AKF7QP8AwXrU3jj/AJgP/YHt/wCRrl66YxTR5Nat UjUaTPR/D/jDwneOtvrXhvTLOQ8CdLVDGfqMZX9a6LxDoaW9oL/Q9E0W6hC7mjNijMR/eUjr9K8W rsvAfjebQbtLC+lL6bK2Pm58gnuPb1FZ1KN17uhrQxbvaYf8JGv/AEL+hf8AgvSj/hI1/wChf0L/ AMAEre8f+Go7SQazYqBbzn98q9FY9GHsf5/WuIrw6k6sJcrkeqrM2f8AhI1/6F/Qv/ABKP8AhI1/ 6F/Qv/ABKxqXk8AZNZ+3qfzDsjY/4SNf+hf0L/wASj/hI1/6F/Qv/ABKl8SeG30K30+U5P2iEebn +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 --00151747b414f613fe0485c69c16-- --===============0044624696== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --===============0044624696==--