aboutsummaryrefslogtreecommitdiff
path: root/tests/simple_ideal_alloc/sim.c
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2025-03-02 21:45:51 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2025-03-02 21:45:51 +0200
commit0464b7765aa4d1fc2178e443a3b37d19cfe541a0 (patch)
tree7df54d44f11bcba1c9271148f085501bc2a02d2e /tests/simple_ideal_alloc/sim.c
parentad6107d33a8a222d9062aae45d0e8d8483939d5d (diff)
downloadgran-0464b7765aa4d1fc2178e443a3b37d19cfe541a0.tar.gz
gran-0464b7765aa4d1fc2178e443a3b37d19cfe541a0.zip
add ideal allocation tracker
+ Kind of like CHERI, but uses out-of-line pointer information. The idea is that a core that is compatible with ALLOC_IF queries the allocation tracker if an address is legal and gets a response. This ideal tracker effectively has infinite memory and doesn't talk to any other components, but a real implementation might want to limit the allocations per process or chat with some reserved memory region somewhere else in the system to maintain a binary tree or something.
Diffstat (limited to 'tests/simple_ideal_alloc/sim.c')
-rw-r--r--tests/simple_ideal_alloc/sim.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/simple_ideal_alloc/sim.c b/tests/simple_ideal_alloc/sim.c
new file mode 100644
index 0000000..6aeb5b6
--- /dev/null
+++ b/tests/simple_ideal_alloc/sim.c
@@ -0,0 +1,26 @@
+#include <assert.h>
+
+#include <gran/root.h>
+#include <gran/mem/ideal_alloc.h>
+
+#include "testbench.h"
+
+int main()
+{
+ struct component *traffic_gen = create_testbench();
+ struct component *ideal_alloc = create_ideal_alloc(1);
+
+ ideal_alloc_connect(ideal_alloc, traffic_gen);
+ testbench_connect(traffic_gen, ideal_alloc);
+
+ struct clock_domain *clk = create_clock_domain(NS(1));
+ clock_domain_add(clk, traffic_gen);
+ clock_domain_add(clk, ideal_alloc);
+
+ struct gran_root *root = create_root();
+ root_add_clock(root, clk);
+
+ assert(root_run(root) == OK);
+
+ destroy_root(root);
+}