BNX2X: limit queues to 2
[akaros.git] / kern / include / process.h
index 7c4c09d..f925c52 100644 (file)
@@ -58,9 +58,11 @@ extern spinlock_t pid_hash_lock;
 
 /* Initialization */
 void proc_init(void);
+void proc_set_progname(struct proc *p, char *name);
 
 /* Process management: */
-error_t proc_alloc(struct proc **pp, struct proc *parent);
+struct proc *pid_nth(unsigned int n);
+error_t proc_alloc(struct proc **pp, struct proc *parent, int flags);
 void __proc_ready(struct proc *p);
 struct proc *proc_create(struct file *prog, char **argv, char **envp);
 int __proc_set_state(struct proc *p, uint32_t state) WRITES(p->state);
@@ -70,11 +72,13 @@ void proc_incref(struct proc *p, unsigned int val);
 void proc_decref(struct proc *p);
 void proc_run_s(struct proc *p);
 void __proc_run_m(struct proc *p);
+void __proc_startcore(struct proc *p, struct user_context *ctx);
 void proc_restartcore(void);
 void proc_destroy(struct proc *p);
 void proc_signal_parent(struct proc *child);
 int __proc_disown_child(struct proc *parent, struct proc *child);
 int proc_change_to_m(struct proc *p);
+void __proc_save_fpu_s(struct proc *p);
 void __proc_save_context_s(struct proc *p, struct user_context *ctx);
 void proc_yield(struct proc *SAFE p, bool being_nice);
 void proc_notify(struct proc *p, uint32_t vcoreid);
@@ -108,9 +112,12 @@ void __proc_take_corelist(struct proc *p, uint32_t *pc_arr, uint32_t num,
 /* Takes all cores, returns the count, fills in pc_arr with their pcoreid */
 uint32_t __proc_take_allcores(struct proc *p, uint32_t *pc_arr, bool preempt);
 
-/* Exposed for kern/src/resource.c for now */
+/* Exposed for now for convenience */
 void __map_vcore(struct proc *p, uint32_t vcoreid, uint32_t pcoreid);
 void __unmap_vcore(struct proc *p, uint32_t vcoreid);
+void vcore_account_online(struct proc *p, uint32_t vcoreid);
+void vcore_account_offline(struct proc *p, uint32_t vcoreid);
+uint64_t vcore_account_gettotal(struct proc *p, uint32_t vcoreid);
 
 /* Preemption management.  Some of these will change */
 void __proc_preempt_warn(struct proc *p, uint32_t vcoreid, uint64_t when);
@@ -136,9 +143,10 @@ void __death(uint32_t srcid, long a0, long a1, long a2);
 void __tlbshootdown(uint32_t srcid, long a0, long a1, long a2);
 
 /* Arch Specific */
-void proc_init_trapframe(trapframe_t *SAFE tf, uint32_t vcoreid,
-                         uintptr_t entryp, uintptr_t stack_top);
-void proc_secure_trapframe(struct trapframe *tf);
+void proc_pop_ctx(struct user_context *ctx) __attribute__((noreturn));
+void proc_init_ctx(struct user_context *ctx, uint32_t vcoreid, uintptr_t entryp,
+                   uintptr_t stack_top, uintptr_t tls_desc);
+void proc_secure_ctx(struct user_context *ctx);
 void __abandon_core(void);
 
 /* Degubbing */