Files
my-os-project2/kernel/proc/proc.h
2025-09-01 23:22:47 +02:00

49 lines
900 B
C

#ifndef PROC_PROC_H_
#define PROC_PROC_H_
#include <stdint.h>
#include "hal/hal.h"
#include "vmm/vmm.h"
#include "spinlock/spinlock.h"
#include "bitmap/bitmap.h"
#define PROC_NAME_MAX 0x100
#define PROC_STACKBLOCKS 32
#define PROC_STACKSIZE (PROC_STACKBLOCKS * BITMAP_BLOCK_SIZE)
#define PROC_MAX 0x100 // max amount of processes
enum {
PROC_READY,
PROC_RUNNING,
PROC_ZOMBIE,
PROC_WAITING,
};
typedef struct Proc {
struct Proc *next;
uint64_t pid;
char name[PROC_NAME_MAX];
ProcPlatformData platformdata;
uint8_t state;
VasRange *vas;
bool kern;
} Proc;
typedef struct {
SpinLock spinlock;
Proc *procs;
Proc *current;
} Procs;
extern Procs PROCS;
void proc_init(void);
void proc_register(Proc *proc);
Proc *proc_spawnkern(void (*ent)(void), char *name);
Proc *proc_spawnuser(char *mountpoint, char *path);
void proc_sched(void *cpustate);
#endif // PROC_PROC_H_