summaryrefslogtreecommitdiff
path: root/sound/core/seq/seq_timer.h
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2016-06-17 17:10:32 +0200
committerTakashi Iwai <tiwai@suse.de>2016-06-17 22:56:13 +0200
commit3915bf2946520ace5bcc8104717a3cb0452d7430 (patch)
tree031c5d4fa69ee97585d8c0aa8b8ad163b06dee21 /sound/core/seq/seq_timer.h
parentd169133889090903d9feb968deb9fa01240a58f5 (diff)
ALSA: seq_timer: use monotonic times internally
The sequencer client manager reports timestamps in units of unsigned 32-bit seconds/nanoseconds, but that does not suffer from the y2038 overflow because it stores only the delta since the 'last_update' time was recorded. However, the use of the do_gettimeofday() function is problematic and we have to replace it to avoid the overflow on on 32-bit architectures. This uses 'struct timespec64' to record 'last_update', and changes the code to use monotonic timestamps that do not suffer from leap seconds and settimeofday updates. As a side-effect, the code can now use the timespec64_sub() helper and become more readable and also avoid a multiplication to convert from microseconds to nanoseconds. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/core/seq/seq_timer.h')
-rw-r--r--sound/core/seq/seq_timer.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/core/seq/seq_timer.h b/sound/core/seq/seq_timer.h
index 88dfb71805ae..9506b661fe5b 100644
--- a/sound/core/seq/seq_timer.h
+++ b/sound/core/seq/seq_timer.h
@@ -52,7 +52,7 @@ struct snd_seq_timer {
unsigned int skew;
unsigned int skew_base;
- struct timeval last_update; /* time of last clock update, used for interpolation */
+ struct timespec64 last_update; /* time of last clock update, used for interpolation */
spinlock_t lock;
};