40 lines
940 B
C
40 lines
940 B
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>
|
|
|
|
typedef enum {
|
|
READY,
|
|
RUNNING,
|
|
DEAD
|
|
} status_t;
|
|
|
|
struct process_t {
|
|
size_t pid;
|
|
char name[PROCESS_NAME_MAX];
|
|
|
|
status_t status;
|
|
struct cpu_status_t* context;
|
|
void* root_page_table; // Process PML4 (should contain kernel PML4 in higher half [256-511]
|
|
struct process_t* next;
|
|
};
|
|
|
|
void process_init(void);
|
|
struct process_t* process_create(char* name, void(*function)(void*), void* arg);
|
|
void process_add(struct process_t** processes_list, struct process_t* process);
|
|
void process_delete(struct process_t** processes_list, struct process_t* process);
|
|
struct process_t* process_get_next(struct process_t* process);
|
|
void process_exit(void);
|
|
|
|
void process_display_list(struct process_t* processes_list);
|
|
|
|
#endif
|