From 584b7cf801f98d58aefe5a9bbc4a163aba4c1b74 Mon Sep 17 00:00:00 2001 From: Sergey Vlasov Date: Sun, 12 Feb 2023 09:14:34 +0300 Subject: Fix build failures with `OPT = 0` due to inline functions (#19767) Co-authored-by: Joel Challis --- platforms/synchronization_util.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'platforms/synchronization_util.h') diff --git a/platforms/synchronization_util.h b/platforms/synchronization_util.h index 59933945c3..4969eff478 100644 --- a/platforms/synchronization_util.h +++ b/platforms/synchronization_util.h @@ -29,6 +29,12 @@ inline void split_shared_memory_unlock(void){}; prefix##_unlock(); \ } +/* Generate an out-of-line implementation in case the inline functions defined + * by the above macro don't actually get inlined. */ +#define QMK_IMPLEMENT_AUTOUNLOCK_HELPERS(prefix) \ + extern inline unsigned prefix##_autounlock_lock_helper(void); \ + extern inline void prefix##_autounlock_unlock_helper(unsigned* unused_guard); + /* Convinience macro the automatically generate the correct RAII-style * lock_autounlock function macro */ #define QMK_DECLARE_AUTOUNLOCK_CALL(prefix) unsigned prefix##_guard __attribute__((unused, cleanup(prefix##_autounlock_unlock_helper))) = prefix##_autounlock_lock_helper -- cgit v1.2.3