Browse Source

Timersub is supported on all build platforms so do away with custom timerval_subtract function.

nfactor-troky
ckolivas 12 years ago
parent
commit
1e9421475c
  1. 17
      cgminer.c
  2. 2
      driver-modminer.c
  3. 3
      miner.h
  4. 29
      util.c

17
cgminer.c

@ -3368,8 +3368,9 @@ static void hashmeter(int thr_id, struct timeval *diff, @@ -3368,8 +3368,9 @@ static void hashmeter(int thr_id, struct timeval *diff,
if (want_per_device_stats) {
struct timeval now;
struct timeval elapsed;
gettimeofday(&now, NULL);
timeval_subtract(&elapsed, &now, &thr->cgpu->last_message_tv);
timersub(&now, &thr->cgpu->last_message_tv, &elapsed);
if (opt_log_interval <= elapsed.tv_sec) {
struct cgpu_info *cgpu = thr->cgpu;
char logline[255];
@ -3389,7 +3390,7 @@ static void hashmeter(int thr_id, struct timeval *diff, @@ -3389,7 +3390,7 @@ static void hashmeter(int thr_id, struct timeval *diff,
/* Totals are updated by all threads so can race without locking */
mutex_lock(&hash_lock);
gettimeofday(&temp_tv_end, NULL);
timeval_subtract(&total_diff, &temp_tv_end, &total_tv_end);
timersub(&temp_tv_end, &total_tv_end, &total_diff);
total_mhashes_done += local_mhashes;
local_mhashes_done += local_mhashes;
@ -3403,7 +3404,7 @@ static void hashmeter(int thr_id, struct timeval *diff, @@ -3403,7 +3404,7 @@ static void hashmeter(int thr_id, struct timeval *diff,
decay_time(&rolling, local_mhashes_done / local_secs);
global_hashrate = roundl(rolling) * 1000000;
timeval_subtract(&total_diff, &total_tv_end, &total_tv_start);
timersub(&total_tv_end, &total_tv_start, &total_diff);
total_secs = (double)total_diff.tv_sec +
((double)total_diff.tv_usec / 1000000.0);
@ -3957,7 +3958,7 @@ void *miner_thread(void *userdata) @@ -3957,7 +3958,7 @@ void *miner_thread(void *userdata)
/* Try to cycle approximately 5 times before each log update */
const long cycle = opt_log_interval / 5 ? : 1;
struct timeval tv_start, tv_end, tv_workstart, tv_lastupdate;
struct timeval diff, sdiff, wdiff;
struct timeval diff, sdiff, wdiff = {0, 0};
uint32_t max_nonce = api->can_limit_work ? api->can_limit_work(mythr) : 0xffffffff;
unsigned long long hashes_done = 0;
unsigned long long hashes;
@ -4074,7 +4075,7 @@ void *miner_thread(void *userdata) @@ -4074,7 +4075,7 @@ void *miner_thread(void *userdata)
cgpu->max_hashes = hashes;
gettimeofday(&tv_end, NULL);
timeval_subtract(&diff, &tv_end, &tv_start);
timersub(&tv_end, &tv_start, &diff);
sdiff.tv_sec += diff.tv_sec;
sdiff.tv_usec += diff.tv_usec;
if (sdiff.tv_usec > 1000000) {
@ -4082,7 +4083,7 @@ void *miner_thread(void *userdata) @@ -4082,7 +4083,7 @@ void *miner_thread(void *userdata)
sdiff.tv_usec -= 1000000;
}
timeval_subtract(&wdiff, &tv_end, &tv_workstart);
timersub(&tv_end, &tv_workstart, &wdiff);
if (!requested) {
if (wdiff.tv_sec > request_interval || work->blk.nonce > request_nonce) {
thread_reportout(mythr);
@ -4118,7 +4119,7 @@ void *miner_thread(void *userdata) @@ -4118,7 +4119,7 @@ void *miner_thread(void *userdata)
max_nonce = max_nonce * 0x400 / (((cycle * 1000000) + sdiff.tv_usec) / (cycle * 1000000 / 0x400));
}
timeval_subtract(&diff, &tv_end, &tv_lastupdate);
timersub(&tv_end, &tv_lastupdate, &diff);
if (diff.tv_sec >= opt_log_interval) {
hashmeter(thr_id, &diff, hashes_done);
hashes_done = 0;
@ -4588,7 +4589,7 @@ static void print_summary(void) @@ -4588,7 +4589,7 @@ static void print_summary(void)
int hours, mins, secs, i;
double utility, efficiency = 0.0;
timeval_subtract(&diff, &total_tv_end, &total_tv_start);
timersub(&total_tv_end, &total_tv_start, &diff);
hours = diff.tv_sec / 3600;
mins = (diff.tv_sec % 3600) / 60;
secs = diff.tv_sec % 60;

2
driver-modminer.c

@ -466,7 +466,7 @@ modminer_process_results(struct thr_info*thr) @@ -466,7 +466,7 @@ modminer_process_results(struct thr_info*thr)
struct timeval tv_workend, elapsed;
gettimeofday(&tv_workend, NULL);
timeval_subtract(&elapsed, &tv_workend, &state->tv_workstart);
timersub(&tv_workend, &state->tv_workstart, &elapsed);
uint64_t hashes = (uint64_t)state->clock * (((uint64_t)elapsed.tv_sec * 1000000) + elapsed.tv_usec);
if (hashes > 0xffffffff)

3
miner.h

@ -550,9 +550,6 @@ typedef bool (*sha256_func)(int thr_id, const unsigned char *pmidstate, @@ -550,9 +550,6 @@ typedef bool (*sha256_func)(int thr_id, const unsigned char *pmidstate,
uint32_t *last_nonce,
uint32_t nonce);
extern int
timeval_subtract (struct timeval *result, struct timeval *x, struct timeval *y);
extern bool fulltest(const unsigned char *hash, const unsigned char *target);
extern int opt_scantime;

29
util.c

@ -491,35 +491,6 @@ bool hex2bin(unsigned char *p, const char *hexstr, size_t len) @@ -491,35 +491,6 @@ bool hex2bin(unsigned char *p, const char *hexstr, size_t len)
return (len == 0 && *hexstr == 0) ? true : false;
}
/* Subtract the `struct timeval' values X and Y,
storing the result in RESULT.
Return 1 if the difference is negative, otherwise 0. */
int timeval_subtract(struct timeval *result, struct timeval *x, struct timeval *y)
{
/* Perform the carry for the later subtraction by updating Y. */
if (x->tv_usec < y->tv_usec) {
int nsec = (y->tv_usec - x->tv_usec) / 1000000 + 1;
y->tv_usec -= 1000000 * nsec;
y->tv_sec += nsec;
}
if (x->tv_usec - y->tv_usec > 1000000) {
int nsec = (x->tv_usec - y->tv_usec) / 1000000;
y->tv_usec += 1000000 * nsec;
y->tv_sec -= nsec;
}
/* Compute the time remaining to wait.
* `tv_usec' is certainly positive. */
result->tv_sec = x->tv_sec - y->tv_sec;
result->tv_usec = x->tv_usec - y->tv_usec;
/* Return 1 if result is negative. */
return x->tv_sec < y->tv_sec;
}
bool fulltest(const unsigned char *hash, const unsigned char *target)
{
unsigned char hash_swap[32], target_swap[32];

Loading…
Cancel
Save