uint32_t ruc_init(uint32_t test,uint16_t dbg_port,uint16_t rozofsmount_instance) { int ret; uint32_t mx_tcp_client = 2; uint32_t mx_tcp_server = 2; uint32_t mx_tcp_server_cnx = 10; uint32_t mx_af_unix_ctx = ROZO_AFUNIX_CTX_STORCLI; uint32_t mx_lbg_north_ctx = 256; //#warning TCP configuration ressources is hardcoded!! /* ** init of the system ticker */ rozofs_init_ticker(); /* ** trace buffer initialization */ ruc_traceBufInit(); #if 1 /* ** Not needed since there is already done ** by libUtil */ /* catch the sigpipe signal for socket ** connections with RELC(s) in this way when a RELC ** connection breaks an errno is set on a recv or send ** socket primitive */ struct sigaction sigAction; sigAction.sa_flags=SA_RESTART; sigAction.sa_handler = SIG_IGN; /* Mask SIGPIPE */ if(sigaction (SIGPIPE, &sigAction, NULL) < 0) { exit(0); } #if 0 sigAction.sa_flags=SA_RESTART; sigAction.sa_handler = hand; /* */ if(sigaction (SIGUSR1, &sigAction, NULL) < 0) { exit(0); } #endif #endif /* ** initialize the socket controller: ** 4 connections per Relc and 32 ** for: NPS, Timer, Debug, etc... */ //#warning set the number of contexts for socketCtrl to 1024 ret = ruc_sockctl_init(ROZO_SOCKCTRL_CTX_STORCLI); if (ret != RUC_OK) { fatal( " socket controller init failed" ); } /* ** Timer management init */ ruc_timer_moduleInit(FALSE); while(1) { /* **-------------------------------------- ** configure the number of TCP connection ** supported **-------------------------------------- ** */ ret = uma_tcp_init(mx_tcp_client+mx_tcp_server+mx_tcp_server_cnx); if (ret != RUC_OK) break; /* **-------------------------------------- ** configure the number of TCP server ** context supported **-------------------------------------- ** */ ret = ruc_tcp_server_init(mx_tcp_server); if (ret != RUC_OK) break; #if 0 /* **-------------------------------------- ** configure the number of TCP client ** context supported **-------------------------------------- ** */ ret = ruc_tcp_clientinit(mx_tcp_client); if (ret != RUC_OK) break; #endif /* **-------------------------------------- ** configure the number of AF_UNIX ** context supported **-------------------------------------- ** */ ret = af_unix_module_init(mx_af_unix_ctx, 32,1024*32, // xmit(count,size) 32,1024*32 // recv(count,size) ); if (ret != RUC_OK) break; /* **-------------------------------------- ** configure the number of Load Balancer ** contexts supported **-------------------------------------- ** */ /* ** Check if the number of configured LBG is compatible with the lbg cnx supervision table */ if ( STORCLI_MAX_LBG < mx_lbg_north_ctx) { fatal("STORCLI_MAX_LBG constant need at least to be %d",mx_lbg_north_ctx); } ret = north_lbg_module_init(mx_lbg_north_ctx); if (ret != RUC_OK) break; /* ** init of the storage client structure */ ret = rozofs_storcli_module_init(); if (ret != RUC_OK) break; ret = storcli_sup_moduleInit(); if (ret != RUC_OK) break; ret = rozofs_tx_module_init(STORCLI_SOUTH_TX_CNT, // transactions count STORCLI_CNF_NO_BUF_CNT,STORCLI_CNF_NO_BUF_SZ, // xmit small [count,size] STORCLI_CNF_NO_BUF_CNT,STORCLI_CNF_NO_BUF_SZ, // xmit large [count,size] STORCLI_CNF_NO_BUF_CNT,STORCLI_CNF_NO_BUF_SZ, // recv small [count,size] STORCLI_CNF_NO_BUF_CNT,STORCLI_CNF_NO_BUF_SZ); // recv large [count,size]; break; } /* ** internal debug init */ //ruc_debug_init(); /* **-------------------------------------- ** D E B U G M O D U L E **-------------------------------------- */ uma_dbg_init(10,INADDR_ANY,dbg_port); //#warning Start of specific application initialization code return ret; }
uint32_t ruc_init(uint32_t test,uint16_t dbg_port,uint16_t exportd_instance) { int ret; uint32_t mx_tcp_client = 2; uint32_t mx_tcp_server = 2; uint32_t mx_tcp_server_cnx = 10; uint32_t mx_af_unix_ctx = 512; uint32_t mx_lbg_north_ctx = 64; //#warning TCP configuration ressources is hardcoded!! /* ** init of the system ticker */ rozofs_init_ticker(); /* ** trace buffer initialization */ ruc_traceBufInit(); #if 1 /* ** Not needed since there is already done ** by libUtil */ /* catch the sigpipe signal for socket ** connections with RELC(s) in this way when a RELC ** connection breaks an errno is set on a recv or send ** socket primitive */ struct sigaction sigAction; sigAction.sa_flags=SA_RESTART; sigAction.sa_handler = SIG_IGN; /* Mask SIGPIPE */ if(sigaction (SIGPIPE, &sigAction, NULL) < 0) { exit(0); } #if 0 sigAction.sa_flags=SA_RESTART; sigAction.sa_handler = hand; /* */ if(sigaction (SIGUSR1, &sigAction, NULL) < 0) { exit(0); } #endif #endif /* ** initialize the socket controller: ** for: NPS, Timer, Debug, etc... */ //#warning set the number of contexts for socketCtrl to 256 ret = ruc_sockctl_init(256); if (ret != RUC_OK) { fatal( " socket controller init failed" ); } /* ** Timer management init */ ruc_timer_moduleInit(FALSE); while(1) { /* **-------------------------------------- ** configure the number of TCP connection ** supported **-------------------------------------- ** */ ret = uma_tcp_init(mx_tcp_client+mx_tcp_server+mx_tcp_server_cnx); if (ret != RUC_OK) break; /* **-------------------------------------- ** configure the number of TCP server ** context supported **-------------------------------------- ** */ ret = ruc_tcp_server_init(mx_tcp_server); if (ret != RUC_OK) break; #if 0 /* **-------------------------------------- ** configure the number of TCP client ** context supported **-------------------------------------- ** */ ret = ruc_tcp_clientinit(mx_tcp_client); if (ret != RUC_OK) break; #endif /* **-------------------------------------- ** configure the number of AF_UNIX ** context supported **-------------------------------------- ** */ ret = af_unix_module_init(mx_af_unix_ctx, 32,1024*32, // xmit(count,size) 32,1024*32 // recv(count,size) ); if (ret != RUC_OK) break; /* **-------------------------------------- ** configure the number of Load Balancer ** contexts supported **-------------------------------------- ** */ ret = north_lbg_module_init(mx_lbg_north_ctx); if (ret != RUC_OK) break; /* ** init of the rpc client module */ ret = rozofs_rpc_module_init(); if (ret != RUC_OK) break; /* ** Init of the module that handles the configuration channel with main process of exportd */ ret = expgwc_int_chan_moduleInit(); if (ret != RUC_OK) break; ret = rozofs_tx_module_init(EXPORTNB_SOUTH_TX_CNT, // transactions count EXPORTNB_SOUTH_TX_RECV_BUF_CNT,EXPORTNB_SOUTH_TX_RECV_BUF_SZ, // xmit small [count,size] EXPORTNB_SOUTH_TX_RECV_BUF_CNT,EXPORTNB_SOUTH_TX_RECV_BUF_SZ, // xmit large [count,size] EXPORTNB_SOUTH_TX_RECV_BUF_CNT,EXPORTNB_SOUTH_TX_RECV_BUF_SZ, // recv small [count,size] EXPORTNB_SOUTH_TX_RECV_BUF_CNT,EXPORTNB_SOUTH_TX_RECV_BUF_SZ); // recv large [count,size]; break; } /* ** internal debug init */ //ruc_debug_init(); /* **-------------------------------------- ** D E B U G M O D U L E **-------------------------------------- */ uma_dbg_init(10,INADDR_ANY,dbg_port); { char name[32]; sprintf(name, "exportd %d ", exportd_instance); uma_dbg_set_name(name); } //#warning Start of specific application initialization code return ret; }