diff options
author | kchoi <code.kchoi@gmail.com> | 2016-09-07 14:12:22 -0700 |
---|---|---|
committer | Jan Vorlicek <janvorli@microsoft.com> | 2016-09-07 23:12:22 +0200 |
commit | 4149bd2070e0a8beec6dedb238e6fd832a39611b (patch) | |
tree | 7aa9401597ad87d4d1d902643439af1614458b99 /src/pal/tests/palsuite/threading/Sleep/test1/Sleep.cpp | |
parent | 09133905fce3b541702044b6d2bbe942a6b40155 (diff) | |
download | coreclr-4149bd2070e0a8beec6dedb238e6fd832a39611b.tar.gz coreclr-4149bd2070e0a8beec6dedb238e6fd832a39611b.tar.bz2 coreclr-4149bd2070e0a8beec6dedb238e6fd832a39611b.zip |
Fix strict aliasing violation from conditional typedef of wchar_t by building entire project as C++ for Unix (#6801)
Enable building CoreCLR as C++ project on Unix
This series of patches fixes the strict aliasing violation from
the conditional typedef of wchar_t in src/pal/inc/pal_char16.h:40
* rename c files to cpp
* modify all cmake files to change .c files to .cpp
* apply c++ linkage to templates
Diffstat (limited to 'src/pal/tests/palsuite/threading/Sleep/test1/Sleep.cpp')
-rw-r--r-- | src/pal/tests/palsuite/threading/Sleep/test1/Sleep.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/pal/tests/palsuite/threading/Sleep/test1/Sleep.cpp b/src/pal/tests/palsuite/threading/Sleep/test1/Sleep.cpp new file mode 100644 index 0000000000..f7f7c91730 --- /dev/null +++ b/src/pal/tests/palsuite/threading/Sleep/test1/Sleep.cpp @@ -0,0 +1,80 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +/*============================================================ +** +** Source: Sleep.c +** +** Purpose: Test to establish whether the Sleep function stops the thread from +** executing for the specified times. +** +** Dependencies: GetSystemTime +** Fail +** Trace +** + +** +**=========================================================*/ + +#include <palsuite.h> + +DWORD SleepTimes[] = +{ + 0, + 50, + 100, + 500, + 2000 +}; + +/* Milliseconds of error which are acceptable Function execution time, etc. */ +DWORD AcceptableTimeError = 150; + +int __cdecl main( int argc, char **argv ) +{ + UINT64 OldTimeStamp; + UINT64 NewTimeStamp; + DWORD MaxDelta; + DWORD TimeDelta; + DWORD i; + + if(0 != (PAL_Initialize(argc, argv))) + { + return ( FAIL ); + } + + LARGE_INTEGER performanceFrequency; + if (!QueryPerformanceFrequency(&performanceFrequency)) + { + return FAIL; + } + + for( i = 0; i < sizeof(SleepTimes) / sizeof(DWORD); i++) + { + OldTimeStamp = GetHighPrecisionTimeStamp(performanceFrequency); + Sleep(SleepTimes[i]); + NewTimeStamp = GetHighPrecisionTimeStamp(performanceFrequency); + + TimeDelta = NewTimeStamp - OldTimeStamp; + + /* For longer intervals use a 10 percent tolerance */ + if ((SleepTimes[i] * 0.1) > AcceptableTimeError) + { + MaxDelta = SleepTimes[i] + (DWORD)(SleepTimes[i] * 0.1); + } + else + { + MaxDelta = SleepTimes[i] + AcceptableTimeError; + } + + if ( TimeDelta<SleepTimes[i] || TimeDelta>MaxDelta ) + { + Fail("The sleep function slept for %d ms when it should have " + "slept for %d ms\n", TimeDelta, SleepTimes[i]); + } + } + PAL_Terminate(); + return ( PASS ); + +} |