Commit 8e0104c1 authored by Philip Trettner's avatar Philip Trettner

Merge commit '6b7b2f7b'

parents 0dc414b6 6b7b2f7b
Pipeline #1985 skipped
......@@ -6,9 +6,13 @@ file(GLOB_RECURSE HEADER_FILES "src/*.hh")
add_library(aion STATIC ${SOURCE_FILES} ${HEADER_FILES})
target_include_directories(aion PUBLIC src/)
target_compile_options(aion PRIVATE -Wall -Werror)
target_compile_options(aion PUBLIC
$<$<COMPILE_LANGUAGE:CXX>:-std=c++11>)
if (MSVC)
target_compile_options(aion PUBLIC /MP)
else()
target_compile_options(aion PRIVATE -Wall -Werror)
target_compile_options(aion PUBLIC
$<$<COMPILE_LANGUAGE:CXX>:-std=c++11>)
endif()
find_package(Qt5Core REQUIRED)
target_link_libraries(aion PRIVATE ${Qt5Core_LIBRARIES})
#include "Action.hh"
#include <sys/time.h>
using namespace aion;
// empty for now
......@@ -13,6 +13,7 @@
using namespace aion;
#ifdef _MSC_VER
#include <Windows.h>
#define AION_THREADLOCAL __declspec(thread)
#else
#define AION_THREADLOCAL __thread // GCC 4.7 has no thread_local yet
......@@ -25,10 +26,17 @@ std::mutex sLabelLock;
std::vector<ActionLabel *> sLabels;
std::vector<std::vector<ActionEntry> *> sEntriesPerThread;
#if _MSC_VER
LARGE_INTEGER sFrequency; // null init
#endif
void writeTime(ActionEntry &e)
{
#if _MSC_VER
#error not implemented
LARGE_INTEGER time;
QueryPerformanceCounter(&time);
e.secs = int32_t(time.QuadPart / sFrequency.QuadPart);
e.nsecs = int32_t((time.QuadPart % sFrequency.QuadPart) * 1000000000LL / sFrequency.QuadPart);
#else
struct timespec t;
clock_gettime(CLOCK_MONOTONIC, &t);
......@@ -76,6 +84,12 @@ ActionLabel::ActionLabel(const char *file, int line, const char *function, const
: mName(name), mFile(file), mLine(line), mFunction(function)
{
sLabelLock.lock();
#if _MSC_VER
if (sFrequency.QuadPart == 0)
QueryPerformanceFrequency(&sFrequency);
#endif
mIndex = sLabels.size();
sLabels.push_back(this);
if (!sEntries)
......
......@@ -38,7 +38,9 @@
#include <stdint.h>
#include <stddef.h>
#ifndef _MSC_VER
#include <sys/uio.h>
#endif
#define SNAPPY_MAJOR 1
#define SNAPPY_MINOR 1
......@@ -59,13 +61,18 @@ typedef uint32_t uint32;
typedef int64_t int64;
typedef uint64_t uint64;
#ifdef _MSC_VER
typedef int64_t ssize_t;
#endif
typedef std::string string;
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
TypeName(const TypeName&); \
void operator=(const TypeName&)
#if !1 // TODO
#ifdef _MSC_VER
// Windows does not have an iovec type, yet the concept is universally useful.
// It is simple to define it ourselves, so we put it inside our own namespace.
struct iovec {
......
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