From 9249baa69be947a1015015f14b573a20b423e56e Mon Sep 17 00:00:00 2001 From: Alistair Strachan Date: Fri, 1 Mar 2019 17:45:09 -0800 Subject: [PATCH] Fall back to CLOCK_BOOTTIME if CLOCK_BOOTTIME_ALARM fails If the cuttlefish device does not have an rtc device (such as the crosvm VMM) the bt osi layer can promote crashes due to it not being able to create a CLOCK_BOOTTIME_ALARM timer. Bring back a fallback but enable it at runtime instead of compile time. Bug: 126955943 Test: run with cuttlefish Change-Id: I3ab0282b3e8fde776aa7b37d5772c8f62cf957bf --- osi/src/alarm.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/osi/src/alarm.c b/osi/src/alarm.c index 69ded69e4..75deca50c 100644 --- a/osi/src/alarm.c +++ b/osi/src/alarm.c @@ -96,12 +96,6 @@ struct alarm_t { int64_t TIMER_INTERVAL_FOR_WAKELOCK_IN_MS = 3000; static const clockid_t CLOCK_ID = CLOCK_BOOTTIME; -#if defined(KERNEL_MISSING_CLOCK_BOOTTIME_ALARM) && (KERNEL_MISSING_CLOCK_BOOTTIME_ALARM == TRUE) -static const clockid_t CLOCK_ID_ALARM = CLOCK_BOOTTIME; -#else -static const clockid_t CLOCK_ID_ALARM = CLOCK_BOOTTIME_ALARM; -#endif - // This mutex ensures that the |alarm_set|, |alarm_cancel|, and alarm callback // functions execute serially and not concurrently. As a result, this mutex // also protects the |alarms| list. @@ -342,8 +336,11 @@ static bool lazy_initialize(void) { goto error; timer_initialized = true; - if (!timer_create_internal(CLOCK_ID_ALARM, &wakeup_timer)) - goto error; + if (!timer_create_internal(CLOCK_BOOTTIME_ALARM, &wakeup_timer)) { + if (!timer_create_internal(CLOCK_BOOTTIME, &wakeup_timer)) { + goto error; + } + } wakeup_timer_initialized = true; alarm_expired = semaphore_new(0); -- 2.11.0