Loading include/config-win.h +0 −1 Original line number Diff line number Diff line Loading @@ -249,7 +249,6 @@ inline double ulonglong2double(ulonglong value) #define tell(A) _telli64(A) #endif #define set_timespec(ABSTIME,SEC) { (ABSTIME).tv_sec=time((time_t*)0) + (time_t) (SEC); (ABSTIME).tv_nsec=0; } #define STACK_DIRECTION -1 Loading include/my_global.h +1 −35 Original line number Diff line number Diff line Loading @@ -1010,41 +1010,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */ #define MY_HOW_OFTEN_TO_ALARM 2 /* How often we want info on screen */ #define MY_HOW_OFTEN_TO_WRITE 1000 /* How often we want info on screen */ #ifdef HAVE_TIMESPEC_TS_SEC #ifndef set_timespec #define set_timespec(ABSTIME,SEC) \ { \ (ABSTIME).ts_sec=time(0) + (time_t) (SEC); \ (ABSTIME).ts_nsec=0; \ } #endif /* !set_timespec */ #ifndef set_timespec_nsec #define set_timespec_nsec(ABSTIME,NSEC) \ { \ ulonglong now= my_getsystime() + (NSEC/100); \ (ABSTIME).ts_sec= (now / ULL(10000000)); \ (ABSTIME).ts_nsec= (now % ULL(10000000) * 100 + ((NSEC) % 100)); \ } #endif /* !set_timespec_nsec */ #else #ifndef set_timespec #define set_timespec(ABSTIME,SEC) \ {\ struct timeval tv;\ gettimeofday(&tv,0);\ (ABSTIME).tv_sec=tv.tv_sec+(time_t) (SEC);\ (ABSTIME).tv_nsec=tv.tv_usec*1000;\ } #endif /* !set_timespec */ #ifndef set_timespec_nsec #define set_timespec_nsec(ABSTIME,NSEC) \ {\ ulonglong now= my_getsystime() + (NSEC/100); \ (ABSTIME).tv_sec= (time_t) (now / ULL(10000000)); \ (ABSTIME).tv_nsec= (long) (now % ULL(10000000) * 100 + ((NSEC) % 100)); \ } #endif /* !set_timespec_nsec */ #endif /* HAVE_TIMESPEC_TS_SEC */ /* Define-funktions for reading and storing in machine independent format Loading include/my_pthread.h +69 −10 Original line number Diff line number Diff line Loading @@ -69,14 +69,6 @@ typedef struct { #endif } pthread_cond_t; #ifndef OS2 struct timespec { /* For pthread_cond_timedwait() */ time_t tv_sec; long tv_nsec; }; #endif typedef int pthread_mutexattr_t; #define win_pthread_self my_thread_var->pthread_self #ifdef OS2 Loading @@ -87,6 +79,34 @@ typedef void * (_Optlink *pthread_handler)(void *); typedef void * (__cdecl *pthread_handler)(void *); #endif /* Struct and macros to be used in combination with the windows implementation of pthread_cond_timedwait */ /* Declare a union to make sure FILETIME is properly aligned so it can be used directly as a 64 bit value. The value stored is in 100ns units. */ union ft64 { FILETIME ft; __int64 i64; }; struct timespec { union ft64 start; /* The max timeout value in millisecond for pthread_cond_timedwait */ long timeout_msec; }; #define set_timespec(ABSTIME,SEC) { \ GetSystemTimeAsFileTime(&((ABSTIME).start.ft)); \ (ABSTIME).timeout_msec= (long)((SEC)*1000); \ } #define set_timespec_nsec(ABSTIME,NSEC) { \ GetSystemTimeAsFileTime(&((ABSTIME).start.ft)); \ (ABSTIME).timeout_msec= (long)((NSEC)/1000000); \ } void win_pthread_init(void); int win_pthread_setspecific(void *A,void *B,uint length); int pthread_create(pthread_t *,pthread_attr_t *,pthread_handler,void *); Loading Loading @@ -164,8 +184,6 @@ extern int pthread_mutex_destroy (pthread_mutex_t *); #define pthread_condattr_init(A) #define pthread_condattr_destroy(A) /*Irena: compiler does not like this: */ /*#define my_pthread_getprio(pthread_t thread_id) pthread_dummy(0) */ #define my_pthread_getprio(thread_id) pthread_dummy(0) #elif defined(HAVE_UNIXWARE7_THREADS) Loading Loading @@ -473,6 +491,47 @@ void my_pthread_attr_getstacksize(pthread_attr_t *attrib, size_t *size); int my_pthread_mutex_trylock(pthread_mutex_t *mutex); #endif /* The defines set_timespec and set_timespec_nsec should be used for calculating an absolute time at which pthread_cond_timedwait should timeout */ #ifdef HAVE_TIMESPEC_TS_SEC #ifndef set_timespec #define set_timespec(ABSTIME,SEC) \ { \ (ABSTIME).ts_sec=time(0) + (time_t) (SEC); \ (ABSTIME).ts_nsec=0; \ } #endif /* !set_timespec */ #ifndef set_timespec_nsec #define set_timespec_nsec(ABSTIME,NSEC) \ { \ ulonglong now= my_getsystime() + (NSEC/100); \ (ABSTIME).ts_sec= (now / ULL(10000000)); \ (ABSTIME).ts_nsec= (now % ULL(10000000) * 100 + ((NSEC) % 100)); \ } #endif /* !set_timespec_nsec */ #else #ifndef set_timespec #define set_timespec(ABSTIME,SEC) \ {\ struct timeval tv;\ gettimeofday(&tv,0);\ (ABSTIME).tv_sec=tv.tv_sec+(time_t) (SEC);\ (ABSTIME).tv_nsec=tv.tv_usec*1000;\ } #endif /* !set_timespec */ #ifndef set_timespec_nsec #define set_timespec_nsec(ABSTIME,NSEC) \ {\ ulonglong now= my_getsystime() + (NSEC/100); \ (ABSTIME).tv_sec= (time_t) (now / ULL(10000000)); \ (ABSTIME).tv_nsec= (long) (now % ULL(10000000) * 100 + ((NSEC) % 100)); \ } #endif /* !set_timespec_nsec */ #endif /* HAVE_TIMESPEC_TS_SEC */ /* safe_mutex adds checking to mutex for easier debugging */ #if defined(__NETWARE__) && !defined(SAFE_MUTEX_DETECT_DESTROY) Loading mysys/my_wincond.c +22 −6 Original line number Diff line number Diff line Loading @@ -54,14 +54,30 @@ int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, struct timespec *abstime) { struct _timeb curtime; int result; long timeout; _ftime(&curtime); timeout= ((long) (abstime->tv_sec - curtime.time)*1000L + (long)((abstime->tv_nsec/1000) - curtime.millitm)/1000L); if (timeout < 0) /* Some safety */ union ft64 now; GetSystemTimeAsFileTime(&now.ft); /* - subtract start time from current time(values are in 100ns units - convert to millisec by dividing with 10000 - subtract time since start from max timeout */ timeout= abstime->timeout_msec - (long)((now.i64 - abstime->start.i64) / 10000); /* Don't allow the timeout to be negative */ if (timeout < 0) timeout = 0L; /* Make sure the calucated time does not exceed original timeout value which could cause "wait for ever" if system time changes */ if (timeout > abstime->timeout_msec) timeout= abstime->timeout_msec; InterlockedIncrement(&cond->waiting); LeaveCriticalSection(mutex); result=WaitForSingleObject(cond->semaphore,timeout); Loading server-tools/instance-manager/guardian.cc +2 −3 Original line number Diff line number Diff line Loading @@ -228,8 +228,7 @@ void Guardian_thread::run() node= node->next; } timeout.tv_sec= time(NULL) + monitoring_interval; timeout.tv_nsec= 0; set_timespec(timeout, monitoring_interval); /* check the loop predicate before sleeping */ if (!(shutdown_requested && (!(guarded_instances)))) Loading Loading
include/config-win.h +0 −1 Original line number Diff line number Diff line Loading @@ -249,7 +249,6 @@ inline double ulonglong2double(ulonglong value) #define tell(A) _telli64(A) #endif #define set_timespec(ABSTIME,SEC) { (ABSTIME).tv_sec=time((time_t*)0) + (time_t) (SEC); (ABSTIME).tv_nsec=0; } #define STACK_DIRECTION -1 Loading
include/my_global.h +1 −35 Original line number Diff line number Diff line Loading @@ -1010,41 +1010,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */ #define MY_HOW_OFTEN_TO_ALARM 2 /* How often we want info on screen */ #define MY_HOW_OFTEN_TO_WRITE 1000 /* How often we want info on screen */ #ifdef HAVE_TIMESPEC_TS_SEC #ifndef set_timespec #define set_timespec(ABSTIME,SEC) \ { \ (ABSTIME).ts_sec=time(0) + (time_t) (SEC); \ (ABSTIME).ts_nsec=0; \ } #endif /* !set_timespec */ #ifndef set_timespec_nsec #define set_timespec_nsec(ABSTIME,NSEC) \ { \ ulonglong now= my_getsystime() + (NSEC/100); \ (ABSTIME).ts_sec= (now / ULL(10000000)); \ (ABSTIME).ts_nsec= (now % ULL(10000000) * 100 + ((NSEC) % 100)); \ } #endif /* !set_timespec_nsec */ #else #ifndef set_timespec #define set_timespec(ABSTIME,SEC) \ {\ struct timeval tv;\ gettimeofday(&tv,0);\ (ABSTIME).tv_sec=tv.tv_sec+(time_t) (SEC);\ (ABSTIME).tv_nsec=tv.tv_usec*1000;\ } #endif /* !set_timespec */ #ifndef set_timespec_nsec #define set_timespec_nsec(ABSTIME,NSEC) \ {\ ulonglong now= my_getsystime() + (NSEC/100); \ (ABSTIME).tv_sec= (time_t) (now / ULL(10000000)); \ (ABSTIME).tv_nsec= (long) (now % ULL(10000000) * 100 + ((NSEC) % 100)); \ } #endif /* !set_timespec_nsec */ #endif /* HAVE_TIMESPEC_TS_SEC */ /* Define-funktions for reading and storing in machine independent format Loading
include/my_pthread.h +69 −10 Original line number Diff line number Diff line Loading @@ -69,14 +69,6 @@ typedef struct { #endif } pthread_cond_t; #ifndef OS2 struct timespec { /* For pthread_cond_timedwait() */ time_t tv_sec; long tv_nsec; }; #endif typedef int pthread_mutexattr_t; #define win_pthread_self my_thread_var->pthread_self #ifdef OS2 Loading @@ -87,6 +79,34 @@ typedef void * (_Optlink *pthread_handler)(void *); typedef void * (__cdecl *pthread_handler)(void *); #endif /* Struct and macros to be used in combination with the windows implementation of pthread_cond_timedwait */ /* Declare a union to make sure FILETIME is properly aligned so it can be used directly as a 64 bit value. The value stored is in 100ns units. */ union ft64 { FILETIME ft; __int64 i64; }; struct timespec { union ft64 start; /* The max timeout value in millisecond for pthread_cond_timedwait */ long timeout_msec; }; #define set_timespec(ABSTIME,SEC) { \ GetSystemTimeAsFileTime(&((ABSTIME).start.ft)); \ (ABSTIME).timeout_msec= (long)((SEC)*1000); \ } #define set_timespec_nsec(ABSTIME,NSEC) { \ GetSystemTimeAsFileTime(&((ABSTIME).start.ft)); \ (ABSTIME).timeout_msec= (long)((NSEC)/1000000); \ } void win_pthread_init(void); int win_pthread_setspecific(void *A,void *B,uint length); int pthread_create(pthread_t *,pthread_attr_t *,pthread_handler,void *); Loading Loading @@ -164,8 +184,6 @@ extern int pthread_mutex_destroy (pthread_mutex_t *); #define pthread_condattr_init(A) #define pthread_condattr_destroy(A) /*Irena: compiler does not like this: */ /*#define my_pthread_getprio(pthread_t thread_id) pthread_dummy(0) */ #define my_pthread_getprio(thread_id) pthread_dummy(0) #elif defined(HAVE_UNIXWARE7_THREADS) Loading Loading @@ -473,6 +491,47 @@ void my_pthread_attr_getstacksize(pthread_attr_t *attrib, size_t *size); int my_pthread_mutex_trylock(pthread_mutex_t *mutex); #endif /* The defines set_timespec and set_timespec_nsec should be used for calculating an absolute time at which pthread_cond_timedwait should timeout */ #ifdef HAVE_TIMESPEC_TS_SEC #ifndef set_timespec #define set_timespec(ABSTIME,SEC) \ { \ (ABSTIME).ts_sec=time(0) + (time_t) (SEC); \ (ABSTIME).ts_nsec=0; \ } #endif /* !set_timespec */ #ifndef set_timespec_nsec #define set_timespec_nsec(ABSTIME,NSEC) \ { \ ulonglong now= my_getsystime() + (NSEC/100); \ (ABSTIME).ts_sec= (now / ULL(10000000)); \ (ABSTIME).ts_nsec= (now % ULL(10000000) * 100 + ((NSEC) % 100)); \ } #endif /* !set_timespec_nsec */ #else #ifndef set_timespec #define set_timespec(ABSTIME,SEC) \ {\ struct timeval tv;\ gettimeofday(&tv,0);\ (ABSTIME).tv_sec=tv.tv_sec+(time_t) (SEC);\ (ABSTIME).tv_nsec=tv.tv_usec*1000;\ } #endif /* !set_timespec */ #ifndef set_timespec_nsec #define set_timespec_nsec(ABSTIME,NSEC) \ {\ ulonglong now= my_getsystime() + (NSEC/100); \ (ABSTIME).tv_sec= (time_t) (now / ULL(10000000)); \ (ABSTIME).tv_nsec= (long) (now % ULL(10000000) * 100 + ((NSEC) % 100)); \ } #endif /* !set_timespec_nsec */ #endif /* HAVE_TIMESPEC_TS_SEC */ /* safe_mutex adds checking to mutex for easier debugging */ #if defined(__NETWARE__) && !defined(SAFE_MUTEX_DETECT_DESTROY) Loading
mysys/my_wincond.c +22 −6 Original line number Diff line number Diff line Loading @@ -54,14 +54,30 @@ int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, struct timespec *abstime) { struct _timeb curtime; int result; long timeout; _ftime(&curtime); timeout= ((long) (abstime->tv_sec - curtime.time)*1000L + (long)((abstime->tv_nsec/1000) - curtime.millitm)/1000L); if (timeout < 0) /* Some safety */ union ft64 now; GetSystemTimeAsFileTime(&now.ft); /* - subtract start time from current time(values are in 100ns units - convert to millisec by dividing with 10000 - subtract time since start from max timeout */ timeout= abstime->timeout_msec - (long)((now.i64 - abstime->start.i64) / 10000); /* Don't allow the timeout to be negative */ if (timeout < 0) timeout = 0L; /* Make sure the calucated time does not exceed original timeout value which could cause "wait for ever" if system time changes */ if (timeout > abstime->timeout_msec) timeout= abstime->timeout_msec; InterlockedIncrement(&cond->waiting); LeaveCriticalSection(mutex); result=WaitForSingleObject(cond->semaphore,timeout); Loading
server-tools/instance-manager/guardian.cc +2 −3 Original line number Diff line number Diff line Loading @@ -228,8 +228,7 @@ void Guardian_thread::run() node= node->next; } timeout.tv_sec= time(NULL) + monitoring_interval; timeout.tv_nsec= 0; set_timespec(timeout, monitoring_interval); /* check the loop predicate before sleeping */ if (!(shutdown_requested && (!(guarded_instances)))) Loading