File tree Expand file tree Collapse file tree 2 files changed +30
-0
lines changed Expand file tree Collapse file tree 2 files changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -108,6 +108,21 @@ RCUTILS_WARN_UNUSED
108108rcutils_allocator_t
109109rcutils_get_default_allocator (void );
110110
111+ /// Override the default allocator returned by rcutils_get_default_allocator.
112+ /**
113+ * Attribute | Adherence
114+ * ------------------ | -------------
115+ * Allocates Memory | No
116+ * Thread-Safe | No
117+ * Uses Atomics | No
118+ * Lock-Free | Yes
119+ *
120+ * \param[in] override_allocator The allocator to set as the default.
121+ */
122+ RCUTILS_PUBLIC
123+ void
124+ rcutils_set_default_allocator (rcutils_allocator_t override_allocator );
125+
111126/// Return true if the given allocator has non-null function pointers.
112127/**
113128 * \param[in] allocator to be checked by the function
Original file line number Diff line number Diff line change @@ -69,16 +69,31 @@ rcutils_get_zero_initialized_allocator(void)
6969 return zero_allocator ;
7070}
7171
72+ static rcutils_allocator_t rcutils_override_default_allocator = {0 };
73+
74+ void
75+ rcutils_set_default_allocator (rcutils_allocator_t override_allocator )
76+ {
77+ if (rcutils_allocator_is_valid (& override_allocator )) {
78+ rcutils_override_default_allocator = override_allocator ;
79+ }
80+ }
81+
7282rcutils_allocator_t
7383rcutils_get_default_allocator (void )
7484{
85+ if (rcutils_allocator_is_valid (& rcutils_override_default_allocator )) {
86+ return rcutils_override_default_allocator ;
87+ }
88+
7589 static rcutils_allocator_t default_allocator = {
7690 .allocate = __default_allocate ,
7791 .deallocate = __default_deallocate ,
7892 .reallocate = __default_reallocate ,
7993 .zero_allocate = __default_zero_allocate ,
8094 .state = NULL ,
8195 };
96+
8297 return default_allocator ;
8398}
8499
You can’t perform that action at this time.
0 commit comments