aboutsummaryrefslogtreecommitdiff
path: root/src/blocks
diff options
context:
space:
mode:
authorFederico Angelilli <code@fedang.net>2024-11-19 12:05:48 +0100
committerFederico Angelilli <code@fedang.net>2024-11-19 12:05:48 +0100
commitb5cb61379978fa6dc8d6468dd2f8b412e58cf7bb (patch)
treefba4419cdbfa65391f1b044c9ff0a799eefc19bd /src/blocks
parentafcbe44a7cf454f3588a60180d93f65df9e5fcc7 (diff)
Add units to ram
Diffstat (limited to 'src/blocks')
-rw-r--r--src/blocks/fs.c1
-rw-r--r--src/blocks/ram.c34
2 files changed, 28 insertions, 7 deletions
diff --git a/src/blocks/fs.c b/src/blocks/fs.c
index a0e1133..6069d3e 100644
--- a/src/blocks/fs.c
+++ b/src/blocks/fs.c
@@ -88,6 +88,7 @@ static void block_fs_update(block_t *block)
case FS_STRING:
start += snprintf(buffer + start, rest, "%s", fs->format.parts[i].string);
break;
+
case FS_TOTAL:
start += snprintf_units(buffer + start, rest, total, unit);
break;
diff --git a/src/blocks/ram.c b/src/blocks/ram.c
index 8790ee3..46ec361 100644
--- a/src/blocks/ram.c
+++ b/src/blocks/ram.c
@@ -21,10 +21,26 @@ typedef enum {
RAM_USED_PERC,
} block_ram_mark_t;
+#define RAM_SHIFT 12
+
+static const format_pair_t block_ram_units[] = {
+ { "-si", UNIT_SI << RAM_SHIFT },
+ { "-b", UNIT_B << RAM_SHIFT },
+ { "-kib", UNIT_KB << RAM_SHIFT },
+ { "-mib", UNIT_MB << RAM_SHIFT },
+ { "-gib", UNIT_GB << RAM_SHIFT },
+ { "-tib", UNIT_TB << RAM_SHIFT },
+ { "-kb", (UNIT_KB | UNIT_SI) << RAM_SHIFT },
+ { "-mb", (UNIT_MB | UNIT_SI) << RAM_SHIFT },
+ { "-gb", (UNIT_GB | UNIT_SI) << RAM_SHIFT },
+ { "-tb", (UNIT_TB | UNIT_SI) << RAM_SHIFT },
+ { NULL },
+};
+
static const format_option_t block_ram_options[] = {
- { { "total", RAM_TOTAL } },
- { { "free", RAM_FREE } },
- { { "used", RAM_USED } },
+ { { "total", RAM_TOTAL }, .suffixes = block_ram_units },
+ { { "free", RAM_FREE }, .suffixes = block_ram_units },
+ { { "used", RAM_USED }, .suffixes = block_ram_units },
{ { "free-percentage", RAM_FREE_PERC } },
{ { "used-percentage", RAM_USED_PERC } },
{ { NULL } },
@@ -74,20 +90,24 @@ static void block_ram_update(block_t *block)
size_t rest = start >= size ? 0 : size - start;
if (rest == 0) break;
- switch (ram->format.parts[i].mark) {
+ unit_t mask = UNIT_MASK << RAM_SHIFT;
+ unit_t unit = (ram->format.parts[i].mark & mask) >> RAM_SHIFT;
+
+ switch (ram->format.parts[i].mark & ~mask) {
case RAM_STRING:
start += snprintf(buffer + start, rest, "%s", ram->format.parts[i].string);
break;
+
case RAM_TOTAL:
- start += snprintf(buffer + start, rest, "%ld", total);
+ start += snprintf_units(buffer + start, rest, total * 1024, unit);
break;
case RAM_FREE:
- start += snprintf(buffer + start, rest, "%ld", available);
+ start += snprintf_units(buffer + start, rest, available * 1024, unit);
break;
case RAM_USED:
- start += snprintf(buffer + start, rest, "%ld", total - available);
+ start += snprintf_units(buffer + start, rest, (total - available) * 1024, unit);
break;
case RAM_FREE_PERC: