network added

This commit is contained in:
2026-05-10 00:48:27 +02:00
parent 3833c9be6b
commit 35e2e83862
2 changed files with 34 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
#include "sys.h"
#include "utils.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -42,4 +44,27 @@ void sys_get_disk(struct disk_t* disk) {
disk->usage.free = diskData.f_bfree * diskData.f_frsize;
disk->usage.used = (diskData.f_blocks - diskData.f_bfree) * diskData.f_frsize;
disk->usage.total = diskData.f_blocks * diskData.f_frsize;
}
void sys_get_network(struct network_t* network) {
struct _net_t {
struct timespec ts;
uint64_t rx;
uint64_t tx;
};
static char path[128];
static char buf[32];
static struct _net_t prev;
struct _net_t current = {};
snprintf(path, sizeof(path), "/sys/class/net/%s/statistics", network->device);
clock_gettime(CLOCK_MONOTONIC, &current.ts);
fast_read_num_u64(path, "rx_bytes", buf, &current.rx, 1);
fast_read_num_u64(path, "tx_bytes", buf, &current.rx, 1);
const double ts_diff = (current.ts.tv_sec - prev.ts.tv_sec) + (current.ts.tv_nsec - prev.ts.tv_nsec) / 1000000000.0;
network->download = (current.rx - prev.rx) / ts_diff;
network->upload = (current.tx - prev.tx) / ts_diff;
prev = current;
}