[lttng-dev] [RFC PATCH] Introduce timekeeper latch synchronization

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Fri Sep 13 11:30:20 EDT 2013


* Mathieu Desnoyers (mathieu.desnoyers at efficios.com) wrote:
[...]
> @@ -1362,29 +1398,31 @@ static inline void old_vsyscall_fixup(struct timekeeper *tk)
>  static void update_wall_time(void)
>  {
[...]
> -	/*
> -	 * Update the real timekeeper.
> -	 *
> -	 * We could avoid this memcpy by switching pointers, but that
> -	 * requires changes to all other timekeeper usage sites as
> -	 * well, i.e. move the timekeeper pointer getter into the
> -	 * spinlocked/seqcount protected sections. And we trade this
> -	 * memcpy under the timekeeper_seq against one before we start
> -	 * updating.
> -	 */
> -	memcpy(real_tk, tk, sizeof(*tk));
> -	timekeeping_update(real_tk, action);

This line above appears to be important ;-) Let's see if my screensaver
stops misbehaving if I put it back. I will of course send a v2 after
some more testing.

By the way, if there are some standard test-bench for timekeeping, I'd
be very interested to hear about them.

Thanks!

Mathieu

> -	write_seqcount_end(&timekeeper_seq);
>  out:
> +	timekeeper_write_end(&latch_timekeeper);
>  	raw_spin_unlock_irqrestore(&timekeeper_lock, flags);
>  }

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list