blob: ffd39e7f5a596321a0525ca918d0176d9add94f3 (
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
|
#ifndef __PROCESS_H__
#define __PROCESS_H__
#include "types.h"
/* maximum number of processes (i.e. pages in ram)
* since each program can use only one page in ram
*/
#define PROC_COUNT 2
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[4]; // pages used by the process
// TODO: implement quick callback?
};
/* 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
*/
extern struct process proc_table[255];
static 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__
|