aboutsummaryrefslogtreecommitdiff
path: root/third_party/fuchsia/repo/zircon/system/ulib/lazy_init/include/lib/lazy_init/options.h
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/fuchsia/repo/zircon/system/ulib/lazy_init/include/lib/lazy_init/options.h')
-rw-r--r--third_party/fuchsia/repo/zircon/system/ulib/lazy_init/include/lib/lazy_init/options.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/third_party/fuchsia/repo/zircon/system/ulib/lazy_init/include/lib/lazy_init/options.h b/third_party/fuchsia/repo/zircon/system/ulib/lazy_init/include/lib/lazy_init/options.h
new file mode 100644
index 000000000..c044a406c
--- /dev/null
+++ b/third_party/fuchsia/repo/zircon/system/ulib/lazy_init/include/lib/lazy_init/options.h
@@ -0,0 +1,50 @@
+// Copyright 2021 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef LIB_LAZY_INIT_OPTIONS_H_
+#define LIB_LAZY_INIT_OPTIONS_H_
+
+namespace lazy_init {
+
+// Enum that specifies what kind of debug init checks to perform for a
+// lazy-initialized global variable.
+enum class CheckType {
+ // No checks are performed.
+ None,
+
+ // Initialization checks are performed. If multiple threads will access the
+ // global variable, initialization must be manually serialized with respect
+ // to the guard variable.
+ Basic,
+
+ // Initialization checks are performed using atomic operations. Checks are
+ // guaranteed to be consistent, even when races occur over initialization.
+ Atomic,
+
+ // The default check type as specified by the build. This is the check type
+ // used when not explicitly specified. It may also be specified explicitly
+ // to defer to the build configuration when setting other options.
+ // TODO(eieio): Add the build arg and conditional logic.
+ Default = None,
+};
+
+// Enum that specifies whether to enable a lazy-initialized global variable's
+// destructor. Disabling global destructors avoids destructor registration.
+// However, destructors can be conditionally enabled on builds that require
+// them, such as ASAN.
+enum class Destructor {
+ Disabled,
+ Enabled,
+
+ // The default destructor enablement as specified by the build. This is the
+ // enablement used when not explicitly specified. It may also be specified
+ // explicitly to defer to the build configuration when setting other
+ // options.
+ // TODO(eieio): Add the build arg and conditional logic.
+ Default = Disabled,
+};
+
+} // namespace lazy_init
+
+#endif // LIB_LAZY_INIT_OPTIONS_H_