11#include <sys/syscall.h>
13#include <sys/kassert.h>
14#include <sys/kconfig.h>
15#include <sys/kdebug.h>
19#include <sys/spinlock.h>
20#include <sys/thread.h>
22#include <machine/trap.h>
23#include <machine/pmap.h>
57 memset(proc, 0,
sizeof(*proc));
68 proc->
title[0] =
'\0';
174 __sync_fetch_and_add(&proc->
refCount, 1);
188 if (__sync_fetch_and_sub(&proc->
refCount, 1) == 1) {
253 const char *stateStrings[] = {
281 kprintf(
"Process: %d(%016llx)\n", proc->
pid, proc);
295 kprintf(
"Current Process State:\n");
void CV_Init(CV *cv, const char *name)
void Handle_Init(Process *proc)
void Thread_Release(Thread *thr)
void Handle_Destroy(Process *proc)
#define PROCESS_TITLE_LENGTH
int kprintf(const char *fmt,...)
#define REGISTER_DBGCMD(_NAME, _DESC, _FUNC)
void Slab_Free(Slab *slab, void *obj)
void * Slab_Alloc(Slab *slab) __attribute__((malloc))
#define MEM_USERSPACE_STKBASE
void PMap_DestroyAS(AS *space)
#define TAILQ_FOREACH(var, head, field)
#define TAILQ_INSERT_TAIL(head, elm, field)
#define TAILQ_FIRST(head)
#define TAILQ_REMOVE(head, elm, field)
#define TAILQ_EMPTY(head)
void Semaphore_Destroy(Semaphore *sema)
void Semaphore_Init(Semaphore *sema, int count, const char *name)
void Spinlock_Unlock(Spinlock *lock) __UNLOCK_EX(*lock)
#define SPINLOCK_TYPE_NORMAL
void Spinlock_Destroy(Spinlock *lock)
void Spinlock_Lock(Spinlock *lock) __LOCK_EX(*lock)
void Spinlock_Init(Spinlock *lock, const char *name, uint64_t type)
char * strncpy(char *to, const char *from, size_t len)
void * memset(void *dst, int c, size_t len)
char title[PROCESS_TITLE_LENGTH]
Semaphore zombieSemaphore
ProcessQueue childrenList
void Mutex_Destroy(Mutex *mtx)
void Mutex_Init(Mutex *mtx, const char *name)
#define SYSCALL_PACK(_errcode, _val)
Process * Process_Create(Process *parent, const char *title)
void Process_Dump(Process *proc)
Thread * curProc[MAX_CPUS]
static void Debug_Processes(int argc, const char *argv[])
Process * Process_Lookup(uint64_t pid)
uint64_t Process_Wait(Process *proc, uint64_t pid)
void Process_Retain(Process *proc)
static void Debug_ProcInfo(int argc, const char *argv[])
static void Process_Destroy(Process *proc)
void Process_Release(Process *proc)