Changeset: ce5cb835816b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ce5cb835816b Modified Files: Branch: Oct2010 Log Message:
Merge with root diffs (truncated from 1848 to 300 lines): diff -r 42d0637cfc71 -r ce5cb835816b MonetDB4/configure.ag --- a/MonetDB4/configure.ag Fri Nov 26 20:59:12 2010 +0100 +++ b/MonetDB4/configure.ag Fri Nov 26 20:59:41 2010 +0100 @@ -217,7 +217,7 @@ <malloc.h> header file.]),,[ ]) CFLAGS="$CFLAGS_bak" AC_CHECK_HEADERS(fcntl.h limits.h unistd.h pwd.h dlfcn.h) -AC_CHECK_HEADERS(time.h sys/time.h utime.h sys/utime.h) +AC_CHECK_HEADERS(time.h sys/time.h) AC_CHECK_HEADERS(sys/file.h sys/param.h sys/mman.h) AC_CHECK_HEADERS(rlimit.h sys/resource.h) AC_CHECK_HEADERS(string.h strings.h signal.h sys/socket.h sys/un.h termios.h) @@ -312,7 +312,6 @@ AC_FUNC_SETPGRP() fi AC_TYPE_SIGNAL() -AC_FUNC_UTIME_NULL() AC_FUNC_VPRINTF() AC_FUNC_MEMCMP() AC_CHECK_FUNCS(strsignal) diff -r 42d0637cfc71 -r ce5cb835816b MonetDB4/src/modules/plain/alarm.mx --- a/MonetDB4/src/modules/plain/alarm.mx Fri Nov 26 20:59:12 2010 +0100 +++ b/MonetDB4/src/modules/plain/alarm.mx Fri Nov 26 20:59:41 2010 +0100 @@ -286,12 +286,14 @@ #ifdef HAVE_CTIME_R3 char buf[26]; - *retval = GDKstrdup(ctime_r(&t, buf, sizeof(buf))); + ctime_r(&t, buf, sizeof(buf)); + *retval = GDKstrdup(buf); #else #ifdef HAVE_CTIME_R char buf[26]; - *retval = GDKstrdup(ctime_r(&t, buf)); + ctime_r(&t, buf); + *retval = GDKstrdup(buf); #else *retval = GDKstrdup(ctime(&t)); #endif diff -r 42d0637cfc71 -r ce5cb835816b MonetDB4/src/monet/monet_queue.mx --- a/MonetDB4/src/monet/monet_queue.mx Fri Nov 26 20:59:12 2010 +0100 +++ b/MonetDB4/src/monet/monet_queue.mx Fri Nov 26 20:59:41 2010 +0100 @@ -121,12 +121,15 @@ m_export void QMclearStat(void); #endif /* _MONET_QUEUE_H_ */ +/* @} @- The number of requests entered in the queue is counted. This counter is decremented when a requests is finished or forcefully removed from the queue. If it becomes zero there aren't any requests left for processing. @{ +...@h +*/ @c #include "monetdb4_config.h" #include "monet_deparse.h" @@ -156,7 +159,7 @@ THRprintf(fp, buf); } - +/* @ @} @- @@ -165,6 +168,8 @@ The request immediately gets a unique time stamp for tracing. @{ @c +*/ +...@c Request newRequest(Cntxt stk, YYSTREE data, int barrier) { @@ -186,6 +191,7 @@ return p; } +/* @ @} @@ -195,6 +201,8 @@ one arbitrary monet Interpreter thread that stumbles on it. @{ @c +*/ +...@c void putkillRequest(void) { @@ -203,6 +211,7 @@ putRequest(m); } +/* @ @} @- @@ -216,6 +225,8 @@ All code should pass the wakeupRequest point. @{ @c +*/ +...@c int sem = 0; char mybuf[16000], *myp = mybuf; @@ -256,10 +267,9 @@ qm_last->ev_next = p; qm_last = last; } -...@- -Now that all requests have been added, we should identify those that -are eligable for execution. Their state is set accordingly. -...@c + /* Now that all requests have been added, we should identify + * those that are eligable for execution. Their state is set + * accordingly. */ for (; p; p = p->ev_next) if (p->ev_status == 0) { wakeupRequest(p); @@ -321,6 +331,7 @@ monet_unset_lock(monet_critical, "nxtRequest"); } +/* @- The getRequest function is protected by the semaphore, such that the processes interested in a request are blocked until one becomes @@ -328,6 +339,8 @@ thread. Then it should reset the status before leaving this scope. The flag barrier searches requests that lower the barrier request first. @c +*/ +...@c Request getRequest(Request barrier) { @@ -347,7 +360,7 @@ } for (q = qm_first; q; q = q->ev_next) if (q->ev_status == EVPENDING) { - if (q->ev_process == 0 || q->ev_process == tid) { + if ((q->ev_process == 0 && (q->ev_data != 0 || tid != 1)) || q->ev_process == tid) { goto getReq0; } } @@ -370,6 +383,7 @@ return q; } +/* @- Some top level routines need access to the current queue request, so as to prepare a dependency list. Since a thread may temporarily suspend @@ -380,6 +394,8 @@ The corresponding unlink code has been written such that this routine need not be placed in a critical section. @c +*/ +...@c Request thisRequest(void) { @@ -409,6 +425,7 @@ return NULL; } +/* @ @} @@ -418,6 +435,8 @@ It directly manipulates the stack and also gets rid of the old requests. @c +*/ +...@c void rmRequest(Request r) { @@ -437,6 +456,7 @@ monet_unset_lock(monet_critical, "rmRequest"); } +/* @- Once an event is handled the status field should be changed to reflect the situation and any runable event should be detected. @@ -446,6 +466,8 @@ @{ @c +*/ +...@c void unlinkRequest(Request q) { @@ -465,6 +487,7 @@ } +/* @- A request is immediately removed from the queue once it has been handled. If the request was traced for performance, it is moved to the history queue, @@ -481,6 +504,8 @@ The process id is invalidated to avoid collapses with thisRequest(). @c +*/ +...@c void clrRequest(Request q) { @@ -503,8 +528,11 @@ monet_unset_lock(monet_critical, "clrRequest"); } +/* @- Request exeuction @c +*/ +...@c int handleRequest(Thread t, Request q, ValPtr res) { @@ -526,10 +554,8 @@ return 0; } -...@- -This was needed to ensure proper delivery of output; -A kill request is handled directly. -...@c + /* This was needed to ensure proper delivery of output; A kill + * request is handled directly. */ if (lt == NULL) { assert(stk == 0); PARDEBUG { @@ -571,6 +597,7 @@ } } +/* @ @} @@ -586,6 +613,8 @@ manipulation with queue keys returned by QMenqueue. They others are generated internally. @c +*/ +...@c int QMenqueue(Cntxt stk, YYSTREE data, int barrier, int kill) { @@ -622,10 +651,13 @@ return 0; } +/* @- Dequeuing a request cascades to its dependents (in all directions). This way the user need not keep track of all requests generated on the fly. @c +*/ +...@c #if 0 static void QMdequeue(int qkey) @@ -651,9 +683,12 @@ } #endif +/* @- A request can be activated using the queue key. @c +*/ +...@c void QMwakeup(int qkey) { @@ -677,10 +712,13 @@ PARDEBUG THRprintf(GDKerr, "QMwakeup: qkey %d not found\n", qkey); } +/* @- The user is responsible for creation of a synchronization request to align multiple parallel requests. @c +*/ +...@c int _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list