|
|
@@ -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
|