Skip to content

Commit a59a4a3

Browse files
committed
Merge remote-tracking branch 'github-pull/71/head'
2 parents cb80307 + 4cd924d commit a59a4a3

File tree

4 files changed

+41
-0
lines changed

4 files changed

+41
-0
lines changed

src/datum_api.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,26 @@ void datum_api_var_STRATUM_TOTAL_SUBSCRIPTIONS(char *buffer, size_t buffer_size,
148148
void datum_api_var_STRATUM_HASHRATE_ESTIMATE(char *buffer, size_t buffer_size, const T_DATUM_API_DASH_VARS *vardata) {
149149
snprintf(buffer, buffer_size, "%.2f Th/sec", vardata->STRATUM_HASHRATE_ESTIMATE);
150150
}
151+
void datum_api_var_DATUM_PROCESS_UPTIME(char *buffer, size_t buffer_size, const T_DATUM_API_DASH_VARS *vardata) {
152+
uint64_t uptime_seconds = get_process_uptime_seconds();
153+
uint64_t days = uptime_seconds / (24 * 3600);
154+
unsigned int hours = (uptime_seconds % (24 * 3600)) / 3600;
155+
unsigned int minutes = (uptime_seconds % 3600) / 60;
156+
unsigned int seconds = uptime_seconds % 60;
157+
158+
if (days > 0) {
159+
snprintf(buffer, buffer_size, "%"PRIu64" days, %u hours, %u minutes, %u seconds",
160+
days, hours, minutes, seconds);
161+
} else if (hours > 0) {
162+
snprintf(buffer, buffer_size, "%u hours, %u minutes, %u seconds",
163+
hours, minutes, seconds);
164+
} else if (minutes > 0) {
165+
snprintf(buffer, buffer_size, "%u minutes, %u seconds",
166+
minutes, seconds);
167+
} else {
168+
snprintf(buffer, buffer_size, "%u seconds", seconds);
169+
}
170+
}
151171
void datum_api_var_STRATUM_JOB_INFO(char *buffer, size_t buffer_size, const T_DATUM_API_DASH_VARS *vardata) {
152172
if (!vardata->sjob) return;
153173
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[] = {
205225
{"DATUM_MINER_TAG", datum_api_var_DATUM_MINER_TAG},
206226
{"DATUM_POOL_DIFF", datum_api_var_DATUM_POOL_DIFF},
207227
{"DATUM_POOL_PUBKEY", datum_api_var_DATUM_POOL_PUBKEY},
228+
{"DATUM_PROCESS_UPTIME", datum_api_var_DATUM_PROCESS_UPTIME},
208229

209230
{"STRATUM_ACTIVE_THREADS", datum_api_var_STRATUM_ACTIVE_THREADS},
210231
{"STRATUM_TOTAL_CONNECTIONS", datum_api_var_STRATUM_TOTAL_CONNECTIONS},

src/datum_utils.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
#include "datum_logger.h"
5656

5757
volatile int panic_mode = 0;
58+
static uint64_t process_start_time = 0;
5859

5960
void get_target_from_diff(unsigned char *result, uint64_t diff) {
6061
uint64_t dividend_parts[4] = {0, 0, 0, 0x00000000FFFF0000};
@@ -76,8 +77,15 @@ void get_target_from_diff(unsigned char *result, uint64_t diff) {
7677
}
7778
}
7879

80+
uint64_t get_process_uptime_seconds() {
81+
struct timespec ts;
82+
clock_gettime(CLOCK_MONOTONIC, &ts);
83+
return (uint64_t)ts.tv_sec - process_start_time;
84+
}
85+
7986
void datum_utils_init(void) {
8087
build_hex_lookup();
88+
process_start_time = monotonic_time_seconds();
8189
}
8290

8391
#ifdef __GNUC__
@@ -119,6 +127,12 @@ unsigned char floorPoT(uint64_t x) {
119127
}
120128
#endif
121129

130+
uint64_t monotonic_time_seconds(void) {
131+
struct timespec ts;
132+
clock_gettime(CLOCK_MONOTONIC, &ts); // SAFE from system time changes (e.g., NTP adjustments, manual clock changes)
133+
return (uint64_t)ts.tv_sec;
134+
}
135+
122136
uint64_t current_time_millis(void) {
123137
struct timeval te;
124138
gettimeofday(&te, NULL); // get current time

src/datum_utils.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,10 @@
4141
#include "datum_logger.h"
4242

4343
void datum_utils_init(void);
44+
uint64_t monotonic_time_seconds(void);
4445
uint64_t current_time_millis(void);
4546
uint64_t current_time_micros(void);
47+
uint64_t get_process_uptime_seconds(void);
4648
unsigned char hex2bin_uchar(const char *in);
4749
void build_hex_lookup(void);
4850
bool my_sha256(void *digest, const void *buffer, size_t length);

www/home.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ <h2>Decentralized Client Stats</h2>
7878
<td class="label">Pool Pubkey:</td>
7979
<td class="fixed-width">${DATUM_POOL_PUBKEY}</td>
8080
</tr>
81+
<tr>
82+
<td class="label">Process uptime:</td>
83+
<td>${DATUM_PROCESS_UPTIME}</td>
84+
</tr>
8185
</table>
8286
</div>
8387

0 commit comments

Comments
 (0)