Pridana verze v0.1
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* 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
|
||||
Reference in New Issue
Block a user