mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
bitkeeper revision 1.1108.33.44 (410f8404kXIyeWRcoHfJS3Naittt4Q)
Merge freefall.cl.cam.ac.uk:/auto/groups/xeno/BK/xeno.bk into freefall.cl.cam.ac.uk:/auto/groups/xeno/users/cl349/BK/xeno.bk-26dom0
This commit is contained in:
commit
034b4791aa
6 files changed
+13
-13
No files matched your search
+2
-2
@@ -39,8 +39,8 @@ struct domain *do_createdomain(domid_t dom_id, unsigned int cpu)
|
||||
d->domain = dom_id;
|
||||
d->processor = cpu;
|
||||
d->create_time = NOW();
|
||||
/* Initialise the state_lock */
|
||||
spin_lock_init(&d->state_lock);
|
||||
/* Initialise the sleep_lock */
|
||||
spin_lock_init(&d->sleep_lock);
|
||||
|
||||
memcpy(&d->thread, &idle0_task.thread, sizeof(d->thread));
|
||||
|
||||
|
||||
@@ -230,13 +230,12 @@ void bvt_wake(struct domain *d)
|
||||
((inf->evt - curr_evt) / BVT_INFO(curr)->mcu_advance) +
|
||||
ctx_allow;
|
||||
|
||||
|
||||
spin_unlock_irqrestore(&schedule_data[cpu].schedule_lock, flags);
|
||||
if ( is_idle_task(curr) || (inf->evt <= curr_evt) )
|
||||
cpu_raise_softirq(cpu, SCHEDULE_SOFTIRQ);
|
||||
else if ( schedule_data[cpu].s_timer.expires > r_time )
|
||||
mod_ac_timer(&schedule_data[cpu].s_timer, r_time);
|
||||
|
||||
spin_unlock_irqrestore(&schedule_data[cpu].schedule_lock, flags);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -276,12 +276,12 @@ static void fbvt_wake(struct domain *d)
|
||||
/* Currently-running domain should run at least for ctx_allow. */
|
||||
min_time = curr->lastschd + ctx_allow;
|
||||
|
||||
spin_unlock_irqrestore(&schedule_data[cpu].schedule_lock, flags);
|
||||
|
||||
if ( is_idle_task(curr) || (min_time <= now) )
|
||||
cpu_raise_softirq(cpu, SCHEDULE_SOFTIRQ);
|
||||
else if ( schedule_data[cpu].s_timer.expires > (min_time + TIME_SLOP) )
|
||||
mod_ac_timer(&schedule_data[cpu].s_timer, min_time);
|
||||
|
||||
spin_unlock_irqrestore(&schedule_data[cpu].schedule_lock, flags);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -218,10 +218,11 @@ void rr_wake(struct domain *d)
|
||||
|
||||
spin_lock_irqsave(&schedule_data[cpu].schedule_lock, flags);
|
||||
curr = schedule_data[cpu].curr;
|
||||
spin_unlock_irqrestore(&schedule_data[cpu].schedule_lock, flags);
|
||||
|
||||
if ( is_idle_task(curr) )
|
||||
cpu_raise_softirq(cpu, SCHEDULE_SOFTIRQ);
|
||||
|
||||
spin_unlock_irqrestore(&schedule_data[cpu].schedule_lock, flags);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -165,11 +165,11 @@ void domain_sleep(struct domain *d)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
/* sleep and wake protected by domain's state_lock */
|
||||
spin_lock_irqsave(&d->state_lock, flags);
|
||||
/* sleep and wake protected by domain's sleep_lock */
|
||||
spin_lock_irqsave(&d->sleep_lock, flags);
|
||||
if ( likely(!domain_runnable(d)) )
|
||||
SCHED_OP(sleep, d);
|
||||
spin_unlock_irqrestore(&d->state_lock, flags);
|
||||
spin_unlock_irqrestore(&d->sleep_lock, flags);
|
||||
|
||||
/* Synchronous. */
|
||||
while ( test_bit(DF_RUNNING, &d->flags) && !domain_runnable(d) )
|
||||
@@ -183,7 +183,7 @@ void domain_wake(struct domain *d)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&d->state_lock, flags);
|
||||
spin_lock_irqsave(&d->sleep_lock, flags);
|
||||
|
||||
if ( likely(domain_runnable(d)) )
|
||||
{
|
||||
@@ -196,7 +196,7 @@ void domain_wake(struct domain *d)
|
||||
|
||||
clear_bit(DF_MIGRATED, &d->flags);
|
||||
|
||||
spin_unlock_irqrestore(&d->state_lock, flags);
|
||||
spin_unlock_irqrestore(&d->sleep_lock, flags);
|
||||
}
|
||||
|
||||
/* Block the currently-executing domain until a pertinent event occurs. */
|
||||
|
||||
@@ -101,7 +101,7 @@ struct domain
|
||||
|
||||
/* Scheduling. */
|
||||
int shutdown_code; /* code value from OS (if DF_SHUTDOWN). */
|
||||
spinlock_t state_lock; /* wake/sleep lock */
|
||||
spinlock_t sleep_lock; /* wake/sleep lock */
|
||||
s_time_t lastschd; /* time this domain was last scheduled */
|
||||
s_time_t lastdeschd; /* time this domain was last descheduled */
|
||||
s_time_t cpu_time; /* total CPU time received till now */
|
||||
|
||||