direct-io.hg

changeset 1837:6fcb9ee1e130

bitkeeper revision 1.1108.6.1 (40fcf6dbc9Be6szJlWRlS855NTQlrg)

Use the HYPERVISOR_block now, after adding a check if there's RCU work.
author cl349@freefall.cl.cam.ac.uk
date Tue Jul 20 10:41:31 2004 +0000 (2004-07-20)
parents 4d2b5836d0d7
children fd7b2f01d894
files linux-2.6.7-xen-sparse/arch/xen/i386/kernel/time.c linux-2.6.7-xen-sparse/arch/xen/kernel/process.c
line diff
     1.1 --- a/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/time.c	Mon Jul 19 22:22:10 2004 +0000
     1.2 +++ b/linux-2.6.7-xen-sparse/arch/xen/i386/kernel/time.c	Tue Jul 20 10:41:31 2004 +0000
     1.3 @@ -479,6 +479,7 @@ int set_timeout_timer(void)
     1.4  {
     1.5      u64 alarm = 0;
     1.6      int ret = 0;
     1.7 +    int cpu = smp_processor_id();
     1.8  
     1.9      spin_lock(&timerlist_lock);
    1.10  
    1.11 @@ -490,12 +491,6 @@ int set_timeout_timer(void)
    1.12       */
    1.13      alarm = __jiffies_to_st(next_timer_interrupt());
    1.14  
    1.15 -#if 0
    1.16 -    /* Tasks on the timer task queue expect to be executed on the next tick. */
    1.17 -    if ( TQ_ACTIVE(tq_timer) )
    1.18 -        alarm = __jiffies_to_st(jiffies + 1);
    1.19 -#endif
    1.20 -
    1.21      /* Failure is pretty bad, but we'd best soldier on. */
    1.22      if ( HYPERVISOR_set_timer_op(alarm) != 0 )
    1.23          ret = -1;
     2.1 --- a/linux-2.6.7-xen-sparse/arch/xen/kernel/process.c	Mon Jul 19 22:22:10 2004 +0000
     2.2 +++ b/linux-2.6.7-xen-sparse/arch/xen/kernel/process.c	Tue Jul 20 10:41:31 2004 +0000
     2.3 @@ -11,11 +11,11 @@
     2.4  void xen_cpu_idle (void)
     2.5  {
     2.6  	local_irq_disable();
     2.7 -	if (need_resched()) {
     2.8 +	if (need_resched() || !list_empty(&RCU_curlist(cpu)))
     2.9  		local_irq_enable();
    2.10  		return;
    2.11  	}
    2.12 -	if (0 && set_timeout_timer() == 0) {
    2.13 +	if (set_timeout_timer() == 0) {
    2.14  		/* NB. Blocking reenable events in a race-free manner. */
    2.15  		HYPERVISOR_block();
    2.16  		return;