Merge remote-tracking branch 'github-pull/71/head'

This commit is contained in:
Luke Dashjr 2025-03-08 21:01:28 +00:00
commit a59a4a31af
No known key found for this signature in database
GPG Key ID: A291A2C45D0C504A
4 changed files with 41 additions and 0 deletions

View File

@ -148,6 +148,26 @@ void datum_api_var_STRATUM_TOTAL_SUBSCRIPTIONS(char *buffer, size_t buffer_size,
void datum_api_var_STRATUM_HASHRATE_ESTIMATE(char *buffer, size_t buffer_size, const T_DATUM_API_DASH_VARS *vardata) {
snprintf(buffer, buffer_size, "%.2f Th/sec", vardata->STRATUM_HASHRATE_ESTIMATE);
}
void datum_api_var_DATUM_PROCESS_UPTIME(char *buffer, size_t buffer_size, const T_DATUM_API_DASH_VARS *vardata) {
uint64_t uptime_seconds = get_process_uptime_seconds();
uint64_t days = uptime_seconds / (24 * 3600);
unsigned int hours = (uptime_seconds % (24 * 3600)) / 3600;
unsigned int minutes = (uptime_seconds % 3600) / 60;
unsigned int seconds = uptime_seconds % 60;
if (days > 0) {
snprintf(buffer, buffer_size, "%"PRIu64" days, %u hours, %u minutes, %u seconds",
days, hours, minutes, seconds);
} else if (hours > 0) {
snprintf(buffer, buffer_size, "%u hours, %u minutes, %u seconds",
hours, minutes, seconds);
} else if (minutes > 0) {
snprintf(buffer, buffer_size, "%u minutes, %u seconds",
minutes, seconds);
} else {
snprintf(buffer, buffer_size, "%u seconds", seconds);
}
}
void datum_api_var_STRATUM_JOB_INFO(char *buffer, size_t buffer_size, const T_DATUM_API_DASH_VARS *vardata) {
if (!vardata->sjob) return;
snprintf(buffer, buffer_size, "%s (%d) @ %.3f", vardata->sjob->job_id, vardata->sjob->global_index, (double)vardata->sjob->tsms / 1000.0);
@ -205,6 +225,7 @@ DATUM_API_VarEntry var_entries[] = {
{"DATUM_MINER_TAG", datum_api_var_DATUM_MINER_TAG},
{"DATUM_POOL_DIFF", datum_api_var_DATUM_POOL_DIFF},
{"DATUM_POOL_PUBKEY", datum_api_var_DATUM_POOL_PUBKEY},
{"DATUM_PROCESS_UPTIME", datum_api_var_DATUM_PROCESS_UPTIME},
{"STRATUM_ACTIVE_THREADS", datum_api_var_STRATUM_ACTIVE_THREADS},
{"STRATUM_TOTAL_CONNECTIONS", datum_api_var_STRATUM_TOTAL_CONNECTIONS},

View File

@ -55,6 +55,7 @@
#include "datum_logger.h"
volatile int panic_mode = 0;
static uint64_t process_start_time = 0;
void get_target_from_diff(unsigned char *result, uint64_t diff) {
uint64_t dividend_parts[4] = {0, 0, 0, 0x00000000FFFF0000};
@ -76,8 +77,15 @@ void get_target_from_diff(unsigned char *result, uint64_t diff) {
}
}
uint64_t get_process_uptime_seconds() {
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
return (uint64_t)ts.tv_sec - process_start_time;
}
void datum_utils_init(void) {
build_hex_lookup();
process_start_time = monotonic_time_seconds();
}
#ifdef __GNUC__
@ -119,6 +127,12 @@ unsigned char floorPoT(uint64_t x) {
}
#endif
uint64_t monotonic_time_seconds(void) {
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts); // SAFE from system time changes (e.g., NTP adjustments, manual clock changes)
return (uint64_t)ts.tv_sec;
}
uint64_t current_time_millis(void) {
struct timeval te;
gettimeofday(&te, NULL); // get current time

View File

@ -41,8 +41,10 @@
#include "datum_logger.h"
void datum_utils_init(void);
uint64_t monotonic_time_seconds(void);
uint64_t current_time_millis(void);
uint64_t current_time_micros(void);
uint64_t get_process_uptime_seconds(void);
unsigned char hex2bin_uchar(const char *in);
void build_hex_lookup(void);
bool my_sha256(void *digest, const void *buffer, size_t length);

View File

@ -78,6 +78,10 @@
<td class="label">Pool Pubkey:</td>
<td class="fixed-width">${DATUM_POOL_PUBKEY}</td>
</tr>
<tr>
<td class="label">Process uptime:</td>
<td>${DATUM_PROCESS_UPTIME}</td>
</tr>
</table>
</div>