| Index: third_party/google_benchmark/src/sleep.cc
|
| diff --git a/third_party/google_benchmark/src/sleep.cc b/third_party/google_benchmark/src/sleep.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..54aa04a422472d1ce09a59c1d63c43b469e43cff
|
| --- /dev/null
|
| +++ b/third_party/google_benchmark/src/sleep.cc
|
| @@ -0,0 +1,51 @@
|
| +// Copyright 2015 Google Inc. All rights reserved.
|
| +//
|
| +// Licensed under the Apache License, Version 2.0 (the "License");
|
| +// you may not use this file except in compliance with the License.
|
| +// You may obtain a copy of the License at
|
| +//
|
| +// http://www.apache.org/licenses/LICENSE-2.0
|
| +//
|
| +// Unless required by applicable law or agreed to in writing, software
|
| +// distributed under the License is distributed on an "AS IS" BASIS,
|
| +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| +// See the License for the specific language governing permissions and
|
| +// limitations under the License.
|
| +
|
| +#include "sleep.h"
|
| +
|
| +#include <cerrno>
|
| +#include <cstdlib>
|
| +#include <ctime>
|
| +
|
| +#include "internal_macros.h"
|
| +
|
| +#ifdef BENCHMARK_OS_WINDOWS
|
| +#include <Windows.h>
|
| +#endif
|
| +
|
| +namespace benchmark {
|
| +#ifdef BENCHMARK_OS_WINDOWS
|
| +// Window's Sleep takes milliseconds argument.
|
| +void SleepForMilliseconds(int milliseconds) { Sleep(milliseconds); }
|
| +void SleepForSeconds(double seconds) {
|
| + SleepForMilliseconds(static_cast<int>(kNumMillisPerSecond * seconds));
|
| +}
|
| +#else // BENCHMARK_OS_WINDOWS
|
| +void SleepForMicroseconds(int microseconds) {
|
| + struct timespec sleep_time;
|
| + sleep_time.tv_sec = microseconds / kNumMicrosPerSecond;
|
| + sleep_time.tv_nsec = (microseconds % kNumMicrosPerSecond) * kNumNanosPerMicro;
|
| + while (nanosleep(&sleep_time, &sleep_time) != 0 && errno == EINTR)
|
| + ; // Ignore signals and wait for the full interval to elapse.
|
| +}
|
| +
|
| +void SleepForMilliseconds(int milliseconds) {
|
| + SleepForMicroseconds(milliseconds * kNumMicrosPerMilli);
|
| +}
|
| +
|
| +void SleepForSeconds(double seconds) {
|
| + SleepForMicroseconds(static_cast<int>(seconds * kNumMicrosPerSecond));
|
| +}
|
| +#endif // BENCHMARK_OS_WINDOWS
|
| +} // end namespace benchmark
|
|
|