Re: (*(unsigned long *)&jiffies)++;

From: Tigran Aivazian (tigran@sco.COM)
Date: Thu Jan 06 2000 - 10:26:45 EST


oops. Forgot that there (may be) non-Intel archs out there....

On Thu, 6 Jan 2000, Tigran Aivazian wrote:

> On Thu, 6 Jan 2000, Petko Manolov wrote:
> > GCC optimize(reorder) "jiffies++" and "(*(unsigned long *)&jiffies)++"
> > is
> > used to be sure jiffies is incremented exactly where/when you want.
>
> Ok, then it applies to lost_ticks and lost_ticks_system as well. And
> therefore a cleaner way of doing it (as Richard Johnson suggested) would
> be in asm:
>
> --- timer.c.0 Thu Jan 6 15:13:21 2000
> +++ timer.c Thu Jan 6 15:15:31 2000
> @@ -629,12 +629,11 @@
>
> void do_timer(struct pt_regs * regs)
> {
> - /* (*(unsigned long *)&jiffies)++; */
> - jiffies++;
> - lost_ticks++;
> + __asm__ __volatile__("incl jiffies");
> + __asm__ __volatile__("incl lost_ticks");
> mark_bh(TIMER_BH);
> if (!user_mode(regs))
> - lost_ticks_system++;
> + __asm__ __volatile__("incl lost_ticks_system");
> if (tq_timer)
> mark_bh(TQUEUE_BH);
> }
>
> Thsi is better than the *& hack because it is gcc-version-independent.
>
> Regards,
> ------
> Tigran A. Aivazian | http://www.sco.com
> Escalations Research Group | tel: +44-(0)1923-813796
> Santa Cruz Operation Ltd | http://www.ocston.org/~tigran
>
>
>
>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Jan 07 2000 - 21:00:06 EST