Declare variables as external 89/4389/4
authorDamjan Marion <damarion@cisco.com>
Mon, 19 Dec 2016 15:28:36 +0000 (16:28 +0100)
committerDamjan Marion <dmarion.lists@gmail.com>
Tue, 20 Dec 2016 10:23:44 +0000 (10:23 +0000)
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:
vlib-api/vlibapi/api.h
vlib-api/vlibsocket/api.h
vlib/vlib/buffer_funcs.h
vlib/vlib/main.c
vlib/vlib/main.h
vlib/vlib/threads.c
vlib/vlib/threads.h
vlib/vlib/unix/plugin.h
vlib/vlib/unix/unix.h
vpp-api-test/vat/main.c
vpp-api/python/pneum/test_pneum.c
vpp/vpp-api/summary_stats_client.c
vpp/vpp-api/test_client.c
vpp/vpp-api/test_ha.c

index 5245252..6274533 100644 (file)
@@ -190,7 +190,7 @@ typedef struct
   char *root_path;
 } api_main_t;
 
-api_main_t api_main;
+extern api_main_t api_main;
 
 typedef struct
 {
index 3a86bd0..79c0d08 100644 (file)
@@ -46,7 +46,7 @@ typedef struct
   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,
index cfe568e..75716ec 100644 (file)
@@ -676,9 +676,9 @@ vlib_buffer_init_two_for_free_list (vlib_buffer_t * _dst0,
 }
 
 #if CLIB_DEBUG > 0
-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
index fc294a7..6c6cad9 100644 (file)
@@ -50,6 +50,8 @@ CJ_GLOBAL_LOG_PROTOTYPE;
    speculative vector enqueues which overflow vector data in next frame. */
 #define VLIB_FRAME_SIZE_ALLOC (VLIB_FRAME_SIZE + 4)
 
+u32 wraps;
+
 always_inline u32
 vlib_frame_bytes (u32 n_scalar_bytes, u32 n_vector_bytes)
 {
index 579ef09..d9ac144 100644 (file)
@@ -176,7 +176,7 @@ typedef struct vlib_main_t
 } 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)
@@ -278,7 +278,7 @@ vlib_last_vector_length_per_node (vlib_main_t * vm)
   return n == 0 ? 0 : (f64) v / (f64) n;
 }
 
-u32 wraps;
+extern u32 wraps;
 
 always_inline void
 vlib_increment_main_loop_counter (vlib_main_t * vm)
@@ -315,7 +315,7 @@ always_inline void vlib_set_queue_signal_callback
 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));
index fb84c67..27b622f 100644 (file)
@@ -51,6 +51,7 @@ vl (void *p)
   return vec_len (p);
 }
 
+vlib_worker_thread_t *vlib_worker_threads;
 vlib_thread_main_t vlib_thread_main;
 
 uword
index fd09c31..34ab5be 100644 (file)
@@ -18,7 +18,7 @@
 #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);
 
@@ -108,7 +108,7 @@ typedef struct
   pthread_t thread_id;
 } vlib_worker_thread_t;
 
-vlib_worker_thread_t *vlib_worker_threads;
+extern vlib_worker_thread_t *vlib_worker_threads;
 
 typedef struct
 {
@@ -322,7 +322,7 @@ typedef struct
 
 } vlib_thread_main_t;
 
-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;             \
index e905263..c17053b 100644 (file)
@@ -82,7 +82,7 @@ typedef struct
   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);
index 69688a6..ea0d417 100644 (file)
@@ -203,7 +203,7 @@ vlib_unix_get_main (void)
 }
 
 /* thread stack array; vec_len = max number of threads */
-u8 **vlib_thread_stacks;
+extern u8 **vlib_thread_stacks;
 
 /* utils */
 
index 8ba60e2..76c4d3f 100644 (file)
@@ -33,6 +33,8 @@ connect_to_vpe (char *name)
   return 0;
 }
 
+vlib_main_t vlib_global_main;
+vlib_main_t **vlib_mains;
 void
 vlib_cli_output (struct vlib_main_t *vm, char *fmt, ...)
 {
index 62f4a74..e873114 100644 (file)
 #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;
index cbfef48..54e1666 100644 (file)
@@ -90,6 +90,9 @@ test_main_t test_main;
 /*
  * 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, ...)
 {
index df608d4..e0d7054 100644 (file)
@@ -87,6 +87,9 @@ test_main_t test_main;
 /*
  * 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, ...)
 {
index 6353396..91364d8 100644 (file)
@@ -95,6 +95,9 @@ static void vl_api_control_ping_reply_t_handler
   tm->pings_replied++;
 }
 
+vlib_main_t vlib_global_main;
+vlib_main_t **vlib_mains;
+
 void
 vlib_cli_output (struct vlib_main_t *vm, char *fmt, ...)
 {