From 555eee8236d0476e7eed132cf3474f1ba1532175 Mon Sep 17 00:00:00 2001 From: XMRig Date: Wed, 14 Jun 2017 20:51:47 +0300 Subject: [PATCH] Add Cpu_mac.cpp --- CMakeLists.txt | 2 +- src/Cpu_mac.cpp | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 src/Cpu_mac.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 126c95805..92b075ebd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,7 +88,7 @@ if (WIN32) elseif (APPLE) set(SOURCES_OS src/App_unix.cpp - src/Cpu_unix.cpp + src/Cpu_mac.cpp src/Mem_unix.cpp src/net/Network_mac.cpp ) diff --git a/src/Cpu_mac.cpp b/src/Cpu_mac.cpp new file mode 100644 index 000000000..1b7c6b0a8 --- /dev/null +++ b/src/Cpu_mac.cpp @@ -0,0 +1,59 @@ +/* XMRig + * Copyright 2010 Jeff Garzik + * Copyright 2012-2014 pooler + * Copyright 2014 Lucas Jones + * Copyright 2014-2016 Wolf9466 + * Copyright 2016 Jay D Dee + * Copyright 2016-2017 XMRig + * + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include +#include +#include + + +#include "Cpu.h" + + +void Cpu::init() +{ +# ifdef XMRIG_NO_LIBCPUID + m_totalThreads = sysconf(_SC_NPROCESSORS_CONF); +# endif + + initCommon(); +} + + +void Cpu::setAffinity(int id, unsigned long mask) +{ + cpu_set_t set; + CPU_ZERO(&set); + + for (int i = 0; i < m_totalThreads; i++) { + if (mask & (1UL << i)) { + CPU_SET(i, &set); + } + } + + if (id == -1) { + sched_setaffinity(0, sizeof(&set), &set); + } else { + pthread_setaffinity_np(pthread_self(), sizeof(&set), &set); + } +}