aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_basic
diff options
context:
space:
mode:
authorjethro <jtg@xtrabass.com>2017-05-28 13:10:04 -0400
committerjethro <jtg@xtrabass.com>2017-06-08 09:26:09 -0400
commit1b75ad91aafc217f4b83926daa3197f2d86b2e57 (patch)
tree7316d8b1fa421450de3b5b2f8d71faaeab18ef70 /src/cryptonote_basic
parentMerge pull request #2059 (diff)
downloadmonero-1b75ad91aafc217f4b83926daa3197f2d86b2e57.tar.xz
Add OSX background mining
Implements miner::get_system_times, miner::get_process_time and miner::on_battery_power for OSX so that background mining works on OSX.
Diffstat (limited to 'src/cryptonote_basic')
-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