GIF89a; EcchiShell v1.0
//proc/self/root/usr/include/mysql/

tv.i64 - now.i64) / 10000; /* Don't allow the timeout to be negative */ if (millis < 0) return 0; /* Make sure the calculated timeout does not exceed original timeout value which could cause "wait for ever" if system time changes */ if (millis > abstime->max_timeout_msec) millis= abstime->max_timeout_msec; if (millis > UINT_MAX) millis= UINT_MAX; return (DWORD)millis; #else /* Convert timespec to millis and subtract current time. my_getsystime() returns time in 100 ns units. */ ulonglong future= abstime->tv_sec * 1000 + abstime->tv_nsec / 1000000; ulonglong now= my_getsystime() / 10000; /* Don't allow the timeout to be negative. */ if (future < now) return 0; return (DWORD)(future - now); #endif } #endif /* _WIN32 */ static inline int native_cond_init(native_cond_t *cond) { #ifdef _WIN32 InitializeConditionVariable(cond); return 0; #else /* pthread_condattr_t is not used in MySQL */ return pthread_cond_init(cond, NULL); #endif } static inline int native_cond_destroy(native_cond_t *cond) { #ifdef _WIN32 return 0; /* no destroy function */ #else return pthread_cond_destroy(cond); #endif } static inline int native_cond_timedwait(native_cond_t *cond, native_mutex_t *mutex, const struct timespec *abstime) { #ifdef _WIN32 DWORD timeout= get_milliseconds(abstime); if (!SleepConditionVariableCS(cond, mutex, timeout)) return ETIMEDOUT; return 0; #else return pthread_cond_timedwait(cond, mutex, abstime); #endif } static inline int native_cond_wait(native_cond_t *cond, native_mutex_t *mutex) { #ifdef _WIN32 if (!SleepConditionVariableCS(cond, mutex, INFINITE)) return ETIMEDOUT; return 0; #else return pthread_cond_wait(cond, mutex); #endif } static inline int native_cond_signal(native_cond_t *cond) { #ifdef _WIN32 WakeConditionVariable(cond); return 0; #else return pthread_cond_signal(cond); #endif } static inline int native_cond_broadcast(native_cond_t *cond) { #ifdef _WIN32 WakeAllConditionVariable(cond); return 0; #else return pthread_cond_broadcast(cond); #endif } #ifdef SAFE_MUTEX int safe_cond_wait(native_cond_t *cond, my_mutex_t *mp, const char *file, uint line); int safe_cond_timedwait(native_cond_t *cond, my_mutex_t *mp, const struct timespec *abstime, const char *file, uint line); #endif static inline int my_cond_timedwait(native_cond_t *cond, my_mutex_t *mp, const struct timespec *abstime #ifdef SAFE_MUTEX , const char *file, uint line #endif ) { #ifdef SAFE_MUTEX return safe_cond_timedwait(cond, mp, abstime, file, line); #else return native_cond_timedwait(cond, mp, abstime); #endif } static inline int my_cond_wait(native_cond_t *cond, my_mutex_t *mp #ifdef SAFE_MUTEX , const char *file, uint line #endif ) { #ifdef SAFE_MUTEX return safe_cond_wait(cond, mp, file, line); #else return native_cond_wait(cond, mp); #endif } C_MODE_END #endif /* THR_COND_INCLUDED */