aboutsummaryrefslogtreecommitdiff
path: root/src/vmem.c
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2024-10-30 02:32:02 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2024-10-30 02:32:02 +0200
commit7a23d95b6e432170d6575f515616e5936d53c85e (patch)
treeafdc349124ca40c4903b534f750f18e8527bf7c5 /src/vmem.c
parente7b5881903ad81efee63966e7d2c42524d465dfc (diff)
downloadkmi-7a23d95b6e432170d6575f515616e5936d53c85e.tar.gz
kmi-7a23d95b6e432170d6575f515616e5936d53c85e.zip
bookkeeping
Diffstat (limited to 'src/vmem.c')
-rw-r--r--src/vmem.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/vmem.c b/src/vmem.c
index bd0cd7c..0404202 100644
--- a/src/vmem.c
+++ b/src/vmem.c
@@ -64,6 +64,14 @@ static stat_t __copy_mapped_region(struct tcb *d, struct tcb *s,
return res;
}
+/**
+ * Reference shared memory, creating a link between the referrer and owner.
+ *
+ * @param d 'Owner' of \p orig.
+ * @param s Referrer of \p ref.
+ * @param ref Address of shared memory reference in \p s.
+ * @param orig Address of shared memory in \p d.
+ */
static void reference_mem(struct tcb *d, struct tcb *s, vm_t ref, vm_t orig)
{
struct mem_region *src = find_used_region(&s->uvmem.region, orig);
@@ -81,6 +89,13 @@ static void reference_mem(struct tcb *d, struct tcb *s, vm_t ref, vm_t orig)
static void __free_mapping(struct tcb *t, struct mem_region *m);
+/**
+ * Unreference memory region at address \p addr.
+ * Also unreferences owning process.
+ *
+ * @param s Reference holder of \p addr.
+ * @param addr Address to unreference. Or would dereference be better?
+ */
static void unreference_mem(struct tcb *s, vm_t addr)
{
struct mem_region *src = find_used_region(&s->uvmem.region, addr);