On Sun, Feb 2, 2014 at 3:27 AM, <stef...@seibold.net> wrote: > From: Stefani Seibold <stef...@seibold.net> > > This patch is a small code cleanup for the __vdso_clock_gettime() function. > > It removes the unneeded return values from do_monotonic_coarse() and > do_realtime_coarse() and add a fallback label for doing the kernel > gettimeofday() system call. >
This is possibly worth benchmarking, but it looks harmless, and possibly even beneficial, to me. (If the optimizer is in a good mood, it might do a nicer job with do_monotonic now.) --Andy > Signed-off-by: Stefani Seibold <stef...@seibold.net> > --- > arch/x86/vdso/vclock_gettime.c | 27 ++++++++++++++------------- > 1 file changed, 14 insertions(+), 13 deletions(-) > > diff --git a/arch/x86/vdso/vclock_gettime.c b/arch/x86/vdso/vclock_gettime.c > index bbc8065..fd074dd 100644 > --- a/arch/x86/vdso/vclock_gettime.c > +++ b/arch/x86/vdso/vclock_gettime.c > @@ -209,7 +209,7 @@ notrace static int do_monotonic(struct timespec *ts) > return mode; > } > > -notrace static int do_realtime_coarse(struct timespec *ts) > +notrace static void do_realtime_coarse(struct timespec *ts) > { > unsigned long seq; > do { > @@ -217,10 +217,9 @@ notrace static int do_realtime_coarse(struct timespec > *ts) > ts->tv_sec = gtod->wall_time_coarse.tv_sec; > ts->tv_nsec = gtod->wall_time_coarse.tv_nsec; > } while (unlikely(read_seqcount_retry(>od->seq, seq))); > - return 0; > } > > -notrace static int do_monotonic_coarse(struct timespec *ts) > +notrace static void do_monotonic_coarse(struct timespec *ts) > { > unsigned long seq; > do { > @@ -228,30 +227,32 @@ notrace static int do_monotonic_coarse(struct timespec > *ts) > ts->tv_sec = gtod->monotonic_time_coarse.tv_sec; > ts->tv_nsec = gtod->monotonic_time_coarse.tv_nsec; > } while (unlikely(read_seqcount_retry(>od->seq, seq))); > - > - return 0; > } > > notrace int __vdso_clock_gettime(clockid_t clock, struct timespec *ts) > { > - int ret = VCLOCK_NONE; > - > switch (clock) { > case CLOCK_REALTIME: > - ret = do_realtime(ts); > + if (do_realtime(ts) == VCLOCK_NONE) > + goto fallback; > break; > case CLOCK_MONOTONIC: > - ret = do_monotonic(ts); > + if (do_monotonic(ts) == VCLOCK_NONE) > + goto fallback; > break; > case CLOCK_REALTIME_COARSE: > - return do_realtime_coarse(ts); > + do_realtime_coarse(ts); > + break; > case CLOCK_MONOTONIC_COARSE: > - return do_monotonic_coarse(ts); > + do_monotonic_coarse(ts); > + break; > + default: > + goto fallback; > } > > - if (ret == VCLOCK_NONE) > - return vdso_fallback_gettime(clock, ts); > return 0; > +fallback: > + return vdso_fallback_gettime(clock, ts); > } > int clock_gettime(clockid_t, struct timespec *) > __attribute__((weak, alias("__vdso_clock_gettime"))); > -- > 1.8.5.3 > -- Andy Lutomirski AMA Capital Management, LLC -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/