GitOS
Operating system exercise
Loading...
Searching...
No Matches
process.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdint.h>
4#include "fs/Path.hpp"
5#include <stddef.h>
6
7#define PROCESS_MAX_ALLOCATIONS 1024
8#define PROCESS_KEYBOARD_BUFFER_SIZE 1024
9#define MAX_PROCESSES 12
10
11struct process
12{
13
17 uint8_t id;
18
23
27 struct task* task;
28
33
34 // TODO: Make this ELFFile* when rewritten to C++
35 void* elf;
36
40 void* stack;
41
45 void* bss;
46
51
57
58 void* elf_entry;
59
60 int argc;
61 char** argv;
62};
63int process_load_switch(const char* filename, struct process* process);
64int process_load(const char* filename, struct process* process);
65struct process* process_current();
66int process_switch(struct process* process);
67void process_pushkey(struct process* process, char c);
68char process_popkey(struct process* process);
69void* process_malloc_flags(struct process* process, size_t size, int flags);
70void* process_malloc(struct process* process, size_t size);
71void process_free(struct process* process, void* address);
73
74struct process** process_get_list();
#define MAX_PATH
Definition Path.hpp:11
uint8_t filename[8]
Definition fat16.h:0
uint16_t size
Definition gdt.h:0
uint32_t flags
Definition idt.h:11
#define PROCESS_KEYBOARD_BUFFER_SIZE
Definition process.h:8
void process_free(struct process *process, void *address)
Definition process.cpp:293
void process_terminate(struct process *process)
Definition process.cpp:303
#define PROCESS_MAX_ALLOCATIONS
Definition process.h:7
int process_switch(struct process *process)
Definition process.cpp:33
struct process ** process_get_list()
Definition process.cpp:338
void * process_malloc_flags(struct process *process, size_t size, int flags)
Definition process.cpp:272
struct process * process_current()
Definition process.cpp:20
int process_load_switch(const char *filename, struct process *process)
Definition process.cpp:135
char process_popkey(struct process *process)
Definition process.cpp:250
void process_pushkey(struct process *process, char c)
Definition process.cpp:238
void * process_malloc(struct process *process, size_t size)
Definition process.cpp:268
int process_load(const char *filename, struct process *process)
Definition process.cpp:220
Definition process.h:52
int head
Definition process.h:55
char buffer[PROCESS_KEYBOARD_BUFFER_SIZE]
Definition process.h:53
int tail
Definition process.h:54
Definition process.h:12
void * bss
Allocated BSS segment.
Definition process.h:45
void * elf
Definition process.h:35
void * elf_entry
Definition process.h:58
uint8_t id
Process ID.
Definition process.h:17
char filename[MAX_PATH]
Path to process.
Definition process.h:22
void * allocations[PROCESS_MAX_ALLOCATIONS]
malloc allocations of the process
Definition process.h:32
struct task * task
Main process task.
Definition process.h:27
void * framebuffer
Pointer to allocated memory for framebuffer.
Definition process.h:50
int argc
Definition process.h:60
struct process::keyboard_buffer keyboard
char ** argv
Definition process.h:61
void * stack
Physical pointer to the process stack.
Definition process.h:40
Definition task.h:25