void pid_init () // call this anytime before calling calculate_pid { // set up PID values set_pid_constants_pitch(PITCH_CONST_P, PITCH_CONST_I, PITCH_CONST_D, PITCH_ALPHA); set_pid_constants_roll(ROLL_CONST_P, ROLL_CONST_I, ROLL_CONST_D, ROLL_ALPHA); set_pid_constants_yaw(YAW_CONST_P, YAW_CONST_I, YAW_CONST_D, YAW_ALPHA); set_pid_constants_depth(DEPTH_CONST_P, DEPTH_CONST_I, DEPTH_CONST_D, DEPTH_ALPHA); // Initialize target orientation set_target_depth(0); set_target_speed(0); set_target_heading(0); // Initialize motor linearization lookup table init_lookup(); }
rktio_addrinfo_lookup_t *rktio_start_addrinfo_lookup(rktio_t *rktio, const char *hostname, int portno, int family, int passive, int tcp) { rktio_addrinfo_lookup_t *lookup; char buf[32], *service; struct rktio_addrinfo_t *hints; if (portno >= 0) { service = buf; sprintf(buf, "%d", portno); } else service = NULL; if (!hostname && !service) { set_racket_error(RKTIO_ERROR_HOST_AND_PORT_BOTH_UNSPECIFIED); return NULL; } hints = malloc(sizeof(rktio_addrinfo_t)); memset(hints, 0, sizeof(struct rktio_addrinfo_t)); RKTIO_AS_ADDRINFO(hints)->ai_family = ((family < 0) ? PF_UNSPEC : family); if (passive) { RKTIO_AS_ADDRINFO(hints)->ai_flags |= rktio_AI_PASSIVE; } if (tcp) { RKTIO_AS_ADDRINFO(hints)->ai_socktype = SOCK_STREAM; # ifndef PROTOENT_IS_INT if (!proto) { proto = getprotobyname("tcp"); } # endif RKTIO_AS_ADDRINFO(hints)->ai_protocol= PROTO_P_PROTO; } else { RKTIO_AS_ADDRINFO(hints)->ai_socktype = SOCK_DGRAM; } lookup = malloc(sizeof(rktio_addrinfo_lookup_t)); lookup->name = (hostname ? MSC_IZE(strdup)(hostname) : NULL); lookup->svc = (service ? MSC_IZE(strdup)(service) : NULL); lookup->hints = hints; init_lookup(lookup); return start_lookup(rktio, lookup); }
int main(void) { setvbuf(stdin, 0, _IOFBF, 1024*1024); long stdin_size = get_file_size(stdin); uint8_t *buffer = calloc(stdin_size + LINE_LENGTH, 1); assert(buffer); lookup_t lookup; pthread_mutex_t mutex; job_t *job = 0; init_lookup( (const uint8_t *)"acbdghkmnsrutwvy", (const uint8_t *)"TGVHCDMKNSYAAWBR", &lookup); pthread_mutex_init(&mutex, 0); uint8_t *current = buffer; uint8_t *end = buffer + stdin_size; uint8_t *header_begin = 0; uint8_t *header_end = 0; uint8_t *body_begin = 0; while (fgets_unlocked((char *)current, end - current, stdin)) { if (current[0] == '>') { if (body_begin != 0) { job = do_process_block( header_begin, header_end, body_begin, current, &lookup, &mutex, job); } size_t len = strlen((const char *)current); header_begin = current; header_end = current + len; current += len; body_begin = current; } else { if (current[LINE_LENGTH] == '\n') { current += LINE_LENGTH; } else { size_t len = strlen((const char *)current); if (current[len - 1] == '\n') { --len; } current += len; } } } if (body_begin != 0) { job = do_process_block( header_begin, header_end, body_begin, current, &lookup, &mutex, job); } while (job) { pthread_join(job->thread, 0); if (job->free_buffer) { free(job->buffer); } job = job->prev_job; } free(buffer); return 0; }
int revcomp_main(void) { //setvbuf(input_file, 0, _IOFBF, 1024*1024); //long stdin_size = get_file_size(input_file); long lSize; size_t result; struct rqst_struct rqst; rqst.bytes = MAXSIZE; rqst.pid = PROC_ID; rqst.id = CHUNK_ID; lSize = rqst.bytes; fprintf(stdout, "entering revcomp_main \n"); // copy the file into the buffer: uint8_t *buffer = pnvread(lSize,&rqst); //uint8_t *buffer = calloc(stdin_size + LINE_LENGTH, 1); assert(buffer); lookup_t lookup; pthread_mutex_t mutex; job_t *job = 0; init_lookup( (const uint8_t *)"acbdghkmnsrutwvy", (const uint8_t *)"TGVHCDMKNSYAAWBR", &lookup); pthread_mutex_init(&mutex, 0); uint8_t *current = buffer; uint8_t *end = buffer + lSize; uint8_t *header_begin = 0; uint8_t *header_end = 0; uint8_t *body_begin = 0; fprintf(stderr,"Current %s \n",current); if (current[0] == '>') { if (body_begin != 0) { job = do_process_block( header_begin, header_end, body_begin, current, &lookup, &mutex, job); } size_t len = strlen((const char *)current); header_begin = current; header_end = current + len; current += len; body_begin = current; } else { if (current[LINE_LENGTH] == '\n') { current += LINE_LENGTH; } else { size_t len = strlen((const char *)current); if (current[len - 1] == '\n') { --len; } current += len; } } if (body_begin != 0) { job = do_process_block( header_begin, header_end, body_begin, current, &lookup, &mutex, job); } while (job) { pthread_join(job->thread, 0); if (job->free_buffer) { nv_free(job->buffer); } job = job->prev_job; } fprintf(stdout, "revcomp main returning \n"); /*free(buffer);*/ return 0; }
int main(int argc,char *args[]) { int n,c; unsigned long long prof,start,end; end_of_data_ptr=sbrk(0); time_now=time(NULL); printf("\n"); printf(" ********************************************\n"); printf(" * Astonia 3 - The Conflict Server *\n"); printf(" * Version %d.%02d.%02d *\n",VERSION>>16,(VERSION>>8)&255,VERSION&255); printf(" ********************************************\n"); printf(" * Copyright (C) 2001-2008 Intent Software *\n"); printf(" * Copyright (C) 1997-2001 Daniel Brockhaus *\n"); printf(" ********************************************\n"); printf("\n"); if (argc>1) { while (1) { c=getopt(argc,args,"a:m:i:dhc"); if (c==-1) break; switch (c) { case 'a': if (optarg) areaID=atoi(optarg); break; case 'm': if (optarg) areaM=atoi(optarg); break; case 'd': demon=1; break; case 'h': fprintf(stderr,"Usage: %s [-a <areaID>] [-m <mirror>] [-n <use this class A net>] [-d] [-c]\n\n-d Demonize\n-c Disable concurrent database access\n\n",args[0]); exit(0); case 'c': multi=0; break; //case 'n': if (optarg) server_net=atoi(optarg); break; case 'i': if (optarg) serverID=atoi(optarg); break; } } } if (!areaID) { printf("No areaID given, assuming areaID=1\n"); areaID=1; } if (!areaM) { printf("No mirror given, assuming areaM=1\n"); areaM=1; } if (!serverID) { printf("No serverID given, assuming serverID=1\n"); serverID=1; } #ifdef STAFF while (!check_staff_start()) sleep(1); #endif // set character number limit depending on area switch(areaID) { case 1: maxchars=512; break; case 2: maxchars=896; break; case 3: maxchars=384; break; case 4: maxchars=2048; break; case 5: maxchars=768; break; case 6: maxchars=384; break; case 7: maxchars=1280; break; case 8: maxchars=384; break; case 9: maxchars=1280; break; case 10: maxchars=512; break; case 11: maxchars=384; break; case 12: maxitem=1024*48; maxchars=384; break; case 13: maxchars=9*50+200; break; case 14: maxchars=16*50+200; break; case 15: maxchars=384; break; case 16: maxchars=384; break; case 17: maxchars=512; break; case 18: maxchars=768; break; case 19: maxchars=384; break; case 20: maxchars=768; break; case 21: maxchars=768; break; case 22: maxchars=512; break; case 23: maxchars=512; break; case 24: maxchars=384; break; case 25: maxchars=384+8*25*2; break; case 26: maxchars=256; break; case 27: maxchars=2048; break; case 28: maxchars=384; break; case 29: maxchars=512; break; case 30: maxchars=384; break; case 31: maxitem=1024*40; maxchars=512; break; case 32: maxchars=1280; break; case 33: maxchars=1600; break; case 34: maxchars=1280; break; case 35: maxchars=768; break; case 36: maxchars=768; break; case 37: maxchars=1024; break; default: maxchars=768; break; } // set item and effect limit if (!maxitem) maxitem=max(maxchars*12+10240,20480); if (!maxeffect) maxeffect=max(maxchars*2,1024); printf("serverID=%d, areaID=%d, areaM=%d, maxchars=%d, maxitem=%d, maxeffect=%d\n\n", serverID,areaID,areaM,maxchars,maxitem,maxeffect); if (demon) { printf("Demonizing...\n\n"); if (fork()) exit(0); for (n=0; n<256; n++) close(n); setsid(); #ifndef STAFF nologin=1; #endif } // ignore the silly pipe errors: signal(SIGPIPE,SIG_IGN); // ignore sighup - just to be safe signal(SIGHUP,SIG_IGN); /*signal(SIGSEGV,sig_crash); signal(SIGFPE,sig_crash); signal(SIGBUS,sig_crash); signal(SIGSTKFLT,sig_crash);*/ // shutdown gracefully if possible: signal(SIGQUIT,sig_leave); signal(SIGINT,sig_leave); signal(SIGTERM,sig_leave); // show profile info on CTRL-Z signal(SIGTSTP,sig_showprof); // init random number generator srand(time_now); if (!init_smalloc()) exit(1); if (!init_mem()) exit(1); if (!init_prof()) exit(1); if (!init_log()) exit(1); if (!init_database()) exit(1); if (!init_lookup()) exit(1); if (!init_sector()) exit(1); if (!init_los()) exit(1); if (!init_timer()) exit(1); if (!init_notify()) exit(1); if (!init_create()) exit(1); if (!init_lib()) exit(1); if (!init_io()) exit(1); if (!init_path()) exit(1); if (!init_effect()) exit(1); if (!init_container()) exit(1); if (!init_store()) exit(1); if (!init_chat()) exit(1); init_sound_sector(); xlog("AreaID=%d, AreaM=%d, entering game loop...",areaID,areaM); dlog(0,0,"Server started"); prof_reset(); while (!quit) { sprintf(args[0],"./server -a %d -m %d -i %d # %d on %d%% load (busy)",areaID,areaM,serverID,online,(10000-server_idle)/100); start=rdtsc(); lock_server(); time_now=time(NULL); prof=prof_start(26); tick_date(); prof_stop(26,prof); prof=prof_start(22); tick_timer(); prof_stop(22,prof); prof=prof_start(4); tick_char(); prof_stop(4,prof); prof=prof_start(24); tick_effect(); prof_stop(24,prof); prof=prof_start(36); tick_clan(); prof_stop(36,prof); prof=prof_start(39); tick_club(); prof_stop(39,prof); prof=prof_start(5); tick_player(); prof_stop(5,prof); prof=prof_start(34); tick_login(); prof_stop(34,prof); prof=prof_start(6); pflush(); prof_stop(6,prof); prof=prof_start(7); io_loop(); prof_stop(7,prof); prof=prof_start(3); tick_chat(); prof_stop(3,prof); if (showprof) { show_prof(); showprof=0; } prof=prof_start(8); prof_update(); prof_stop(8,prof); end=rdtsc(); cycles=end-start; if ((ticker&2047)==0) { prof=prof_start(27); area_alive(0); prof_stop(27,prof); prof=prof_start(28); backup_players(); prof_stop(28,prof); call_stat_update(); read_motd(); reinit_log(); } if ((ticker&255)==0) { call_check_task(); call_area_load(); shutdown_warn(); #ifdef STAFF check_staff_stop(); #endif } if ((ticker&255)==168) { prof=prof_start(38); consistency_check_items(); consistency_check_map(); consistency_check_chars(); consistency_check_containers(); prof_stop(38,prof); } unlock_server(); sprintf(args[0],"./server -a %d -m %d -i %d # %d on %d%% load (idle)",areaID,areaM,serverID,online,(10000-server_idle)/100); prof=prof_start(1); tick_sleep(0); prof_stop(1,prof); ticker++; } xlog("Left game loop"); respawn_check(); for (n=1; n<MAXCHARS; n++) { if (ch[n].flags&CF_PLAYER) { exit_char(n); } } area_alive(1); show_prof(); dlog(0,0,"Server stopped"); xlog("map check"); check_map(); exit_lib(); exit_database(); xlog("Clean shutdown"); showmem(); exit_log(); exit_io(); return 0; }