more fixes related to GH #1453

Conflicts:
	Foundation/include/Poco/AtomicCounter.h
This commit is contained in:
Guenter Obiltschnig
2016-12-06 21:47:39 +01:00
parent 710845f023
commit feedbbbea5
6 changed files with 61 additions and 15 deletions

View File

@@ -24,7 +24,17 @@
#if POCO_OS == POCO_OS_WINDOWS_NT #if POCO_OS == POCO_OS_WINDOWS_NT
#include "Poco/UnWindows.h" #include "Poco/UnWindows.h"
#elif POCO_OS == POCO_OS_MAC_OS_X #elif POCO_OS == POCO_OS_MAC_OS_X
<<<<<<< HEAD
#include <libkern/OSAtomic.h> #include <libkern/OSAtomic.h>
=======
#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_12 || __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 || __TV_OS_VERSION_MAX_ALLOWED >= __TVOS_10_0 || __WATCH_OS_VERSION_MAX_ALLOWED >= __WATCHOS_3_0
#ifndef POCO_HAVE_STD_ATOMICS
#define POCO_HAVE_STD_ATOMICS
#endif
#else
#include <libkern/OSAtomic.h>
#endif
>>>>>>> c8aa273... more fixes related to GH #1453
#elif ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 2) || __GNUC__ > 4) && (defined(__x86_64__) || defined(__i386__)) #elif ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 2) || __GNUC__ > 4) && (defined(__x86_64__) || defined(__i386__))
#if !defined(POCO_HAVE_GCC_ATOMICS) && !defined(POCO_NO_GCC_ATOMICS) #if !defined(POCO_HAVE_GCC_ATOMICS) && !defined(POCO_NO_GCC_ATOMICS)
#define POCO_HAVE_GCC_ATOMICS #define POCO_HAVE_GCC_ATOMICS

View File

@@ -34,6 +34,15 @@
#include <limits> #include <limits>
#ifndef POCO_HAVE_CLOCK_GETTIME
#if (defined(_POSIX_TIMERS) && defined(CLOCK_REALTIME)) || defined(POCO_VXWORKS) || defined(__QNX__)
#ifndef __APPLE__ // See GitHub issue #1453 - not available before Mac OS 10.12/iOS 10
#define POCO_HAVE_CLOCK_GETTIME
#endif
#endif
#endif
namespace Poco { namespace Poco {
@@ -120,7 +129,7 @@ void Clock::update()
#endif #endif
_clock = ClockVal(ts.tv_sec)*resolution() + ts.tv_nsec/1000; _clock = ClockVal(ts.tv_sec)*resolution() + ts.tv_nsec/1000;
#elif (defined(_POSIX_TIMERS) && defined(_POSIX_MONOTONIC_CLOCK)) || defined(__QNX__) #elif defined(POCO_HAVE_CLOCK_GETTIME)
struct timespec ts; struct timespec ts;
if (clock_gettime(CLOCK_MONOTONIC, &ts)) if (clock_gettime(CLOCK_MONOTONIC, &ts))

View File

@@ -31,9 +31,18 @@
// availability of non-standard pthread_cond_timedwait_monotonic(). // availability of non-standard pthread_cond_timedwait_monotonic().
// //
#ifndef POCO_HAVE_MONOTONIC_PTHREAD_COND_TIMEDWAIT #ifndef POCO_HAVE_MONOTONIC_PTHREAD_COND_TIMEDWAIT
#if (defined(__linux__) || defined(__QNX__)) && !(defined(__ANDROID__) && defined(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)) #if (defined(__linux__) || defined(__QNX__)) && !(defined(__ANDROID__) && defined(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC))
#define POCO_HAVE_MONOTONIC_PTHREAD_COND_TIMEDWAIT 1 #define POCO_HAVE_MONOTONIC_PTHREAD_COND_TIMEDWAIT 1
#endif
#endif #endif
#ifndef POCO_HAVE_CLOCK_GETTIME
#if (defined(_POSIX_TIMERS) && defined(CLOCK_REALTIME)) || defined(POCO_VXWORKS) || defined(__QNX__)
#ifndef __APPLE__ // See GitHub issue #1453 - not available before Mac OS 10.12/iOS 10
#define POCO_HAVE_CLOCK_GETTIME
#endif
#endif
#endif #endif
@@ -127,7 +136,7 @@ bool EventImpl::waitImpl(long milliseconds)
abstime.tv_nsec -= 1000000000; abstime.tv_nsec -= 1000000000;
abstime.tv_sec++; abstime.tv_sec++;
} }
#elif (defined(_POSIX_TIMERS) && defined(CLOCK_REALTIME)) || defined(POCO_VXWORKS) #elif defined(POCO_HAVE_CLOCK_GETTIME)
clock_gettime(CLOCK_REALTIME, &abstime); clock_gettime(CLOCK_REALTIME, &abstime);
abstime.tv_sec += milliseconds / 1000; abstime.tv_sec += milliseconds / 1000;
abstime.tv_nsec += (milliseconds % 1000)*1000000; abstime.tv_nsec += (milliseconds % 1000)*1000000;

View File

@@ -29,9 +29,18 @@
#if defined(_POSIX_TIMEOUTS) && (_POSIX_TIMEOUTS - 200112L) >= 0L #if defined(_POSIX_TIMEOUTS) && (_POSIX_TIMEOUTS - 200112L) >= 0L
#if defined(_POSIX_THREADS) && (_POSIX_THREADS - 200112L) >= 0L #if defined(_POSIX_THREADS) && (_POSIX_THREADS - 200112L) >= 0L
#define POCO_HAVE_MUTEX_TIMEOUT #define POCO_HAVE_MUTEX_TIMEOUT
#endif
#endif #endif
#ifndef POCO_HAVE_CLOCK_GETTIME
#if (defined(_POSIX_TIMERS) && defined(CLOCK_REALTIME)) || defined(POCO_VXWORKS) || defined(__QNX__)
#ifndef __APPLE__ // See GitHub issue #1453 - not available before Mac OS 10.12/iOS 10
#define POCO_HAVE_CLOCK_GETTIME
#endif
#endif
#endif #endif
@@ -73,7 +82,7 @@ bool MutexImpl::tryLockImpl(long milliseconds)
{ {
#if defined(POCO_HAVE_MUTEX_TIMEOUT) #if defined(POCO_HAVE_MUTEX_TIMEOUT)
struct timespec abstime; struct timespec abstime;
#if defined(_POSIX_TIMERS) && defined(CLOCK_REALTIME) #if defined(POCO_HAVE_CLOCK_GETTIME)
clock_gettime(CLOCK_REALTIME, &abstime); clock_gettime(CLOCK_REALTIME, &abstime);
abstime.tv_sec += milliseconds / 1000; abstime.tv_sec += milliseconds / 1000;
abstime.tv_nsec += (milliseconds % 1000)*1000000; abstime.tv_nsec += (milliseconds % 1000)*1000000;

View File

@@ -31,9 +31,18 @@
// availability of non-standard pthread_cond_timedwait_monotonic(). // availability of non-standard pthread_cond_timedwait_monotonic().
// //
#ifndef POCO_HAVE_MONOTONIC_PTHREAD_COND_TIMEDWAIT #ifndef POCO_HAVE_MONOTONIC_PTHREAD_COND_TIMEDWAIT
#if (defined(__linux__) || defined(__QNX__)) && !(defined(__ANDROID__) && defined(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)) #if (defined(__linux__) || defined(__QNX__)) && !(defined(__ANDROID__) && defined(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC))
#define POCO_HAVE_MONOTONIC_PTHREAD_COND_TIMEDWAIT 1 #define POCO_HAVE_MONOTONIC_PTHREAD_COND_TIMEDWAIT 1
#endif
#endif #endif
#ifndef POCO_HAVE_CLOCK_GETTIME
#if (defined(_POSIX_TIMERS) && defined(CLOCK_REALTIME)) || defined(POCO_VXWORKS) || defined(__QNX__)
#ifndef __APPLE__ // See GitHub issue #1453 - not available before Mac OS 10.12/iOS 10
#define POCO_HAVE_CLOCK_GETTIME
#endif
#endif
#endif #endif
@@ -127,7 +136,7 @@ bool SemaphoreImpl::waitImpl(long milliseconds)
abstime.tv_nsec -= 1000000000; abstime.tv_nsec -= 1000000000;
abstime.tv_sec++; abstime.tv_sec++;
} }
#elif (defined(_POSIX_TIMERS) && defined(CLOCK_REALTIME)) || defined(POCO_VXWORKS) #elif defined(POCO_HAVE_CLOCK_GETTIME)
clock_gettime(CLOCK_REALTIME, &abstime); clock_gettime(CLOCK_REALTIME, &abstime);
abstime.tv_sec += milliseconds / 1000; abstime.tv_sec += milliseconds / 1000;
abstime.tv_nsec += (milliseconds % 1000)*1000000; abstime.tv_nsec += (milliseconds % 1000)*1000000;

View File

@@ -40,11 +40,11 @@
#ifndef POCO_HAVE_CLOCK_GETTIME #ifndef POCO_HAVE_CLOCK_GETTIME
#if (defined(_POSIX_TIMERS) && defined(CLOCK_REALTIME)) || defined(POCO_VXWORKS) || defined(__QNX__) #if (defined(_POSIX_TIMERS) && defined(CLOCK_REALTIME)) || defined(POCO_VXWORKS) || defined(__QNX__)
#ifndef __APPLE__ // See GitHub issue #1453 - not available before Mac OS 10.12/iOS 10 #ifndef __APPLE__ // See GitHub issue #1453 - not available before Mac OS 10.12/iOS 10
#define POCO_HAVE_CLOCK_GETTIME #define POCO_HAVE_CLOCK_GETTIME
#endif #endif
#endif #endif
#endif #endif