aboutsummaryrefslogtreecommitdiff
path: root/src/blocks/ram.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/blocks/ram.c')
-rw-r--r--src/blocks/ram.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/blocks/ram.c b/src/blocks/ram.c
index 8c21b21..158583c 100644
--- a/src/blocks/ram.c
+++ b/src/blocks/ram.c
@@ -3,7 +3,7 @@
#include <assert.h>
#include <stdlib.h>
-#include "scheme.h"
+#include "../block.h"
#include "../any_log.h"
@@ -12,6 +12,11 @@ typedef struct {
char *format;
} block_ram_t;
+static const struct timespec block_ram_interval = {
+ .tv_sec = 1,
+ .tv_nsec = 0,
+};
+
static void block_ram_update(block_t *block)
{
FILE *meminfo = fopen("/proc/meminfo", "rb");
@@ -59,6 +64,15 @@ static void block_ram_update(block_t *block)
assert(ram->block.text != NULL);
}
+static block_t *block_ram_alloc(const block_scheme_t *scheme)
+{
+ block_t *block = calloc(1, sizeof(block_ram_t));
+ block->type = BLOCK_TEXT;
+ block->update_interval = block_ram_interval;
+ block->update_fn = block_ram_update;
+ return block;
+}
+
static void block_ram_clean(block_t *block)
{
block_ram_t *ram = (block_ram_t *)block;
@@ -89,16 +103,9 @@ static bool block_ram_validate(block_t *block, const block_scheme_t *scheme)
const block_scheme_t block_ram_scheme = {
.name = "ram",
- .block = {
- .type = BLOCK_TEXT,
- .update_interval = {
- .tv_sec = 1,
- .tv_nsec = 0,
- },
- .update_fn = block_ram_update,
- .clean_fn = block_ram_clean,
- },
- .size = sizeof(block_ram_t),
.entries = NULL,
- .validate = block_ram_validate,
+ .alloc_fn = block_ram_alloc,
+ .clean_fn = block_ram_clean,
+ .validate_fn = block_ram_validate,
+ .resolve_fn = NULL,
};