Sfoglia il codice sorgente

Kernel: Introduce LockLocation abstraction from SourceLocation

Introduce a zero sized type to represent a SourceLocation, when we
don't want to compile with SourceLocation support.
Brian Gianforcaro 4 anni fa
parent
commit
6c18b4e558
1 ha cambiato i file con 31 aggiunte e 0 eliminazioni
  1. 31 0
      Kernel/Locking/LockLocation.h

+ 31 - 0
Kernel/Locking/LockLocation.h

@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2021, Brian Gianforcaro <bgianf@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#if LOCK_DEBUG
+#    include <AK/SourceLocation.h>
+#endif
+
+// Abstract SourceLocation away from the kernel's locking API to avoid a
+// significant amount of #ifdefs in Mutex / MutexLocker / etc.
+//
+// To do this we declare LockLocation to be a zero sized struct which will
+// get optimized out during normal compilation. When LOCK_DEBUG is enabled,
+// we forward the implementation to AK::SourceLocation and get rich debugging
+// information for every caller.
+
+namespace Kernel {
+
+#if LOCK_DEBUG
+using LockLocation = SourceLocation;
+#else
+struct LockLocation {
+    static constexpr LockLocation current() { return {}; }
+};
+#endif
+
+}