aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2017-06-18 14:24:48 +0200
committerRiccardo Spagni <ric@spagni.net>2017-06-18 14:24:48 +0200
commit421a6d0340527fe23c1b10cfd20769555afffb1b (patch)
tree9eca389580131bdc593c613fc2fac4a8f0791524 /src
parentMerge pull request #2052 (diff)
parentAdd OSX background mining (diff)
downloadmonero-421a6d0340527fe23c1b10cfd20769555afffb1b.tar.xz
Merge pull request #2055
1b75ad91 Add OSX background mining (jethro)
Diffstat (limited to 'src')
-rw-r--r--src/cryptonote_basic/CMakeLists.txt6
-rw-r--r--src/cryptonote_basic/miner.cpp38
2 files changed, 43 insertions, 1 deletions
diff --git a/src/cryptonote_basic/CMakeLists.txt b/src/cryptonote_basic/CMakeLists.txt
index ec7aa251f..1503b277e 100644
--- a/src/cryptonote_basic/CMakeLists.txt
+++ b/src/cryptonote_basic/CMakeLists.txt
@@ -26,6 +26,12 @@
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+if(APPLE)
+ find_library(IOKIT_LIBRARY IOKit)
+ mark_as_advanced(IOKIT_LIBRARY)
+ list(APPEND EXTRA_LIBRARIES ${IOKIT_LIBRARY})
+endif()
+
set(cryptonote_basic_sources
account.cpp
checkpoints.cpp
diff --git a/src/cryptonote_basic/miner.cpp b/src/cryptonote_basic/miner.cpp
index eeb7b6094..6928a0ded 100644
--- a/src/cryptonote_basic/miner.cpp
+++ b/src/cryptonote_basic/miner.cpp
@@ -43,6 +43,16 @@
#include "storages/portable_storage_template_helper.h"
#include "boost/logic/tribool.hpp"
+#ifdef __APPLE__
+ #include <sys/times.h>
+ #include <IOKit/IOKitLib.h>
+ #include <IOKit/ps/IOPSKeys.h>
+ #include <IOKit/ps/IOPowerSources.h>
+ #include <mach/mach_host.h>
+ #include <AvailabilityMacros.h>
+ #include <TargetConditionals.h>
+#endif
+
#undef MONERO_DEFAULT_LOG_CATEGORY
#define MONERO_DEFAULT_LOG_CATEGORY "miner"
@@ -757,6 +767,23 @@ namespace cryptonote
return true;
+ #elif defined(__APPLE__)
+
+ mach_msg_type_number_t count;
+ kern_return_t status;
+ host_cpu_load_info_data_t stats;
+ count = HOST_CPU_LOAD_INFO_COUNT;
+ status = host_statistics(mach_host_self(), HOST_CPU_LOAD_INFO, (host_info_t)&stats, &count);
+ if(status != KERN_SUCCESS)
+ {
+ return false;
+ }
+
+ idle_time = stats.cpu_ticks[CPU_STATE_IDLE];
+ total_time = idle_time + stats.cpu_ticks[CPU_STATE_USER] + stats.cpu_ticks[CPU_STATE_SYSTEM];
+
+ return true;
+
#endif
return false; // unsupported systemm..
@@ -779,7 +806,7 @@ namespace cryptonote
return true;
}
- #elif defined(__linux__) && defined(_SC_CLK_TCK)
+ #elif (defined(__linux__) && defined(_SC_CLK_TCK)) || defined(__APPLE__)
struct tms tms;
if ( times(&tms) != (clock_t)-1 )
@@ -808,6 +835,15 @@ namespace cryptonote
return boost::logic::tribool(power_status.ACLineStatus != 1);
}
+ #elif defined(__APPLE__)
+
+ #if TARGET_OS_MAC && (!defined(MAC_OS_X_VERSION_MIN_REQUIRED) || MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7)
+ return boost::logic::tribool(IOPSGetTimeRemainingEstimate() != kIOPSTimeRemainingUnlimited);
+ #else
+ // iOS or OSX <10.7
+ return boost::logic::tribool(boost::logic::indeterminate);
+ #endif
+
#elif defined(__linux__)
// i've only tested on UBUNTU, these paths might be different on other systems