void wr_logo(int row, int col, const char * appname) { int i; static const char * logo[] = { "# #", "# # # # # # #####", "# # # # ## # # #", "# # # # # # # # #", "# # # # # # # # #", "# # # # # ## # #", " ## ## # # # #####", "", "######", "# # # # # ###### #####", "# # # # # # # #", "###### # # # ##### # #", "# # # # # # #####", "# # # # # # # #", "# # # ## ###### # #", "", " #####", "# # # # #### ##### ###### # # ####", "# # # # # # ## ## #", " ##### # #### # ##### # ## # ####", " # # # # # # # #", "# # # # # # # # # # #", " ##### # #### # ###### # # ####", NULL }; wr_scrn_cls(); wr_scrn_color(GREEN, NO_CHANGE, BOLD); for(i=0, row++; logo[i] != NULL; i++) wr_scrn_printf(row++, 7, "%s", logo[i]); wr_scrn_color(MAGENTA, NO_CHANGE, OFF); wr_scrn_printf(++row, col, "%s", COPYRIGHT_MSG); wr_scrn_color(BLUE, NO_CHANGE, BOLD); wr_scrn_printf(++row, col+6, ">>> %s is %s <<<", appname, POWERED_BY_DPDK); wr_scrn_color(BLACK, NO_CHANGE, OFF); wr_scrn_pos(++row, 1); rte_delay_ms(1500); wr_scrn_cls(); wr_scrn_pos(100, 1); }
void wr_splash_screen(int row, int col, const char * appname, const char * created_by) { int i; row = 3; wr_scrn_color(BLUE, NO_CHANGE, OFF); wr_scrn_printf(row++, col, "%s", COPYRIGHT_MSG); wr_scrn_color(GREEN, NO_CHANGE, BOLD); for(i=0, row++; wr_copyright[i] != NULL; i++) wr_scrn_printf(row++, 7, "%s", wr_copyright[i]); wr_scrn_color(BLUE, NO_CHANGE, BOLD); wr_scrn_printf(row++, col, "%s created by %s -- >>> %s <<<", appname, created_by, POWERED_BY_DPDK); wr_scrn_color(BLACK, NO_CHANGE, OFF); wr_scrn_pos(++row, 1); rte_delay_ms(1500); wr_scrn_cls(); wr_scrn_pos(100, 1); }
int main(int argc, char **argv) { uint32_t i; int32_t ret; printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); fflush(stdout); wr_scrn_setw(1);/* Reset the window size */ /* call before the rte_eal_init() */ (void)rte_set_application_usage_hook(pktgen_usage); memset(&pktgen, 0, sizeof(pktgen)); pktgen.flags = PRINT_LABELS_FLAG; pktgen.ident = 0x1234; pktgen.nb_rxd = DEFAULT_RX_DESC; pktgen.nb_txd = DEFAULT_TX_DESC; pktgen.nb_ports_per_page = DEFAULT_PORTS_PER_PAGE; if ( (pktgen.l2p = wr_l2p_create()) == NULL) pktgen_log_panic("Unable to create l2p"); pktgen.portdesc_cnt = wr_get_portdesc(pktgen.portlist, pktgen.portdesc, RTE_MAX_ETHPORTS, 0); /* Initialize the screen and logging */ pktgen_init_log(); pktgen_cpu_init(); /* initialize EAL */ ret = rte_eal_init(argc, argv); if (ret < 0) return -1; argc -= ret; argv += ret; pktgen.hz = rte_get_timer_hz(); /* Get the starting HZ value. */ /* parse application arguments (after the EAL ones) */ ret = pktgen_parse_args(argc, argv); if (ret < 0) return -1; pktgen_init_screen((pktgen.flags & ENABLE_THEME_FLAG) ? THEME_ON : THEME_OFF); rte_delay_ms(100); /* Wait a bit for things to settle. */ wr_print_copyright(PKTGEN_APP_NAME, PKTGEN_CREATED_BY); lua_newlib_add(_lua_openlib); /* Open the Lua script handler. */ if ( (pktgen.L = lua_create_instance()) == NULL) { pktgen_log_error("Failed to open Lua pktgen support library"); return -1; } pktgen_log_info(">>> Packet Burst %d, RX Desc %d, TX Desc %d, mbufs/port %d, mbuf cache %d", DEFAULT_PKT_BURST, DEFAULT_RX_DESC, DEFAULT_TX_DESC, MAX_MBUFS_PER_PORT, MBUF_CACHE_SIZE); /* Configure and initialize the ports */ pktgen_config_ports(); pktgen_log_info(""); pktgen_log_info("=== Display processing on lcore %d", rte_lcore_id()); /* launch per-lcore init on every lcore except master and master + 1 lcores */ for (i = 0; i < RTE_MAX_LCORE; i++) { if ( (i == rte_get_master_lcore()) || !rte_lcore_is_enabled(i) ) continue; ret = rte_eal_remote_launch(pktgen_launch_one_lcore, NULL, i); if (ret != 0) pktgen_log_error("Failed to start lcore %d, return %d", i, ret); } rte_delay_ms(1000); /* Wait for the lcores to start up. */ /* Disable printing log messages of level info and below to screen, */ /* erase the screen and start updating the screen again. */ pktgen_log_set_screen_level(LOG_LEVEL_WARNING); wr_scrn_erase(pktgen.scrn->nrows); wr_logo(3, 16, PKTGEN_APP_NAME); wr_splash_screen(3, 16, PKTGEN_APP_NAME, PKTGEN_CREATED_BY); wr_scrn_resume(); pktgen_redisplay(1); rte_timer_setup(); if (pktgen.flags & ENABLE_GUI_FLAG) { if (!wr_scrn_is_paused() ) { wr_scrn_pause(); wr_scrn_cls(); wr_scrn_setw(1); wr_scrn_pos(pktgen.scrn->nrows, 1); } lua_init_socket(pktgen.L, &pktgen.thread, pktgen.hostname, pktgen.socket_port); } pktgen_cmdline_start(); execute_lua_close(pktgen.L); pktgen_stop_running(); wr_scrn_pause(); wr_scrn_setw(1); wr_scrn_printf(100, 1, "\n"); /* Put the cursor on the last row and do a newline. */ /* Wait for all of the cores to stop running and exit. */ rte_eal_mp_wait_lcore(); return 0; }