diff options
author | jethro <jtg@xtrabass.com> | 2017-05-28 13:10:04 -0400 |
---|---|---|
committer | jethro <jtg@xtrabass.com> | 2017-06-08 09:26:09 -0400 |
commit | 1b75ad91aafc217f4b83926daa3197f2d86b2e57 (patch) | |
tree | 7316d8b1fa421450de3b5b2f8d71faaeab18ef70 /src | |
parent | Merge pull request #2059 (diff) | |
download | monero-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 '')
-rw-r--r-- | src/cryptonote_basic/CMakeLists.txt | 6 | ||||
-rw-r--r-- | src/cryptonote_basic/miner.cpp | 38 |
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 |