include/cedos/process.h (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
/*! \file
* Defines processes, a process list and process IDs
*/
#ifndef PROCESS_H
#define PROCESS_H
#include "cedos/mm/paging.h"
typedef enum {
PSTATE_READY,
PSTATE_RUNNING,
PSTATE_BLOCKED,
PSTATE_TERMINATED
} PROCESS_STATE;
typedef uint32_t PROCESS_ID;
struct __PROCESS {
struct __PROCESS *next;
PROCESS_ID id;
PHYS_ADDR page_dir;
PROCESS_STATE state;
VIRT_ADDR eip;
VIRT_ADDR esp;
uint32_t eax, ebx, ecx, edx;
};
typedef struct __PROCESS PROCESS;
PROCESS* get_process(PROCESS_ID pid);
PROCESS_STATE get_process_state(PROCESS_ID pid);
PROCESS_ID get_current_process(void);
PROCESS_ID add_process(PROCESS* process);
void remove_process(PROCESS_ID pid);
#endif