X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Frawdsp.c;h=0edfafdd7d1e6ea2a5610f983f96af32f2006156;hb=cbf4ad5e9942032a96215a4c7f095a4777bf0021;hp=42ca0713ea18d5fa5c837198dffd9578f2051eb5;hpb=303e8deb5d11ae84a88acb76329f0ab75274101a;p=gnushogi.git diff --git a/gnushogi/rawdsp.c b/gnushogi/rawdsp.c index 42ca071..0edfafd 100644 --- a/gnushogi/rawdsp.c +++ b/gnushogi/rawdsp.c @@ -123,23 +123,17 @@ Raw_ShowMessage(char *s) void -Raw_AlwaysShowMessage(const char *format, ...) +Raw_AlwaysShowMessage(const char *format, va_list ap) { - va_list ap; - va_start(ap, format); vprintf(format, ap); - va_end(ap); printf("\n"); } void -Raw_Printf(const char *format, ...) +Raw_Printf(const char *format, va_list ap) { - va_list ap; - va_start(ap, format); vprintf(format, ap); - va_end(ap); } @@ -472,7 +466,7 @@ Raw_EditBoard(void) * first line. White pieces are represented by uppercase characters. */ void -SetupBoard(void) +Raw_SetupBoard(void) { short r, c, sq, i; char ch; @@ -987,3 +981,59 @@ Raw_ShowPostnValues(void) mtl[opponent], pscore[opponent], GameType[opponent]); printf("\nhung black %d hung white %d\n", hung[black], hung[white]); } + + +/* + * Determine the time that has passed since the search was started. If the + * elapsed time exceeds the target(ResponseTime + ExtraTime) then set timeout + * to true which will terminate the search. + * iop = COMPUTE_MODE calculate et, bump ETnodes + * iop = COMPUTE_AND_INIT_MODE calculate et, set timeout if time exceeded, + * set reference time + */ +void +Raw_ElapsedTime(ElapsedTime_mode iop) +{ + long current_time; +#ifdef HAVE_GETTIMEOFDAY + struct timeval tv; + gettimeofday(&tv, NULL); + current_time = tv.tv_sec*100 + (tv.tv_usec/10000); +#else + et = ((current_time = time((long *) 0)) - time0) * 100; +#endif + +#ifdef INTERRUPT_TEST + if (iop == INIT_INTERRUPT_MODE) + { + itime0 = current_time; + } + else if (iop == COMPUTE_INTERRUPT_MODE) + { + it = current_time - itime0; + } + else +#endif + { +#ifdef HAVE_GETTIMEOFDAY + et = current_time - time0; +#endif + ETnodes = NodeCnt + znodes; + + if (et < 0) + { +#ifdef INTERRUPT_TEST + printf("elapsed time %ld not positive\n", et); +#endif + et = 0; + } + + if (iop == COMPUTE_AND_INIT_MODE) + { + if ((et > (ResponseTime + ExtraTime)) && (Sdepth > MINDEPTH)) + flag.timeout = true; + + time0 = current_time; + } + } +}