aboutsummaryrefslogtreecommitdiff
path: root/common/tcb.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/tcb.c')
-rw-r--r--common/tcb.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/common/tcb.c b/common/tcb.c
index bb1bcec..212e20f 100644
--- a/common/tcb.c
+++ b/common/tcb.c
@@ -4,7 +4,9 @@
#include <apos/pmem.h>
#include <apos/nodes.h>
#include <apos/types.h>
+#include <apos/assert.h>
#include <apos/string.h>
+#include <arch/vmem.h>
/* arguably exessively many globals... */
static id_t start_tid;
@@ -98,3 +100,16 @@ struct tcb *get_tcb(id_t tid)
return tcbs[tid];
}
+
+stat_t clone_tcb_maps(struct tcb *r)
+{
+ hard_assert(r && !r->parent, ERR_INVAL);
+ struct tcb *t = r;
+ while ((t = t->next)) {
+ stat_t ret = clone_vmbranch(r->b_r, t->b_r);
+ if (ret)
+ return ret;
+ }
+
+ return OK;
+}