TAILQ_HEAD(vcore_tailq, vcore);
/* 'struct proc_list' declared in sched.h (not ideal...) */
+struct username {
+ char name[128];
+ spinlock_t name_lock;
+};
+void __set_username(struct username *u, char *name);
+void set_username(struct username *u, char *name);
+
#define PROC_PROGNAME_SZ 20
// TODO: clean this up.
struct proc {
TAILQ_ENTRY(proc) sibling_link;
spinlock_t proc_lock;
struct user_context scp_ctx; /* context for an SCP. TODO: move to vc0 */
- char user[64]; /* user name */
+ struct username user;
/* This is effectively a (potentially short) version of argv[0].
*/
/* Scheduler mgmt (info, data, whatever) */
struct sched_proc_data ksched_data;
- /* Cache color map: bitmap of the cache colors currently allocated to this
- * process */
- uint8_t* cache_colors_map;
- size_t next_cache_color;
-
- /* Keeps track of this process's current memory allocation
- * (i.e. its heap pointer) */
- void *heap_top;
-
/* The args_base pointer is a user pointer which points to the base of
* the executable boot block (where args, environment, aux vectors, ...)
* are stored.
// Per process info and data pages
procinfo_t *procinfo; // KVA of per-process shared info table (RO)
procdata_t *procdata; // KVA of per-process shared data table (RW)
-
+
// The backring pointers for processing asynchronous system calls from the user
// Note this is the actual backring, not a pointer to it somewhere else
syscall_back_ring_t syscallbackring;
-
+
// The front ring pointers for pushing asynchronous system events out to the user
// Note this is the actual frontring, not a pointer to it somewhere else
sysevent_front_ring_t syseventfrontring;
struct vmm vmm;
struct strace *strace;
- bool strace_on;
- bool strace_inherit;
};
/* Til we remove all Env references */