@@ -288,6 +288,9 @@ class Miner;
288
288
class FarmFace
289
289
{
290
290
public:
291
+ FarmFace () { m_this = this ; }
292
+ static FarmFace& f () { return *m_this; };
293
+
291
294
virtual ~FarmFace () = default ;
292
295
virtual unsigned get_tstart () = 0;
293
296
virtual unsigned get_tstop () = 0;
@@ -300,6 +303,9 @@ class FarmFace
300
303
virtual void failedSolution (unsigned _miner_index) = 0;
301
304
virtual uint64_t get_nonce_scrambler () = 0;
302
305
virtual unsigned get_segment_width () = 0;
306
+
307
+ private:
308
+ static FarmFace* m_this;
303
309
};
304
310
305
311
/* *
@@ -312,8 +318,8 @@ class FarmFace
312
318
class Miner : public Worker
313
319
{
314
320
public:
315
- Miner (std::string const & _name, FarmFace& _farm, size_t _index)
316
- : Worker(_name + std::to_string(_index)), m_index(_index), m_farmFace(_farm)
321
+ Miner (std::string const & _name, size_t _index)
322
+ : Worker(_name + std::to_string(_index)), m_index(_index)
317
323
{
318
324
}
319
325
@@ -337,8 +343,8 @@ class Miner : public Worker
337
343
// return farm.get_nonce_scrambler() + ((uint64_t) m_index << 40);
338
344
339
345
// Now segment size is adjustable
340
- m_work.startNonce = m_farmFace .get_nonce_scrambler () +
341
- ((uint64_t )m_index << m_farmFace .get_segment_width ());
346
+ m_work.startNonce = FarmFace::f () .get_nonce_scrambler () +
347
+ ((uint64_t )m_index << FarmFace::f () .get_segment_width ());
342
348
}
343
349
344
350
if (g_logOptions & LOG_SWITCH_TIME)
@@ -355,14 +361,15 @@ class Miner : public Worker
355
361
{
356
362
/*
357
363
cnote << "Setting temp" << temperature << " for gpu" << m_index <<
358
- " tstop=" << m_farmFace.get_tstop() << " tstart=" << m_farmFace.get_tstart();
364
+ " tstop=" << FarmFace::f().get_tstop() << " tstart=" <<
365
+ FarmFace::f().get_tstart();
359
366
*/
360
367
bool _wait_for_tstart_temp = (m_mining_paused.get_mining_paused () &
361
368
MinigPauseReason::MINING_PAUSED_WAIT_FOR_T_START) ==
362
369
MinigPauseReason::MINING_PAUSED_WAIT_FOR_T_START;
363
370
if (!_wait_for_tstart_temp)
364
371
{
365
- unsigned tstop = m_farmFace .get_tstop ();
372
+ unsigned tstop = FarmFace::f () .get_tstop ();
366
373
if (tstop && temperature >= tstop)
367
374
{
368
375
cwarn << " Pause mining on gpu" << m_index << " : temperature " << temperature
@@ -372,7 +379,7 @@ class Miner : public Worker
372
379
}
373
380
else
374
381
{
375
- unsigned tstart = m_farmFace .get_tstart ();
382
+ unsigned tstart = FarmFace::f () .get_tstart ();
376
383
if (tstart && temperature <= tstart)
377
384
{
378
385
cnote << " (Re)starting mining on gpu" << m_index << " : temperature " << temperature
@@ -445,7 +452,6 @@ class Miner : public Worker
445
452
static bool s_noeval;
446
453
447
454
const size_t m_index = 0 ;
448
- FarmFace& m_farmFace;
449
455
std::chrono::steady_clock::time_point m_workSwitchStart;
450
456
HwMonitorInfo m_hwmoninfo;
451
457
0 commit comments