diff options
author | Ole Troan <ot@cisco.com> | 2020-09-28 16:15:18 +0200 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2020-09-28 16:17:25 +0000 |
commit | f68fccfe7e188fec2c9f91da38ca9acf6f67d811 (patch) | |
tree | 7b0110e904980043cb9cc9772eb5fdbb7f7c8d71 /src/vpp-api/client/client.c | |
parent | 2c714a0cec9de07816a5397a4a6d69a103378731 (diff) |
api: remove clib_mem_init from vppapiclient contructor
Having the constructor in the vppapiclient library led to
conflicts with applications wanting to allocate their own heap.
Note: Change of behaviour, applications that do not use a CLIB
heap must now call vac_mem_init() before using any functions from
vppapiclient.
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: Ib155a54579ea5a0dbc26cb4b6daca1274e1dfdfa
Diffstat (limited to 'src/vpp-api/client/client.c')
-rw-r--r-- | src/vpp-api/client/client.c | 40 |
1 files changed, 16 insertions, 24 deletions
diff --git a/src/vpp-api/client/client.c b/src/vpp-api/client/client.c index 5dcca22694d..0d7b1dcafc8 100644 --- a/src/vpp-api/client/client.c +++ b/src/vpp-api/client/client.c @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include <assert.h> #include <stdio.h> #include <stdlib.h> #include <stddef.h> @@ -78,29 +79,6 @@ u16 read_timeout = 0; bool rx_is_running = false; bool timeout_thread_cancelled = false; -/* Set to true to enable memory tracing */ -bool mem_trace = false; - -__attribute__((constructor)) -static void -vac_client_constructor (void) -{ - clib_mem_init (0, 1 << 30); - if (mem_trace) - clib_mem_trace (1); -} - -__attribute__((destructor)) -static void -vac_client_destructor (void) -{ - if (mem_trace) - fformat(stderr, "TRACE: %s", - format (0, "%U\n", - format_mheap, clib_mem_get_heap (), 1)); -} - - static void init (void) { @@ -308,12 +286,13 @@ vac_msg_table_size(void) int vac_connect (char * name, char * chroot_prefix, vac_callback_t cb, - int rx_qlen) + int rx_qlen) { rx_thread_done = false; int rv = 0; vac_main_t *pm = &vac_main; + assert (clib_mem_get_heap ()); init(); if (chroot_prefix != NULL) vl_set_memory_root_path (chroot_prefix); @@ -575,5 +554,18 @@ vac_msg_table_max_index(void) void vac_set_error_handler (vac_error_callback_t cb) { + assert (clib_mem_get_heap ()); if (cb) clib_error_register_handler (cb, 0); } + +/* + * Required if application doesn't use a VPP heap. + */ +void +vac_mem_init (size_t size) +{ + if (size == 0) + clib_mem_init (0, 1 << 30); // default + else + clib_mem_init (0, size); +} |