diff options
author | Dave Barach <dave@barachs.net> | 2018-06-14 09:18:21 -0400 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2018-06-14 18:52:47 +0000 |
commit | 1f806587d8e1d94ee7630cee134fbaae2de2f31e (patch) | |
tree | fb46e53861b5eebbf1333f85ded79c0558802bf3 /src/vlib | |
parent | abcddcbcabb180595ec8041ac7cf07249d896dc4 (diff) |
Use __attribute__((weak)) references where necessary
It should be possible to use vlib without the vlibmemory library, etc.
Change-Id: Ic2316b93d7dbb728fb4ff42a3ca8b0d747c9425e
Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'src/vlib')
-rw-r--r-- | src/vlib/main.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/vlib/main.c b/src/vlib/main.c index e4c4438b5aa..f9b38b27061 100644 --- a/src/vlib/main.c +++ b/src/vlib/main.c @@ -1678,6 +1678,18 @@ dummy_queue_signal_callback (vlib_main_t * vm) { } +#define foreach_weak_reference_stub \ +_(vlib_map_stat_segment_init) \ +_(vpe_api_init) \ +_(vlibmemory_init) \ +_(map_api_segment_init) + +#define _(name) \ +clib_error_t *name (vlib_main_t *vm) __attribute__((weak)); \ +clib_error_t *name (vlib_main_t *vm) { return 0; } +foreach_weak_reference_stub; +#undef _ + /* Main function. */ int vlib_main (vlib_main_t * volatile vm, unformat_input_t * input) @@ -1717,7 +1729,7 @@ vlib_main (vlib_main_t * volatile vm, unformat_input_t * input) goto done; } - if ((error = vlib_call_init_function (vm, map_stat_segment_init))) + if ((error = vlib_map_stat_segment_init (vm))) { clib_error_report (error); goto done; @@ -1742,19 +1754,20 @@ vlib_main (vlib_main_t * volatile vm, unformat_input_t * input) goto done; } - if ((error = vlib_call_init_function (vm, vpe_api_init))) + /* Direct call / weak reference, for vlib standalone use-cases */ + if ((error = vpe_api_init (vm))) { clib_error_report (error); goto done; } - if ((error = vlib_call_init_function (vm, vlibmemory_init))) + if ((error = vlibmemory_init (vm))) { clib_error_report (error); goto done; } - if ((error = vlib_call_init_function (vm, map_api_segment_init))) + if ((error = map_api_segment_init (vm))) { clib_error_report (error); goto done; |