forked from pepper-org/pepperOS
44 lines
1.1 KiB
C
44 lines
1.1 KiB
C
/*
|
|
* @author xamidev <xamidev@riseup.net>
|
|
* @brief Process definition
|
|
* @license GPL-3.0-only
|
|
*/
|
|
|
|
#ifndef PROCESS_H
|
|
#define PROCESS_H
|
|
|
|
#include <stddef.h>
|
|
#include <config.h>
|
|
#include <stdint.h>
|
|
#include <limine.h>
|
|
|
|
typedef enum {
|
|
READY,
|
|
RUNNING,
|
|
DEAD
|
|
} status_t;
|
|
|
|
struct process {
|
|
size_t pid;
|
|
char name[PROCESS_NAME_MAX];
|
|
|
|
status_t status;
|
|
struct cpu_status* context;
|
|
void* root_page_table; // Process PML4 (should contain kernel PML4 in higher half [256-511]
|
|
void* kernel_stack; // Used for interrupts (syscall: int 0x80), defines the TSS RSP0
|
|
struct process* next;
|
|
};
|
|
|
|
void process_init(void);
|
|
struct process* process_create(char* name, void(*function)(void*), void* arg);
|
|
void process_add(struct process** processes_list, struct process* process);
|
|
void process_delete(struct process** processes_list, struct process* process);
|
|
struct process* process_get_next(struct process* process);
|
|
void process_exit(void);
|
|
|
|
void process_display_list(struct process* processes_list);
|
|
|
|
void process_create_user(struct limine_file* file);
|
|
|
|
#endif
|