void Peer::Run() { while (true) { m_status = CONNECTING; peersock = UDT::socket(peeraddr->ai_family, SOCK_DGRAM, peeraddr->ai_protocol); if (UDT::bind(peersock, localaddr->ai_addr, localaddr->ai_addrlen) == UDT::ERROR ) { log_tagmsg(this,LOG_ERR, LOG_IGN, "bind error\n"); sleep(60); continue; } UDT::setsockopt(peersock, 0, UDT_RCVTIMEO, new int(1000), sizeof(int)); UDT::setsockopt(peersock, 0, UDT_RENDEZVOUS, new int(1), sizeof(int)); __DEBUG__("-"); while(true) { if (UDT::connect(peersock, peeraddr->ai_addr,peeraddr->ai_addrlen)) { log_tagmsg(this,LOG_ERR, LOG_IGN,"%s\n", UDT::getlasterror().getErrorMessage()); log_tagmsg(this, LOG_MSG, LOG_IGN, "connect: pending...\n"); sleep(1); continue; } last_recv_time = time(NULL); last_send_time = 0; m_status = CONNECTED; break; } log_tagmsg(this, LOG_MSG, LOG_IGN, "connected.\n"); try { while (true) { int sz; time_t t = time(NULL); if (t > (last_send_time + keepalive)) { send_msg(); last_send_time = time(NULL); } //__DEBUG__("==> rcv"); if(recv_msg()) last_recv_time = time(NULL); //__DEBUG__("<== rcv"); if (t > (last_recv_time + keepalive*3)) throw(std::string("rcv timeout")); } } catch (std::string e) { log_tagmsg(this, LOG_ERR, LOG_IGN, "%s\n", e.c_str()); } catch (...) { //__DEBUG__("catch exception ???"); } __DEBUG__("- >>"); UDT::close(peersock); m_status = CLOSED; __DEBUG__("- <<"); } }
static inline int cmos_error(void) { unsigned char reg_d; /* See if the cmos error condition has been flagged */ outb(0xd, 0x72); reg_d = inb(0x73); #if DUMP_CMOS_RAM __DEBUG__("RTC_VRT = %x\n", reg_d & RTC_VRT); #endif return (reg_d & RTC_VRT) == 0; }
/****************************************************************************** * * * 함수명 : Dump_environ * * * * 설명 : 입력파리미터Dump * * * * 작성자 : 김현신 * * * * 작성일 : 2011/05/05 * * * * 파라미터 : IN/OUT PARAM NAME TYPE DESCRIPTION * * ------ ---------- -------------- ------------------------ * * * * 리턴값 : TRUE : SUCCESS * * FALSE : FAILURE * * * ******************************************************************************/ static int Dump_environ( void ) { char **env = environ; __DEBUG__("Start"); #ifdef __LOCAL_DEBUG_DETAIL__ puts("------------------- Dupm : environ ---------------------"); for (;*env;) { puts( *env++ ); } puts("-------------------------------------------------------"); #endif /* __LOCAL_DEBUG_DETAIL__ */ return (SUCCESS); }
static inline int cmos_chksum_valid(void) { unsigned char addr, val; unsigned long sum, old_sum; #if DUMP_CMOS_RAM u8 i; /* Compute the cmos checksum */ for (addr = 14, i = 0; addr < LB_CKS_RANGE_START; addr++,i++) { outb(addr, 0x72); val = inb(0x73); if( i%16 == 0 ) __DEBUG__("%02x:", addr); __DEBUG__(" %02x",val); if( i%16 == 15 ) __DEBUG__("\n"); } #endif sum = 0; for(addr = LB_CKS_RANGE_START; addr <= LB_CKS_RANGE_END; addr++) { outb(addr, 0x72); val = inb(0x73); #if DUMP_CMOS_RAM if( i%16 == 0 ) __DEBUG__("%02x:", addr); __DEBUG__(" %02x",val); if( i%16 == 15 ) __DEBUG__("\n"); i++; #endif sum += val; } #if DUMP_CMOS_RAM __DEBUG__("\n"); #endif sum = (sum & 0xffff) ^ 0xffff; /* Read the stored checksum */ outb(LB_CKS_LOC, 0x72); old_sum = inb(0x73) << 8; outb(LB_CKS_LOC+1, 0x72); old_sum |= inb(0x73); #if DUMP_CMOS_RAM __DEBUG__("CMOS checksum: old = %lx, new = %lx\n", old_sum, sum); #endif return sum == old_sum; }
static inline void check_cmos( void ) { char *cmos_default = NULL; int i; #if DUMP_CMOS_RAM u8 c = 0; #endif if (cmos_error() || !cmos_chksum_valid()) { cmos_default = cbfs_find_file("cmos.default", 0xaa); if (cmos_default) { #if DUMP_CMOS_RAM __DEBUG__("Write cmos default ...\n"); #endif outb(0x0a,0x72); i = inb(0x73); i &= ~(1 << 4); outb(i,0x73); for (i = 14; i < 128; i++) { #if DUMP_CMOS_RAM if( c%16 == 0 ) __DEBUG__("%02x:", i); __DEBUG__(" %02x", (u8)cmos_default[i]); if( c%16 == 15 ) __DEBUG__("\n"); c++; #endif outb(i,0x72); outb(cmos_default[i],0x73); } #if DUMP_CMOS_RAM __DEBUG__("\n"); #endif if( !cmos_chksum_valid() ) __DEBUG__("CMOS CHECKSUM ERROR\n"); /* Now reboot to run with default cmos. */ outb(0x06, 0xcf9); for (;;) asm("hlt"); /* Wait for reset! */ } } // update altcentury outb(0x32, 0x72); i = inb(0x73); if ( i != 0x20 ) { outb(0x20,0x73); set_chksum(LB_CKS_RANGE_START, LB_CKS_RANGE_END, LB_CKS_LOC); } }
void Peer::send_msg () { memset(contr_buf_out,sizeof(msg_header),0); //memcpy(contr_buf_out, new msg_header, sizeof(msg_header)); int sz = local_routes.pack(contr_buf_out+sizeof(msg_header),PEER_MSG_SIZE-sizeof(msg_header)); int ss = UDT::sendmsg(peersock, contr_buf_out, sz+sizeof(msg_header)); if (ss) { if(ss == UDT::ERROR) throw(std::string("send error")); else last_send_time = time(NULL); __DEBUG__("sent " << ss << " bytes of " <<sz+sizeof(msg_header) << " implied"); } else { __CROAK__("error"); } }
void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx) { static const u16 spd_addr[] = { DIMM0, 0, 0, 0, DIMM1, 0, 0, 0, }; int needs_reset = 0; u32 bsp_apicid = 0; msr_t msr; struct cpuid_result cpuid1; struct sys_info *sysinfo = &sysinfo_car; if (!cpu_init_detectedx && boot_cpu()) { /* Nothing special needs to be done to find bus 0 */ /* Allow the HT devices to be found */ enumerate_ht_chain(); /* sb600_lpc_port80(); */ sb600_pci_port80(); } if (bist == 0) { bsp_apicid = init_cpus(cpu_init_detectedx, sysinfo); } enable_rs690_dev8(); // enable CFG access to Dev8, which is the SB P2P Bridge sb600_lpc_init(); #if defined(DUMP_CMOS_RAM) && (DUMP_CMOS_RAM == 0) check_cmos(); // rebooting in case of corrupted cmos !!!!! #endif ite_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); ite_kill_watchdog(GPIO_DEV); console_init(); #if defined(DUMP_CMOS_RAM) && (DUMP_CMOS_RAM == 1) check_cmos(); // rebooting in case of corrupted cmos !!!!! #endif post_code(0x03); /* Halt if there was a built in self test failure */ report_bist_failure(bist); __DEBUG__("bsp_apicid=0x%x\n", bsp_apicid); setup_sitemp_resource_map(); setup_coherent_ht_domain(); #if CONFIG_LOGICAL_CPUS /* It is said that we should start core1 after all core0 launched */ wait_all_core0_started(); start_other_cores(); #endif wait_all_aps_started(bsp_apicid); ht_setup_chains_x(sysinfo); /* run _early_setup before soft-reset. */ rs690_early_setup(); sb600_early_setup(); post_code(0x04); /* Check to see if processor is capable of changing FIDVID */ /* otherwise it will throw a GP# when reading FIDVID_STATUS */ cpuid1 = cpuid(0x80000007); if( (cpuid1.edx & 0x6) == 0x6 ) { /* Read FIDVID_STATUS */ msr=rdmsr(0xc0010042); __DEBUG__("begin msr fid, vid: hi=0x%x, lo=0x%x\n", msr.hi, msr.lo); enable_fid_change(); enable_fid_change_on_sb(sysinfo->sbbusn, sysinfo->sbdn); init_fidvid_bsp(bsp_apicid); /* show final fid and vid */ msr=rdmsr(0xc0010042); __DEBUG__("end msr fid, vid: hi=0x%x, lo=0x%x\n", msr.hi, msr.lo); } else { __DEBUG__("Changing FIDVID not supported\n"); } post_code(0x05); needs_reset = optimize_link_coherent_ht(); needs_reset |= optimize_link_incoherent_ht(sysinfo); rs690_htinit(); __DEBUG__("needs_reset=0x%x\n", needs_reset); post_code(0x06); if (needs_reset) { __INFO__("ht reset -\n"); soft_reset(); } allow_all_aps_stop(bsp_apicid); /* It's the time to set ctrl now; */ __DEBUG__("sysinfo->nodes: %2x sysinfo->ctrl: %p spd_addr: %p\n", sysinfo->nodes, sysinfo->ctrl, spd_addr); fill_mem_ctrl(sysinfo->nodes, sysinfo->ctrl, spd_addr); post_code(0x07); sdram_initialize(sysinfo->nodes, sysinfo->ctrl, sysinfo); post_code(0x08); rs690_before_pci_init(); // does nothing sb600_before_pci_init(); post_cache_as_ram(); }
void makeTestQuery(QUERY_TYPE qt, char *query) { switch(qt) { case Q_POINT_SELECTION: { int a=RAND(TEST_MAX); //cout<<"point: "<<a<<endl; sprintf(query, "PRO;R;$;R.a00,;$;:SEL;R;$;R.a00,;=,R.a00,$,$,%d,$,$,;:$:$:$:", a); }break; case Q_RANGE_SELECTION: { int a=RAND(TEST_MAX); int b=RAND(TEST_MAX); int minmin=min(a,b); int maxmax=minmin+20000000;//max(a,b); //result: 155943, 10000000 //result: 311916, 20000000 //cout<<"range: ["<<minmin<<", "<<maxmax<<"]"<<endl; sprintf(query, "PRO;R;$;R.a00,;$;:SEL;R;$;R.a00,;AND,>,R.a00,$,$,%d,$,$,<,R.a00,$,$,%d,$,$,;:$:$:$:", minmin, maxmax); }break; case Q_AGG: { sprintf(query, "AGG;R;MAX;R.a00,;$;:$:$:"); }break; case Q_ORDERBY: { sprintf(query, "AGG;R;MAX;R.a00,;$;:ORD;R;$;R.a00,;$;:$:$:$:"); //sprintf(query, "PRO;$;$;R.b00,;$;:ORD;R;$;R.a00,;$;:$:$:$:"); //sprintf(query, "PRO;R;$;R.b00,;$;:ORD;R;$;R.a00,;$;:SEL;R;$;R.b00,;<,R.b00,$,$,8,$,$,;:$:$:$:$:"); }break; case Q_AGG_GROUPBY: { sprintf(query, "AGG;R;MAX;R.a00,;$;:GRP;R;$;R.b00,;$;:$:$:$:"); }break; case Q_NINLJ: { //sprintf(query, "JOIN;R;S;R.a00,S.a00,;<,R.a00,$,$,S.a00,$,$,;:$:$:"); /*int a1=RAND(TEST_MAX); int a2=RAND(TEST_MAX); int minmin1=a1; int maxmax1=minmin1+20000000;//max(a,b); int minmin2=a2; int maxmax2=minmin2+20000000;//max(a,b); sprintf(query, "PRO;R;$;R.a00,;$;:JOIN;R;S;R.a00,S.a00,;<,R.a00,$,$,S.a00,$,$,;:SEL;R;$;R.a00,;AND,>,R.a00,$,$,%d,$,$,<,R.a00,$,$,%d,$,$,;:$:$:SEL;S;$;S.a00,;AND,>,S.a00,$,$,%d,$,$,<,S.a00,$,$,%d,$,$,;:$:$:$:",minmin1,maxmax1,minmin2,maxmax2);*/ //cout<<"I have changed the NLJ for testing"<<endl; int a1=RAND(TEST_MAX); int a2=RAND(TEST_MAX); int delta=(int)(20*1000000.0); int minmin1=a1; int maxmax1=minmin1+delta;//max(a,b); int minmin2=a2; int maxmax2=minmin2+delta;//max(a,b); sprintf(query, "PRO;R;$;R.a00,;$;:JOIN;R;S;R.a00,S.a00,;<,R.a00,$,$,S.a00,$,$,;:SEL;R;$;R.a00,;AND,>,R.a00,$,$,%d,$,$,<,R.a00,$,$,%d,$,$,;:$:$:SEL;S;$;S.a00,;AND,>,S.a00,$,$,%d,$,$,<,S.a00,$,$,%d,$,$,;:$:$:$:",minmin1,maxmax1,minmin2,maxmax2); }break; case Q_INLJ: { sprintf(query,"PRO;R;$;R.a00,;$;:JOIN;R;S;R.a00,S.a00,;=,R.a00,$,$,S.a00,$,$,;:$:$:$:");//my own invension. = -> INLJ }break; case Q_SMJ: { sprintf(query,"PRO;R;$;R.a00,;$;:JOIN;R;S;R.a00,S.a00,;+,R.a00,$,$,S.a00,$,$,;:$:$:$:");//my own invension. + -> SMJ }break; case Q_HJ: { sprintf(query,"PRO;R;$;R.a00,;$;:JOIN;R;S;R.a00,S.a00,;-,R.a00,$,$,S.a00,$,$,;:$:$:$:");//my own invension. - -> HJ }break; case Q_DBMBENCH1: { int a=RAND(20000); int b=(a-2000); if(b<0) b=a+2000; int minmin=min(a,b); int maxmax=max(a,b); sprintf(query,"PRO;$;$;T1.a3,;$;:SEL;$;T1;T1.a2,;AND,<,%d,$,$,T1.a2,$,$,<,T1.a2,$,$,%d,$,$,;:$:$:$:",minmin,maxmax); }break; case Q_DBMBENCH2: { int a=RAND(20000); int b=(a-4000); if(b<0) b=a+4000; int minmin=min(a,b); int maxmax=max(a,b); sprintf(query,"AGG;T1;AVG;T1.a3,;$;:JOIN;T1;T2;T1.a1,T2.a1,;=,T1.a1,$,$,T2.a1,$,$,;:SEL;$;T1;T1.a2,;AND,<,%d,$,$,T1.a2,$,$,<,T1.a2,$,$,%d,$,$,;:$:$:$:$:",minmin,maxmax); //sprintf(query,"PRO;T1;$;T1.a3,;$;:JOIN;T1;T2;T1.a1,T2.a1,;=,T1.a1,$,$,T2.a1,$,$,;:$:$:$:"); }break; case Q_DBMBENCH3: { int a=RAND(20000); int b=(a-100); if(b<0) b=a+100; int minmin=min(a,b); int maxmax=max(a,b); sprintf(query,"AGG;T1;AVG;T1.a3,;$;:SEL;$;T1;T1.a2,;AND,<,%d,$,$,T1.a2,$,$,<,T1.a2,$,$,%d,$,$,;:$:$:$:",minmin,maxmax); }break; } __DEBUG__(query); }