Files
2026-07-12 05:44:42 +02:00

58 lines
1.0 KiB
C

/*
* AsterOS Kernel
* Autor: Pavel Kalaš
* Rok: 2026
*
*/
/*
* Tento header popisuje procesovy model jadra.
* Obsahuje stavy procesu, kontext CPU registru a strukturu process_t,
* plus API pro vytvareni procesu, ukonceni a pristup k procesove tabulce.
*/
#ifndef ASTER_PROCESS_H
#define ASTER_PROCESS_H
#include "types.h"
#define ASTER_MAX_PROCESSES 16
typedef enum {
PROCESS_UNUSED = 0,
PROCESS_READY,
PROCESS_RUNNING,
PROCESS_BLOCKED,
PROCESS_EXITED
} process_state_t;
typedef struct {
u64 r15;
u64 r14;
u64 r13;
u64 r12;
u64 rbx;
u64 rbp;
u64 rip;
} context_t;
typedef struct {
u32 pid;
process_state_t state;
u8 priority;
u8 *stack_base;
u64 stack_top;
context_t context;
const char *name;
} process_t;
void process_init(void);
process_t *process_create(const char *name, void (*entry)(void), u8 priority);
void process_exit(void);
process_t *process_current(void);
void process_set_current(process_t *p);
process_t *process_table(void);
usize process_count(void);
#endif