diff --git a/libethash-cl/ethash_cl_miner.cpp b/libethash-cl/ethash_cl_miner.cpp index 587c92598..e8077598a 100644 --- a/libethash-cl/ethash_cl_miner.cpp +++ b/libethash-cl/ethash_cl_miner.cpp @@ -32,6 +32,8 @@ #include #include #include +#include +#include #include #include #include @@ -56,7 +58,22 @@ unsigned const ethash_cl_miner::c_defaultGlobalWorkSizeMultiplier = 4096; // * C unsigned const ethash_cl_miner::c_defaultMSPerBatch = 0; // TODO: If at any point we can use libdevcore in here then we should switch to using a LogChannel +#if defined(_WIN32) +extern "C" __declspec(dllimport) void __stdcall OutputDebugStringA(const char* lpOutputString); +static std::atomic_flag s_logSpin = ATOMIC_FLAG_INIT; +#define ETHCL_LOG(_contents) \ + do \ + { \ + std::stringstream ss; \ + ss << _contents; \ + while (s_logSpin.test_and_set(std::memory_order_acquire)) {} \ + OutputDebugStringA(ss.str().c_str()); \ + cerr << ss.str() << endl << flush; \ + s_logSpin.clear(std::memory_order_release); \ + } while (false) +#else #define ETHCL_LOG(_contents) cout << "[OPENCL]:" << _contents << endl +#endif // Types of OpenCL devices we are interested in #define ETHCL_QUERIED_DEVICE_TYPES (CL_DEVICE_TYPE_GPU | CL_DEVICE_TYPE_ACCELERATOR)