Process management via active messages
[akaros.git] / kern / include / process.h
index ee2bcb7..095e7c7 100644 (file)
@@ -11,6 +11,7 @@
 #define ROS_KERN_PROCESS_H
 
 #include <arch/types.h>
+#include <trap.h>
 #include <atomic.h>
 
 /* Process States.  Not 100% on the names yet. */
@@ -37,12 +38,21 @@ extern spinlock_t runnablelist_lock;
 
 int proc_set_state(struct proc *p, uint32_t state) WRITES(p->state);
 struct proc *get_proc(unsigned pid);
-bool proc_controls(struct proc *actor, struct proc *target);
-void proc_run(struct proc *p);
-void (proc_startcore)(struct proc *p, trapframe_t *tf) __attribute__((noreturn));
+bool proc_controls(struct proc *SAFE actor, struct proc *SAFE target);
+void proc_run(struct proc *SAFE p);
+// TODO: why do we need these parentheses?
+void (proc_startcore)(struct proc *SAFE p, trapframe_t *SAFE tf)
+     __attribute__((noreturn));
 void (proc_destroy)(struct proc *SAFE p);
 
 /* The reference counts are mostly to track how many cores loaded the cr3 */
 error_t proc_incref(struct proc *SAFE p);
 void proc_decref(struct proc *SAFE p);
+
+/* Active message handlers for process management */
+void __startcore(trapframe_t *tf, uint32_t srcid, uint32_t a0, uint32_t a1,
+                 uint32_t a2);
+void __death(trapframe_t *tf, uint32_t srcid, uint32_t a0, uint32_t a1,
+             uint32_t a2);
+
 #endif // !ROS_KERN_PROCESS_H