Yes, that seems to do the trick. Thanks very much!

Greg

On Thu, Apr 19, 2007 at 01:43:19PM -0400, Jeff Dike wrote:
> Try the patch below.  I had to totally disassociate the UML's
> gettimeofday from the host's.
> 
>                               Jeff
> 
> -- 
> Work email - jdike at linux dot intel dot com
> 
> Index: linux-2.6.21-mm/arch/um/kernel/time.c
> ===================================================================
> --- linux-2.6.21-mm.orig/arch/um/kernel/time.c        2007-04-08 
> 19:18:52.000000000 -0400
> +++ linux-2.6.21-mm/arch/um/kernel/time.c     2007-04-19 13:43:55.000000000 
> -0400
> @@ -34,8 +34,8 @@ unsigned long long sched_clock(void)
>       return (unsigned long long)jiffies_64 * (1000000000 / HZ);
>  }
>  
> -static unsigned long long prev_nsecs[NR_CPUS];
>  #ifdef CONFIG_UML_REAL_TIME_CLOCK
> +static unsigned long long prev_nsecs[NR_CPUS];
>  static long long delta[NR_CPUS];             /* Deviation per interval */
>  #endif
>  
> @@ -94,7 +94,12 @@ irqreturn_t um_timer(int irq, void *dev)
>  
>       do_timer(1);
>  
> +#ifdef CONFIG_UML_REAL_TIME_CLOCK
>       nsecs = get_time();
> +#else
> +     nsecs = (unsigned long long) xtime.tv_sec * BILLION + xtime.tv_nsec +
> +             BILLION / HZ;
> +#endif
>       xtime.tv_sec = nsecs / NSEC_PER_SEC;
>       xtime.tv_nsec = nsecs - xtime.tv_sec * NSEC_PER_SEC;
>  
> @@ -127,13 +132,18 @@ void time_init(void)
>       nsecs = os_nsecs();
>       set_normalized_timespec(&wall_to_monotonic, -nsecs / BILLION,
>                               -nsecs % BILLION);
> +     set_normalized_timespec(&xtime, nsecs / BILLION, nsecs % BILLION);
>       late_time_init = register_timer;
>  }
>  
>  void do_gettimeofday(struct timeval *tv)
>  {
> +#ifdef CONFIG_UML_REAL_TIME_CLOCK
>       unsigned long long nsecs = get_time();
> -
> +#else
> +     unsigned long long nsecs = (unsigned long long) xtime.tv_sec * BILLION +
> +             xtime.tv_nsec;
> +#endif
>       tv->tv_sec = nsecs / NSEC_PER_SEC;
>       /* Careful about calculations here - this was originally done as
>        * (nsecs - tv->tv_sec * NSEC_PER_SEC) / NSEC_PER_USEC

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
User-mode-linux-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user

Reply via email to