int main(int argc, char ** argv) { struct board_cfg * cfg = (struct board_cfg *)(CFG_ADDR); uint8_t addr = 1; int i; if (cfg->magic == CFG_MAGIC) addr = cfg->mstp_addr; else addr = 0; stdio_init(); supervisor_init(); INF("Starting RS485 test"); net_start(addr); net_probe(true); for (i = 0;; ++i) { (void)i; thinkos_sleep(100); net_send(0, "U U U U ", 8); } return 0; }
int user_startup (void) { sys_start (); net_start (); io_start (); pm_start (); return 0; }
//int main(int argc, char *argv[], char *envp[]) int main(int argc, char *argv[]) { puts("Starting morrigan."); unsigned short port = 0; if (1 < argc) { port = (unsigned short) atoi(argv[1]); if (!port) { port = PORT; } printf("Using port: %d.\n", port); } check(SIG_ERR != signal(SIGINT, __stop), "Failed to set signal handler.", ""); check(SIG_ERR != signal(SIGTERM, __stop), "Failed to set signal handler.", ""); srand((unsigned) (time(NULL) ^ _getpid())); l = landscape_load("land.dat", 32, 1.0); check(l, "Failed to load landscape.", ""); check(net_start(port), "Failed to start network interface.", ""); check(server_start(), "Failed to start server.", ""); check(game_start(l, server_get_clients()), "Failed to start game.", ""); do { printf(">"); input = bgets(fgetc, stdin, '\n'); if (NULL == input || 0 == strcmp("exit\n", bdata(input))) { break; } bdestroy(input); input = NULL; } while(true); __stop(0); return EXIT_SUCCESS; error: fprintf(stderr, "Error exit.\n"); __stop(0); return EXIT_FAILURE; }
/* ==============================================================================================*/ int main(int argc, char *argv[]) { log_init(); conf_init(); sys_log(MOD_MAIN, LOG_MSG, "system start!"); com_start(); net_start(); usocket_start(); while (1) { net_auto_find(); sleep(10); } return 1; }
// VPN Client の初期化 void pro100_init_vpn_client(PRO100_CTX *ctx) { // 引数チェック if (ctx == NULL) { return; } if (ctx->vpn_inited) { // すでに初期化されている return; } // VPN Client の初期化 //ctx->vpn_handle = VPN_IPsec_Client_Start((SE_HANDLE)ctx, (SE_HANDLE)ctx, "config.txt"); net_init (ctx->net_handle, ctx, &phys_func, ctx, &virt_func); net_start (ctx->net_handle); ctx->vpn_inited = true; }
// Lua: socket:connect( port, ip ) static int net_socket_connect( lua_State* L ) { const char *mt = "net.socket"; return net_start(L, mt); }
// Lua: server:listen( port, ip ) static int net_server_listen( lua_State* L ) { const char *mt = "net.server"; return net_start(L, mt); }
int main(int argc, char* argv[]) { pid_t pid; parse_args(argc, argv); if (config_init(argv[1]) == -1) { BOOT_LOG(-1, "Failed to Parse File '%s'", argv[1]); } if (config_init("common.conf") == -1) { BOOT_LOG(-1, "Failed to Parse File '%s'", argv[1]); } daemon_start(argc, argv); load_bind_file(); log_init_ex( config_get_strval("log_dir"), config_get_intval("log_level", log_lvl_trace), config_get_intval("log_size", 1<<30), config_get_intval("max_log_files", 0), config_get_strval("log_prefix") , config_get_intval("log_save_next_file_interval_min", 0) ); //Èç¹ûʹÓÃÔà´Ê¼ì²âÂß¼£¬Ôò¿ªÆô¸¸½ø³ÌµÄÔà´Ê¸üÐÂÂß¼. if (config_get_intval("tm_dirty_use_dirty_logical", 1) == 1) { if (tm_dirty_daemon( config_get_strval("tm_dirty_local_dirty_file_path"), config_get_strval("tm_dirty_server_addr"), config_get_intval("tm_dirty_update_cycle", 600), NULL) == -1) { BOOT_LOG(-1, "FAILED TO RUN TM_DIRTY_DAEMON"); } } net_init(MAXFDS, MAXFDS); bind_config_t* bc = get_bind_conf(); //-------------------------------- net_start(config_get_strval("online_ip"), config_get_intval("online_port", 443), bc->configs); //-------------------------------- // bind_config_elem_t* bc_elem; int i = 0; for ( ; i != bc->bind_num; ++i ) { bind_config_elem_t* bc_elem = &(bc->configs[i]); shmq_create(bc_elem); if ( (pid = fork ()) < 0 ) { BOOT_LOG(-1, "fork child process"); } else if (pid > 0) { //parent process close_shmq_pipe(bc, i, 0); do_add_conn(bc_elem->sendq.pipe_handles[0], PIPE_TYPE_FD, 0, bc_elem); //net_start(bc_elem->bind_ip, bc_elem->bind_port, bc_elem); } else { //child process run_worker_process(bc, i, i + 1); } } while (!stop) { net_loop(-1, PAGESIZE, 1); } net_exit(); shmq_destroy(0, bc->bind_num); daemon_stop(); return 0; }
static ct_process_t __local_spawn_cb(ct_handler_t h, ct_process_desc_t ph, int (*cb)(void *), void *arg, bool is_exec) { struct container *ct = cth2ct(h); struct process_desc *p = prh2pr(ph); int ret = -1, pid, aux; struct ct_clone_arg ca; if (ct->state != CT_STOPPED) return ERR_PTR(-LCTERR_BADCTSTATE); ret = fs_mount(ct); if (ret) return ERR_PTR(ret); if ((ct->flags & CT_KILLABLE) && !(ct->nsmask & CLONE_NEWPID)) { if (add_service_controller(ct)) goto err_cg; } ret = cgroups_create(ct); if (ret) goto err_cg; ret = -1; if (pipe(ca.child_wait_pipe)) goto err_pipe; if (pipe(ca.parent_wait_pipe)) goto err_pipe2; ca.cb = cb; ca.arg = arg; ca.ct = ct; ca.p = p; ca.is_exec = is_exec; pid = clone(ct_clone, &ca.stack_ptr, ct->nsmask | SIGCHLD, &ca); if (pid < 0) goto err_clone; ct->p.pid = pid; close(ca.child_wait_pipe[0]); close(ca.parent_wait_pipe[1]); if (ct->nsmask & CLONE_NEWUSER) { if (write_id_mappings(pid, &ct->uid_map, "uid_map")) goto err_net; if (write_id_mappings(pid, &ct->gid_map, "gid_map")) goto err_net; } if (net_start(ct)) goto err_net; spawn_wake_and_close(ca.child_wait_pipe, 0); aux = spawn_wait(ca.parent_wait_pipe); if (aux != 0) { ret = aux; goto err_ch; } aux = spawn_wait_and_close(ca.parent_wait_pipe); if (aux != INT_MIN) { ret = -1; goto err_ch; } ct->state = CT_RUNNING; return &ct->p.h; err_ch: net_stop(ct); err_net: spawn_wake_and_close(ca.child_wait_pipe, -1); libct_process_wait(&ct->p.h, NULL); err_clone: close(ca.parent_wait_pipe[0]); close(ca.parent_wait_pipe[1]); err_pipe2: close(ca.child_wait_pipe[0]); close(ca.child_wait_pipe[1]); err_pipe: cgroups_destroy(ct); err_cg: fs_umount(ct); return ERR_PTR(ret); }
void load_data(int argc, char **argv) { total_objects=0; total_weapons=0; weapon_types=NULL; figures=NULL; nforetiles=nbacktiles=0; foretiles=NULL; backtiles=NULL; pal=NULL; color_table=NULL; # if 0 int should_save_sd_cache = 0; char *cachepath; cachepath = (char *)malloc( strlen( get_save_filename_prefix() ) + 12 + 1 ); sprintf( cachepath, "%ssd_cache.tmp", get_save_filename_prefix() ); bFILE *load = open_file( cachepath, "rb" ); if( !load->open_failure() ) { sd_cache.load( load ); } else { should_save_sd_cache = 1; } delete load; #endif // don't let them specify a startup file we are connect elsewhere if (!net_start()) { for (int i=1; i<argc; i++) { if (!strcmp(argv[i],"-lsf")) { i++; strcpy(lsf,argv[i]); } if (!strcmp(argv[i],"-a")) { i++; snprintf(lsf, sizeof(lsf), "addon/%s/%s.lsp", argv[i], argv[i]); } } } else if (!get_remote_lsf(net_server,lsf)) { dprintf("Unable to get remote lsf from %s\n",net_server); exit(0); } char prog[100]; char const *cs; c_mouse1=cache.reg("art/dev.spe","c_mouse1",SPEC_IMAGE,0); c_mouse2=cache.reg("art/dev.spe","c_mouse2",SPEC_IMAGE,0); c_normal=cache.reg("art/dev.spe","c_normal",SPEC_IMAGE,0); c_target=cache.reg("art/dev.spe","c_target",SPEC_IMAGE,0); snprintf(prog, sizeof(prog), "(load \"%s\")\n", lsf); cs=prog; if (!LObject::Compile(cs)->Eval()) { printf("unable to open file '%s'\n",lsf); exit(0); } compiled_init(); LSpace::Tmp.Clear(); dprintf("Engine : Registering base graphics\n"); for (int z=0; z<=11; z++) { char nm[10]; snprintf(nm, sizeof(nm), "l%d", z); light_buttons[z]=cache.reg("art/dev.spe",nm,SPEC_IMAGE,0); } image *tmp_image = new image(ivec2(192, 104), fnt6x13); big_font=new JCFont(tmp_image); delete tmp_image; char const *ff; // FIXME: unnecessary duplicate call if (DEFINEDP(LSymbol::FindOrCreate("frame_file")->GetValue())) ff = lstring_value(LSymbol::FindOrCreate("frame_file")->GetValue()); else ff = "art/frame.spe"; ok_button = cache.reg(ff,"dev_ok",SPEC_IMAGE); cancel_button = cache.reg(ff,"cancel",SPEC_IMAGE); // clouds = cache.reg(ff,"clouds",SPEC_IMAGE); lower_volume= cache.reg(ff,"lower_volume",SPEC_IMAGE); raise_volume= cache.reg(ff,"raise_volume",SPEC_IMAGE); music_button= cache.reg(ff,"music",SPEC_IMAGE); sfx_button= cache.reg(ff,"sound_fx",SPEC_IMAGE); record_button= cache.reg(ff,"record",SPEC_IMAGE); play_button= cache.reg(ff,"play",SPEC_IMAGE); window_colors= cache.reg(ff,"window_colors",SPEC_IMAGE); pause_image= cache.reg(ff,"pause_image",SPEC_IMAGE); vmm_image= cache.reg(ff,"vmm",SPEC_IMAGE); border_tile= cache.reg(ff,"border_tile",SPEC_IMAGE); window_texture= cache.reg(ff,"window_texture",SPEC_IMAGE); help_screens=NULL; total_help_screens=0; if (DEFINEDP(symbol_value(l_help_screens))) { void *v=symbol_value(l_help_screens); char *ff=lstring_value(CAR(v)); v=CDR(v); total_help_screens=0; while (v) { total_help_screens++; v=CDR(v); } if (total_help_screens) { help_screens=(int *)malloc(sizeof(int)*total_help_screens); v=CDR(symbol_value(l_help_screens)); int i=0; for (; v; v=CDR(v),i++) help_screens[i]=cache.reg(ff,lstring_value(CAR(v)),SPEC_IMAGE); } else dprintf("Warning no help images following filename\n"); } int i; for (i=1; i<argc; i++) { if (!strcmp(argv[i],"-ec")) l_empty_cache->SetValue(true_symbol); if (!strcmp(argv[i],"-t")) { i++; insert_tiles(argv[i]); } } if (DEFINEDP(symbol_value(l_title_screen))) title_screen=cache.reg_object(NULL,(LObject *)symbol_value(l_title_screen),SPEC_IMAGE,1); else title_screen=-1; if (DEFINEDP(symbol_value(l_cdc_logo))) cdc_logo=cache.reg_object(NULL,(LObject *)symbol_value(l_cdc_logo),SPEC_IMAGE,1); else cdc_logo=-1; start_position_type=0xffff; for(i=0; i<total_objects; i++) if (!strcmp(object_names[i],"START")) start_position_type=i; if (start_position_type==0xffff) { printf("No object named START, cannot start game.\n"); exit(0); } sbar.load(); load_number_icons(); ERROR(nbacktiles,"No background tiles defined!"); ERROR(nforetiles,"No foreground tiles defined!"); ERROR(foretiles[0]>=0,"No black (0) foreground tile defined!"); ERROR(backtiles[0]>=0,"No black (0) background tile defined!"); ERROR(big_font_pict!=-1 || small_font_pict!=-1, "No font loaded (use load_big_font or load_small_font)!"); f_wid=cache.foret(foretiles[0])->im->Size().x; f_hi=cache.foret(foretiles[0])->im->Size().y; b_wid=cache.backt(backtiles[0])->im->Size().x; b_hi=cache.backt(backtiles[0])->im->Size().y; #if 0 if( should_save_sd_cache ) { bFILE *save = open_file( cachepath, "wb" ); if( !save->open_failure() ) { sd_cache.save( save ); } delete save; } #endif sd_cache.clear(); past_startup = 1; #if 0 free( cachepath ); #endif }
/* service_main */ static VOID WINAPI service_main(DWORD argc, LPTSTR *argv) { config_t conf; void* net; void* threads; void* pipe; h_service = RegisterServiceCtrlHandler(LDMSVC_SERVICE_NAME, handler); if(h_service == NULL) { return; } set_state1(SERVICE_START_PENDING); // SERVICE_START_PENDING // open the heap if(!heap_start()) { dout("Failed to create the heap\n"); set_state2(SERVICE_STOPPED, 1); return; } // parse configuration if(!config_parse_args(&conf, argc, argv)) { heap_stop(); set_state2(SERVICE_STOPPED, 1); return; } if(0) { dout(va("PORT: %u\n", conf.port)); dout(va("PIPE: %s\n", conf.pipe)); dout(va("MAXC: %u\n", conf.maxconn)); } // open network if((net = net_start()) == NULL) { heap_stop(); set_state2(SERVICE_STOPPED, 1); return; } // open the pipe if((pipe = pipe_start(conf.pipe)) == NULL) { net_stop(net); heap_stop(); set_state2(SERVICE_STOPPED, 1); return; } // connect the pipe if(!pipe_open(pipe)) { pipe_stop(pipe); net_stop(net); heap_stop(); set_state2(SERVICE_STOPPED, 1); return; } // start threads if((threads = threads_start(net, pipe, conf.maxconn)) == NULL) { pipe_stop(pipe); net_stop(net); heap_stop(); set_state2(SERVICE_STOPPED, 1); return; } set_state1(SERVICE_RUNNING); // SERVICE_RUNNING while(svc_state == SERVICE_RUNNING) { if(!net_is_ready(net)) { net_bind(net, NULL, conf.port); } if(!threads_think(threads)) { break; } Sleep(1); } set_state1(SERVICE_STOP_PENDING); // SERVICE_STOP_PENDING // close everything here threads_stop(threads); pipe_stop(pipe); net_stop(net); heap_stop(); set_state2(SERVICE_STOPPED, 0); // SERVICE_STOPPED }