52 int main (
int argc,
char * argv[])
57 uword main_heap_size = (1ULL << 30);
62 #if __x86_64__ && !defined(__clang__) 63 __builtin_cpu_init ();
64 const char * msg =
"ERROR: This binary requires CPU with %s extensions.\n";
66 if (!__builtin_cpu_supports(a)) \ 68 fprintf(stderr, msg, b); \ 97 if ((argc == 3) && !strncmp(argv[1],
"-c", 2))
102 char ** argv_ =
NULL;
106 fp = fopen (argv[2],
"r");
109 fprintf(stderr,
"open configuration file '%s' failed\n", argv[2]);
112 argv_ = calloc(1,
sizeof(
char *));
115 arg = strndup(argv[0], 1024);
121 if (fgets(inbuf, 4096, fp) == 0)
123 p = strtok(inbuf,
" \t\n");
128 char ** tmp = realloc(argv_, argc_ *
sizeof(
char *));
132 arg = strndup(p, 1024);
135 argv_[argc_ - 1] = arg;
136 p = strtok(
NULL,
" \t\n");
142 char ** tmp = realloc(argv_, (argc_ + 1) *
sizeof(
char *));
159 for (i = 1; i < (argc-1); i++) {
160 if (!strncmp (argv[i],
"plugin_path", 11)) {
163 }
else if (!strncmp (argv[i],
"heapsize", 8)) {
164 sizep = (
u8 *) argv[i+1];
166 while (*sizep >=
'0' && *sizep <=
'9') {
168 size += *sizep++ -
'0';
173 "warning: heapsize parse error '%s', use default %lld\n",
174 argv[i], (
long long int) main_heap_size);
178 main_heap_size =
size;
180 if (*sizep ==
'g' || *sizep ==
'G')
181 main_heap_size <<= 30;
182 else if (*sizep ==
'm' || *sizep ==
'M')
183 main_heap_size <<= 20;
207 int rv __attribute__((unused)) =
208 write (2,
"Main heap allocation failure!\r\n", 31);
240 if (
unformat (input,
"%s", &junk)) {
266 static int recursion_block;
312 u64 * p = (
u64 *)0xdefec8ed;
321 .path =
"test crash",
322 .short_help =
"crash the bus!",
sll srl srl sll sra u16x4 i
void vl_msg_api_barrier_sync(void)
int main(int argc, char *argv[])
#define vlib_mark_init_function_complete(vm, x)
static void dpdk_pmd_constructor_init()
always_inline vlib_main_t * vlib_get_main(void)
void vl_msg_api_set_first_available_msg_id(u16 first_avail)
ethernet_main_t * ethernet_main
ethernet_main_t ethernet_main
vnet_main_t * vnet_get_main(void)
void vl_msg_api_barrier_release(void)
static void vpe_main_init(vlib_main_t *vm)
void vlib_set_get_handoff_structure_cb(void *cb)
void vl_msg_api_post_mortem_dump(void)
void vlib_unix_cli_set_prompt(char *prompt)
Set the CLI prompt.
static clib_error_t * plugin_path_config(vlib_main_t *vm, unformat_input_t *input)
#define VLIB_CONFIG_FUNCTION(x, n,...)
void vhost_user_unmap_all(void)
uword * init_functions_called
void * clib_mem_init(void *heap, uword size)
#define vec_free(V)
Free vector's memory (no header).
vlib_main_t vlib_global_main
#define VLIB_CLI_COMMAND(x,...)
#define hash_create(elts, value_bytes)
void vlib_worker_thread_barrier_sync(vlib_main_t *vm)
u32 vlib_app_num_thread_stacks_needed(void)
void vlib_worker_thread_barrier_release(vlib_main_t *vm)
void * vnet_get_handoff_structure(void)
clib_error_t * unix_physmem_init(vlib_main_t *vm, int physical_memory_required)
int vlib_unix_main(int argc, char *argv[])
static clib_error_t * heapsize_config(vlib_main_t *vm, unformat_input_t *input)
static clib_error_t * srp_init(vlib_main_t *vm)
static clib_error_t * test_crash_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
#define clib_error_return(e, args...)