Пример #1
0
void
ttt_deinit_io (void)
{
#if     (defined __unix__ || defined __BEOS__) && !defined __MSDOS__
  deinit_conio ();
#endif

  end_port ();
  deinit_port ();
}
Пример #2
0
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;
}
Пример #3
0
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;
  }