non-external declarations in header files are generating
multiple empty definitions of the same symbol.
Change-Id: I7f3933404f79d08579468d0052c106731b57507c
Signed-off-by: Damjan Marion <damarion@cisco.com>
14 files changed:
char *root_path;
} api_main_t;
char *root_path;
} api_main_t;
+extern api_main_t api_main;
i8 *input_buffer;
} socket_main_t;
i8 *input_buffer;
} socket_main_t;
-socket_main_t socket_main;
+extern socket_main_t socket_main;
void socksvr_add_pending_output (struct unix_file *uf,
struct vl_api_registration_ *cf,
void socksvr_add_pending_output (struct unix_file *uf,
struct vl_api_registration_ *cf,
-u32 *vlib_buffer_state_validation_lock;
-uword *vlib_buffer_state_validation_hash;
-void *vlib_buffer_state_heap;
+extern u32 *vlib_buffer_state_validation_lock;
+extern uword *vlib_buffer_state_validation_hash;
+extern void *vlib_buffer_state_heap;
#endif
static inline void
#endif
static inline void
speculative vector enqueues which overflow vector data in next frame. */
#define VLIB_FRAME_SIZE_ALLOC (VLIB_FRAME_SIZE + 4)
speculative vector enqueues which overflow vector data in next frame. */
#define VLIB_FRAME_SIZE_ALLOC (VLIB_FRAME_SIZE + 4)
always_inline u32
vlib_frame_bytes (u32 n_scalar_bytes, u32 n_vector_bytes)
{
always_inline u32
vlib_frame_bytes (u32 n_scalar_bytes, u32 n_vector_bytes)
{
} vlib_main_t;
/* Global main structure. */
} vlib_main_t;
/* Global main structure. */
-vlib_main_t vlib_global_main;
+extern vlib_main_t vlib_global_main;
always_inline f64
vlib_time_now (vlib_main_t * vm)
always_inline f64
vlib_time_now (vlib_main_t * vm)
return n == 0 ? 0 : (f64) v / (f64) n;
}
return n == 0 ? 0 : (f64) v / (f64) n;
}
always_inline void
vlib_increment_main_loop_counter (vlib_main_t * vm)
always_inline void
vlib_increment_main_loop_counter (vlib_main_t * vm)
int vlib_main (vlib_main_t * vm, unformat_input_t * input);
/* Thread stacks, for os_get_cpu_number */
int vlib_main (vlib_main_t * vm, unformat_input_t * input);
/* Thread stacks, for os_get_cpu_number */
-u8 **vlib_thread_stacks;
+extern u8 **vlib_thread_stacks;
/* Number of thread stacks that the application needs */
u32 vlib_app_num_thread_stacks_needed (void) __attribute__ ((weak));
/* Number of thread stacks that the application needs */
u32 vlib_app_num_thread_stacks_needed (void) __attribute__ ((weak));
+vlib_worker_thread_t *vlib_worker_threads;
vlib_thread_main_t vlib_thread_main;
uword
vlib_thread_main_t vlib_thread_main;
uword
#include <vlib/main.h>
#include <linux/sched.h>
#include <vlib/main.h>
#include <linux/sched.h>
-vlib_main_t **vlib_mains;
+extern vlib_main_t **vlib_mains;
void vlib_set_thread_name (char *name);
void vlib_set_thread_name (char *name);
pthread_t thread_id;
} vlib_worker_thread_t;
pthread_t thread_id;
} vlib_worker_thread_t;
-vlib_worker_thread_t *vlib_worker_threads;
+extern vlib_worker_thread_t *vlib_worker_threads;
-vlib_thread_main_t vlib_thread_main;
+extern vlib_thread_main_t vlib_thread_main;
#define VLIB_REGISTER_THREAD(x,...) \
__VA_ARGS__ vlib_thread_registration_t x; \
#define VLIB_REGISTER_THREAD(x,...) \
__VA_ARGS__ vlib_thread_registration_t x; \
vlib_main_t *vlib_main;
} plugin_main_t;
vlib_main_t *vlib_main;
} plugin_main_t;
-plugin_main_t vlib_plugin_main;
+extern plugin_main_t vlib_plugin_main;
int vlib_plugin_early_init (vlib_main_t * vm);
int vlib_load_new_plugins (plugin_main_t * pm, int from_early_init);
int vlib_plugin_early_init (vlib_main_t * vm);
int vlib_load_new_plugins (plugin_main_t * pm, int from_early_init);
}
/* thread stack array; vec_len = max number of threads */
}
/* thread stack array; vec_len = max number of threads */
-u8 **vlib_thread_stacks;
+extern u8 **vlib_thread_stacks;
+vlib_main_t vlib_global_main;
+vlib_main_t **vlib_mains;
void
vlib_cli_output (struct vlib_main_t *vm, char *fmt, ...)
{
void
vlib_cli_output (struct vlib_main_t *vm, char *fmt, ...)
{
#include <vpp-api/vpe_all_api_h.h>
#undef vl_typedefs
#include <vpp-api/vpe_all_api_h.h>
#undef vl_typedefs
+/* we are not linking with vlib */
+vlib_main_t vlib_global_main;
+vlib_main_t **vlib_mains;
+
volatile int sigterm_received = 0;
volatile u32 result_ready;
volatile u16 result_msg_id;
volatile int sigterm_received = 0;
volatile u32 result_ready;
volatile u16 result_msg_id;
/*
* Satisfy external references when -lvlib is not available.
*/
/*
* Satisfy external references when -lvlib is not available.
*/
+vlib_main_t vlib_global_main;
+vlib_main_t **vlib_mains;
+
void
vlib_cli_output (struct vlib_main_t *vm, char *fmt, ...)
{
void
vlib_cli_output (struct vlib_main_t *vm, char *fmt, ...)
{
/*
* Satisfy external references when -lvlib is not available.
*/
/*
* Satisfy external references when -lvlib is not available.
*/
+vlib_main_t vlib_global_main;
+vlib_main_t **vlib_mains;
+
void
vlib_cli_output (struct vlib_main_t *vm, char *fmt, ...)
{
void
vlib_cli_output (struct vlib_main_t *vm, char *fmt, ...)
{
+vlib_main_t vlib_global_main;
+vlib_main_t **vlib_mains;
+
void
vlib_cli_output (struct vlib_main_t *vm, char *fmt, ...)
{
void
vlib_cli_output (struct vlib_main_t *vm, char *fmt, ...)
{