⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snx.tpl

📁 VRTX 商用嵌入式实时操作系统
💻 TPL
📖 第 1 页 / 共 2 页
字号:
{
	{ "__CLONE__", 0, 0, 0 },
@make_dmodsw_list(@(snx.drvmod.list))
	{ 0, 0, 0, 0 }
};

/*
 * Driver/Module initialization functions called from swk_tcp_init
 */
@make_dmodconf_decl(@(snx.drvmod.list))

struct dmod_conf dmodconf[] =
{
@make_dmodconf_list(@(snx.drvmod.list))
	{ 0 }
};

/*
 * Upper layer initialization functions called from swk_tcp_init
 * once SNX is initialized
 */
@ifelse(@(rpc.enabled),yes,`extern void sys_initialize_rpc();')
@ifelse(@(nfs.enabled),yes,`extern void sys_initialize_nfs();')
@ifelse(@(snx.hook_init),0,,`extern void @(snx.hook_init)();')

struct dmod_conf ulconf[] =
{
@make_dmodconf_list(@(snx.ul.list))
	@ifelse(@(rpc.enabled),yes,`{sys_initialize_rpc},')
	@ifelse(@(nfs.enabled),yes,`{sys_initialize_nfs},')
	@ifelse(@(snx.hook_init),0,,`{@(snx.hook_init)},')
	{ 0 }
};

int	swk_maxmajor = sizeof(dmodsw)/sizeof(struct sdev_tbl) - 2;

/*
 * Network Interface table
 */
struct snx_net_interface snx_interface_table[] = {
@make_interface_list(@(snx.interface.list))
	{ "", NULL, NULL, NULL, 0, 0, 0 }
};

/*
 * SNX devices
 */
@ifelse(@(snx.drvmod.vme.enable),yes,``extern int vme_intr_srv(struct swk_irq_req *); 
extern void vme_logio_snx_hdlr1(), vme_logio_snx_hdlr2(); 
struct vme_logio_dev vme_logio_dev[] = {	
{ ''"@(snx.logio.devname.vme0)"``, vme_logio_snx_hdlr1, { 0, 0, vme_intr_srv } }
};
'')@dnl
@ifelse(@(snx.drvmod.lg.enable),yes,``extern int lg_intr_srv(struct swk_irq_req *);
extern void lg_logio_snx_hdlr1(), lg_logio_snx_hdlr2();
struct  lg_logio_dev lg_logio_dev[] = {
{ ''"@(snx.logio.devname.lg0)"``, lg_logio_snx_hdlr1, { 0, 0, lg_intr_srv } },
{ ''"@(snx.logio.devname.lg1)"``, lg_logio_snx_hdlr2, { 0, 1, lg_intr_srv } }
};
'')@dnl

/*
 * Local host info
 */
unsigned char snx_local_host[HOST_NAME_LEN];
unsigned char x_snx_local_host[HOST_NAME_LEN] = "@(snx.local_host)";
unsigned char snx_domain_name[DOMAIN_NAME_LEN] = "@(snx.domain.name)";

/*
 * Host table (/etc/hosts)
 */
struct snx_host snx_host_table[] = {
	{ "localhost",  "127.0.0.1",    1 },
@make_host_list(@(snx.hosts.list))
	{ "",	"",	0 }
};

/*
 * Name server table (/etc/resolv.conf)
 */
struct snx_nameserv snx_nameservers[] = {
@make_nameservers(@(snx.nameserver.list))
	{ "" }
};

/*
 * Gateway table (/etc/gateways)
 */
struct snx_gw_entry snx_gw_table[] = {
@make_route_list(@(snx.route.list))
	{ 0, 0, 0, 0, 0 }
};

/*
 * RARP parameters
 */
int     snx_rarp_enable = @ifelse(@(snx.rarp.enable),yes,1,0);
int     snx_rarp_timeout = @(snx.rarp.timeout);
int     snx_rarp_retries = @(snx.rarp.retries);

int	swk_tid      = @(snx.swk.tid);		/* Streams server TID */
int	swk_priority = @(snx.swk.priority);	/* Streams server priority */
int	swk_request_weight = @(snx.swk.request_weight);	/* weighted count for message interface */

int	swk_nfile = @(snx.fdtab_size);		/* Max number of files */
dev_t	swk_ftbl[@(snx.fdtab_size)];		/* File table */
int	open_fdtbl[@(snx.fdtab_size)];		

int	swk_sig_tid = @(snx.sig.tid);		/* Signal server TID */
int	swk_sig_prio = @(snx.sig.priority);	/* Signal server PRIO */

extern int sys_sc_tcreates();
int	(*sys_tcreate_fctp)() = @ifelse(@(sys.vrtx32),yes,`@ifelse(@(board.tool.type),ix86,(int (*)())sc_tcreate,sys_sc_tcreates)',(int (*)())sc_tcreate);

/*
 * RPC parameters
 */
@ifelse(@(rpc.enabled),yes,int rpc_pm_priority = @(rpc.pm_priority);)

int sca_lenbad;
int gethostname_first;
int snx_stats_enabled;
int snx_gratuitous_arp_enabled;
int snx_print_mem_err;

/*
 * TFTP parameters
 */
int	max_tftp_clients = @(snx.tftp.max_clients);
char	tftp_homedir[] = "@(snx.tftp.homedir)";

/*
 * TCP (keepalive) configuration parameters
 */
int	tcptv_keep_idle = @(snx.tcp.keepidle);
int	tcptv_keepintvl = @(snx.tcp.keepintvl);
int	tcptv_keepcnt   = @(snx.tcp.keepcnt);
int	tcp_maxrxtshift = @(snx.tcp.maxrxtshift);

/* 
 * IP and LOGIO Interface trace parameters
 */

unsigned char sw_trace_ip_in            = @ifelse(@(snx.trace.ip.in.enabled),yes,TRUE,FALSE) ;
unsigned char sw_trace_ip_out           = @ifelse(@(snx.trace.ip.out.enabled),yes,TRUE,FALSE) ;
unsigned char sw_trace_lgif_in          = @ifelse(@(snx.trace.lgif.in.enabled),yes,TRUE,FALSE) ;
unsigned char sw_trace_lgif_out         = @ifelse(@(snx.trace.lgif.out.enabled),yes,TRUE,FALSE) ;

unsigned char sw_trace_ip_not_for_us_include = @ifelse(@(snx.trace.ip.in.enabled),no,FALSE,@(snx.trace.ip.in.not4us_dgram.included),yes,TRUE,FALSE) ;

unsigned char sw_trace_lgif_not_bound_include = @ifelse(@(snx.trace.lgif.in.enabled),no,FALSE,@(snx.trace.lgif.not_bound.include),yes,TRUE,FALSE) ;

unsigned long counter_trace_ip_in       = 0;
unsigned long counter_trace_ip_out      = 0;
unsigned long counter_trace_lgif_in     = 0;
unsigned long counter_trace_lgif_out    = 0;

unsigned short size_trace_ip_in         = @ifelse(@(snx.trace.ip.in.enabled),yes,`@(snx.trace.ip.in.array_size)',0);
unsigned short size_trace_ip_out        = @ifelse(@(snx.trace.ip.out.enabled),yes,`@(snx.trace.ip.out.array_size)',0);
unsigned short size_trace_lgif_in       = @ifelse(@(snx.trace.lgif.in.enabled),yes,`@(snx.trace.lgif.in.array_size)',0);
unsigned short size_trace_lgif_out      = @ifelse(@(snx.trace.lgif.out.enabled),yes,`@(snx.trace.lgif.out.array_size)',0);


struct struct_trace_ip_in       array_trace_ip_in [@ifelse(@(snx.trace.ip.in.enabled),yes,`@(snx.trace.ip.in.array_size)',1)];
struct struct_trace_ip_out      array_trace_ip_out [@ifelse(@(snx.trace.ip.out.enabled),yes,`@(snx.trace.ip.out.array_size)',1)];
struct struct_trace_lgif_in     array_trace_lgif_in [@ifelse(@(snx.trace.lgif.in.enabled),yes,`@(snx.trace.lgif.in.array_size)',1)];
struct struct_trace_lgif_out    array_trace_lgif_out [@ifelse(@(snx.trace.lgif.out.enabled),yes,`@(snx.trace.lgif.out.array_size)',1)];

@ifelse(@(snx.rtlsnx.enabled),yes,` 
/*
** Load function stubs for rtlsnx. Applications using
** rtlsnx continue to work as it is, w/o linking
** with snx libraries. This function pulls the rtlsnx
** functions into snx image.
*/
snx_app_func_load()
{
        snx_dummy_loadfunc();
} ')


/*
 * SNX initialization
 */
void 
sys_initialize_snx()
{
	int		i, err;
	extern int	swk_main_task();
	extern void	swk_signal_server(),
			swk_tcp_init(),
			swk_timeout_init();
	struct dmod_conf *p;

	/*
	 * global variables
	 */
	gethostname_first = 1;
	sca_lenbad = 0;
	snx_stats_enabled = @(snx.stats.enabled);
	snx_gratuitous_arp_enabled = @(snx.gratuitous_arp.enabled);
	snx_print_mem_err = @(snx.print.memerr);


	/* Initializetion of structures, variables and arrays used for
	   SNX statistics. 
	*/
	snx_init_stats();
	/*
	 * open/close requests to be handle by a separate thread
	 */
        sc_qcreate(swk_ocq_id, swk_ocq_size, &err);
        if (err)
            (*sys_message_handler)(USECONSOLE | VSYSLIBID | FATALTYPE | SYS_ESNXREQ, err); 

@ifelse(@(snx.snmp.enabled),yes,``
	/* Create the event flag used by SMUX peers to synchronize */
	ev_snmpd = sc_fcreate (&err);
	if (err != 0) {
		sys_bsp_abort();
	}
'')@dnl

	if (swk_init_msgqueue() == -1)
            (*sys_message_handler)(USECONSOLE | VSYSLIBID | FATALTYPE | SYS_ESNXMSGQ, NULL); 

	/* Initialize global file table */
	for (i = 0; i < swk_nfile; i++)
	{
		swk_ftbl[i] = NODEV;
		open_fdtbl[i] = 0;
	}
	/* Initialize SwK globol data */
	swk_start();

	/* Initialize global timeout data */
	swk_timeout_init();

	/* swk_main_task() has to run with kernel privileges */
	(*sys_tcreate_fctp)(swk_main_task, swk_tid, swk_priority, &err);
        if (err)
            (*sys_message_handler)(USECONSOLE | VSYSLIBID | FATALTYPE | SYS_ESNXTASK, err); 

	/* The signal server only needs user privileges */
	sc_tcreate(swk_signal_server, swk_sig_tid, swk_sig_prio, &err);
        if (err)
            (*sys_message_handler)(USECONSOLE | VSYSLIBID | FATALTYPE | SYS_ESNXSIGTASK, err); 

	/*
	 * Initialize all Streams modules.
         */ 

	for (p = dmodconf; p->initf; ++p)
       		(void) (*p->initf)();

	/* TCP/IP stack initialization */
	sc_tcreate(swk_tcp_init, 0, 
		   (swk_priority == 255) ? swk_priority : swk_priority + 1,
		   &err);
        if (err)
            (*sys_message_handler)(USECONSOLE | VSYSLIBID | FATALTYPE | SYS_ESNXTCPINIT, err); 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -