Commit 398424e8 authored by Christopher Dykes's avatar Christopher Dykes Committed by Facebook Github Bot 7

Create the sys/time.h portability header

Summary: Windows doesn't have it.

Reviewed By: yfeldblum

Differential Revision: D2979215

fb-gh-sync-id: 030bdcaa44deb18834903705a26369ce0b13abc6
shipit-source-id: 030bdcaa44deb18834903705a26369ce0b13abc6
parent 705e7518
...@@ -268,6 +268,7 @@ nobase_follyinclude_HEADERS = \ ...@@ -268,6 +268,7 @@ nobase_follyinclude_HEADERS = \
portability/Environment.h \ portability/Environment.h \
portability/GFlags.h \ portability/GFlags.h \
portability/Syscall.h \ portability/Syscall.h \
portability/SysTime.h \
portability/SysUio.h \ portability/SysUio.h \
Preprocessor.h \ Preprocessor.h \
ProducerConsumerQueue.h \ ProducerConsumerQueue.h \
...@@ -393,6 +394,7 @@ libfolly_la_SOURCES = \ ...@@ -393,6 +394,7 @@ libfolly_la_SOURCES = \
MacAddress.cpp \ MacAddress.cpp \
MemoryMapping.cpp \ MemoryMapping.cpp \
portability/Environment.cpp \ portability/Environment.cpp \
portability/SysTime.cpp \
Random.cpp \ Random.cpp \
SafeAssert.cpp \ SafeAssert.cpp \
SharedMutex.cpp \ SharedMutex.cpp \
......
/*
* Copyright 2016 Facebook, Inc.
*
* 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 <folly/portability/SysTime.h>
#ifdef _WIN32
#include <cstdint>
#include <Windows.h>
extern "C" int gettimeofday(timeval* tv, timezone*) {
constexpr auto posixWinFtOffset = 116444736000000000ULL;
if (tv) {
FILETIME ft;
GetSystemTimeAsFileTime(&ft);
uint64_t ns = *(uint64_t*)&ft;
tv->tv_usec = (long)((ns / 10ULL) % 1000000ULL);
tv->tv_sec = (long)((ns - posixWinFtOffset) / 10000000ULL);
}
return 0;
}
#endif
/*
* Copyright 2016 Facebook, Inc.
*
* 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.
*/
#pragma once
#ifndef _WIN32
#include <sys/time.h>
#else
// Someone decided this was a good place to define timeval.....
#include <WinSock2.h>
struct timezone {
int tz_minuteswest;
int tz_dsttime;
};
extern "C" int gettimeofday(timeval* tv, timezone*);
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment