Go to the documentation of this file.
15 #ifndef OPENSSL_HEADER_FIPSMODULE_DELOCATE_H
16 #define OPENSSL_HEADER_FIPSMODULE_DELOCATE_H
20 #include "../internal.h"
23 #if !defined(BORINGSSL_SHARED_LIBRARY) && defined(BORINGSSL_FIPS) && \
24 !defined(OPENSSL_ASAN) && !defined(OPENSSL_MSAN)
25 #define DEFINE_BSS_GET(type, name) \
26 static type name __attribute__((used)); \
27 type *name##_bss_get(void) __attribute__((const));
29 #define DEFINE_STATIC_ONCE(name) DEFINE_BSS_GET(CRYPTO_once_t, name)
31 #define DEFINE_STATIC_MUTEX(name) \
32 DEFINE_BSS_GET(struct CRYPTO_STATIC_MUTEX, name)
34 #define DEFINE_STATIC_EX_DATA_CLASS(name) \
35 DEFINE_BSS_GET(CRYPTO_EX_DATA_CLASS, name)
37 #define DEFINE_BSS_GET(type, name) \
39 static type *name##_bss_get(void) { return &name; }
40 #define DEFINE_STATIC_ONCE(name) \
41 static CRYPTO_once_t name = CRYPTO_ONCE_INIT; \
42 static CRYPTO_once_t *name##_bss_get(void) { return &name; }
43 #define DEFINE_STATIC_MUTEX(name) \
44 static struct CRYPTO_STATIC_MUTEX name = CRYPTO_STATIC_MUTEX_INIT; \
45 static struct CRYPTO_STATIC_MUTEX *name##_bss_get(void) { return &name; }
46 #define DEFINE_STATIC_EX_DATA_CLASS(name) \
47 static CRYPTO_EX_DATA_CLASS name = CRYPTO_EX_DATA_CLASS_INIT; \
48 static CRYPTO_EX_DATA_CLASS *name##_bss_get(void) { return &name; }
51 #define DEFINE_DATA(type, name, accessor_decorations) \
52 DEFINE_BSS_GET(type, name##_storage) \
53 DEFINE_STATIC_ONCE(name##_once) \
54 static void name##_do_init(type *out); \
55 static void name##_init(void) { name##_do_init(name##_storage_bss_get()); } \
56 accessor_decorations type *name(void) { \
57 CRYPTO_once(name##_once_bss_get(), name##_init); \
60 return (const type *)name##_storage_bss_get(); \
62 static void name##_do_init(type *out)
85 #define DEFINE_METHOD_FUNCTION(type, name) DEFINE_DATA(type, name, const)
87 #define DEFINE_LOCAL_DATA(type, name) DEFINE_DATA(type, name, static const)
89 #endif // OPENSSL_HEADER_FIPSMODULE_DELOCATE_H
grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:09