blob: 3b0c84334b4cec426d8205694ad50d896b0f8610 (
plain)
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
41
42
43
|
#ifndef __PROCESS_H__
#define __PROCESS_H__
#include "types.h"
#include "memory.h"
/* maximum number of processes (i.e. pages in ram)
* since each program can use only one page in ram
*/
#define PROC_COUNT 2
/* the pid is defined with a single byte (pid_t is uint8_t), because of that
* there cannot be more than 255 processes open at the same time. this is a
* limitation but for our purposes is more than enough
*/
#define PID_COUNT_MAX 255
struct executable
{
void *text;
size_t text_size;
void *bss;
size_t bss_size;
};
struct process
{
uint blocked :1; // process is waiting for hardware or locked
uint running :1; // pid is used
uint pages; // number of pages used by the process
struct page page[4]; // pages used by the process
};
pid_t newpid(void);
int fork(void);
int exec(char *path, char *args);
int spawn(char *path, char *args);
pid_t getpid(void);
int kill(pid_t pid);
#endif // __PROCESS_H__
|