mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen: introduce vcpu_block
Rename do_block to vcpu_block. Move the call to local_event_delivery_enable out of vcpu_block, to a new static function called vcpu_block_enable_events. Use vcpu_block_enable_events instead of do_block throughout in schedule.c Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Acked-by: Keir Fraser <keir@xen.org>
This commit is contained in:
1 parent
11d8866da5
commit
7be7b15dde
2 files changed
+9
-5
No files matched your search
@@ -677,11 +677,10 @@ int vcpu_set_affinity(struct vcpu *v, const cpumask_t *affinity)
|
||||
}
|
||||
|
||||
/* Block the currently-executing domain until a pertinent event occurs. */
|
||||
static long do_block(void)
|
||||
void vcpu_block(void)
|
||||
{
|
||||
struct vcpu *v = current;
|
||||
|
||||
local_event_delivery_enable();
|
||||
set_bit(_VPF_blocked, &v->pause_flags);
|
||||
|
||||
/* Check for events /after/ blocking: avoids wakeup waiting race. */
|
||||
@@ -694,8 +693,12 @@ static long do_block(void)
|
||||
TRACE_2D(TRC_SCHED_BLOCK, v->domain->domain_id, v->vcpu_id);
|
||||
raise_softirq(SCHEDULE_SOFTIRQ);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
static void vcpu_block_enable_events(void)
|
||||
{
|
||||
local_event_delivery_enable();
|
||||
vcpu_block();
|
||||
}
|
||||
|
||||
static long do_poll(struct sched_poll *sched_poll)
|
||||
@@ -870,7 +873,7 @@ long do_sched_op_compat(int cmd, unsigned long arg)
|
||||
|
||||
case SCHEDOP_block:
|
||||
{
|
||||
ret = do_block();
|
||||
vcpu_block_enable_events();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -907,7 +910,7 @@ ret_t do_sched_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
|
||||
|
||||
case SCHEDOP_block:
|
||||
{
|
||||
ret = do_block();
|
||||
vcpu_block_enable_events();
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -690,6 +690,7 @@ static inline int vcpu_runnable(struct vcpu *v)
|
||||
atomic_read(&v->domain->pause_count));
|
||||
}
|
||||
|
||||
void vcpu_block(void);
|
||||
void vcpu_unblock(struct vcpu *v);
|
||||
void vcpu_pause(struct vcpu *v);
|
||||
void vcpu_pause_nosync(struct vcpu *v);
|
||||
|
||||