char *root_path;
} api_main_t;
-api_main_t api_main;
+extern api_main_t api_main;
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,
}
#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
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)
{
} 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)
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)
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));
return vec_len (p);
}
+vlib_worker_thread_t *vlib_worker_threads;
vlib_thread_main_t vlib_thread_main;
uword
#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);
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
{
} 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; \
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);
}
/* thread stack array; vec_len = max number of threads */
-u8 **vlib_thread_stacks;
+extern u8 **vlib_thread_stacks;
/* utils */
return 0;
}
+vlib_main_t vlib_global_main;
+vlib_main_t **vlib_mains;
void
vlib_cli_output (struct vlib_main_t *vm, char *fmt, ...)
{
#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;
/*
* 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, ...)
{
/*
* 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, ...)
{
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, ...)
{