void ttt_deinit_io (void) { #if (defined __unix__ || defined __BEOS__) && !defined __MSDOS__ deinit_conio (); #endif end_port (); deinit_port (); }
static struct snobj *init_port(struct port *p, struct snobj *conf) { struct vport_priv *priv = get_port_priv(p); int container_pid = 0; int cpu; int rxq; int ret; if (strlen(p->name) >= IFNAMSIZ) return snobj_err(EINVAL, "Linux interface name should be " \ "shorter than %d characters", IFNAMSIZ); if (snobj_eval_exists(conf, "docker")) { struct snobj *err = docker_container_pid( snobj_eval_str(conf, "docker"), &container_pid); if (err) return err; } priv->fd = open("/dev/softnic", O_RDONLY); if (priv->fd == -1) return snobj_err(ENODEV, "the kernel module is not loaded"); priv->bar = alloc_bar(p, container_pid); ret = ioctl(priv->fd, SN_IOC_CREATE_HOSTNIC, rte_malloc_virt2phy(priv->bar)); if (ret < 0) { close(priv->fd); return snobj_errno_details(-ret, snobj_str("SN_IOC_CREATE_HOSTNIC failure")); } if (snobj_eval_exists(conf, "ip_addr")) { struct snobj *err = set_ip_addr(p, container_pid, snobj_eval(conf, "ip_addr")); if (err) { deinit_port(p); return err; } } for (cpu = 0; cpu < SN_MAX_CPU; cpu++) priv->map.cpu_to_txq[cpu] = cpu % p->num_queues[PACKET_DIR_INC]; cpu = 0; for (rxq = 0; rxq < p->num_queues[PACKET_DIR_OUT]; rxq++) { while (is_worker_core(cpu)) cpu = (cpu + 1) % sysconf(_SC_NPROCESSORS_ONLN); priv->map.rxq_to_cpu[rxq] = cpu; cpu = (cpu + 1) % sysconf(_SC_NPROCESSORS_ONLN); } ret = ioctl(priv->fd, SN_IOC_SET_QUEUE_MAPPING, &priv->map); if (ret < 0) perror("SN_IOC_SET_QUEUE_MAPPING"); return NULL; }
int handle_menu(RESULT svar) { if(svar.data[SVAR_OBJECT_MENU_ROW]!=FAIL) objc_change(menu_tree,svar.data[SVAR_OBJECT_MENU_ROW],0,0,0,0,0,0,O_REDRAW); switch(svar.data[SVAR_OBJECT]) { case MENU_INFO: menu_icheck(menu_tree,MENU_INFO,TRUE); menu_ienable(menu_tree,MENU_INFO,FALSE); open_dialog(&info_win,NULL); break; case MENU_FILE_DISABL: deinit_port(); break; case MENU_FILE_ENABLE: config->disabled=FALSE; init_port(); break; case MENU_LIST_OWIND: open_listwin(); break; case MENU_LIST_SAVE: if(!tempvar.accessory) { save_list(); tempvar.list_change=FALSE; } break; case MENU_LIST_EXPORT: menu_icheck(menu_tree,MENU_LIST_EXPORT,TRUE); menu_ienable(menu_tree,MENU_LIST_EXPORT,FALSE); open_exportwin(TRUE); case MENU_SAVE_SETUP: save_datafile(TRUE,CONFIGFILE,(char *)config,sizeof(CONFIG)); tempvar.conf_change=FALSE; break; case MENU_SETUP: menu_icheck(menu_tree,MENU_SETUP,TRUE); menu_ienable(menu_tree,MENU_SETUP,FALSE); set_timer(FAIL); open_setupwin(); break; case MENU_LOG_VIEW: open_logwin(); break; case MENU_QUIT: if(config->save_exit) { save_datafile(TRUE,CONFIGFILE,(char *)config,sizeof(CONFIG)); if(!tempvar.accessory) { save_list(); tempvar.list_change=FALSE; } tempvar.conf_change=FALSE; } if(tempvar.conf_change) if(alertbox(1,alerts[Q_SAVE_CONF_EXIT])==1) save_datafile(TRUE,CONFIGFILE,(char *)config,sizeof(CONFIG)); if((tempvar.list_change)&&(!tempvar.accessory)) if(alertbox(1,alerts[Q_SAVE_LIST_EXIT])==1) save_list(); return(FALSE); break; case MENU_HELP_INDEX: { long stguide_id; char temprow[MAXSTRING]; stguide_id=appl_find("ST-GUIDE"); strcpy(temprow,"*:\\firecall.hyp"); if(stguide_id!=FAIL) { svar.data[0]=(short)0x4711; svar.data[1]=(short)ap_id; svar.data[2]=(short)0; svar.data[3]=(short)temprow >> 16; svar.data[4]=(short)temprow & 0xffff; svar.data[5]=(short)0; svar.data[6]=(short)0; svar.data[7]=(short)0; appl_write(stguide_id,16,svar.data); } break; } default: break; }