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

@@ -19,6 +19,13 @@ struct disk_t {
char mountpoint[256];
};
struct network_t {
uint32_t download;
uint32_t upload;
char device[32];
};
void sys_get_time(struct time_date_t *td);
void sys_get_load_avg(double *load_avg);
@@ -27,4 +34,6 @@ void sys_get_ram(struct memory_t *ram);
void sys_get_disk(struct disk_t* disk);
void sys_get_network(struct network_t* network);
#endif //LINUXSMARTIE_SYS_H

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;
}