Moved x86 specific files into the arch/i386 directory. Modified files as needed.
[akaros.git] / kern / include / process.h
index 4975a15..5f7868a 100644 (file)
@@ -11,6 +11,7 @@
 #define ROS_KERN_PROCESS_H
 
 #include <arch/types.h>
+#include <atomic.h>
 
 /* Process States.  Not 100% on the names yet. */
 #define PROC_CREATED                   0x01
 // Till we remove the old struct Env
 #define proc Env
 
+TAILQ_HEAD(proc_list, proc);           // Declares 'struct proc_list'
+extern struct proc_list proc_freelist;
+extern spinlock_t freelist_lock;
+extern struct proc_list proc_runnablelist;
+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));
+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);
 #endif // !ROS_KERN_PROCESS_H