GitOS
Loading...
Searching...
No Matches
process.h
Go to the documentation of this file.
1#pragma once
2
3#include <stddef.h>
4#include <stdint.h>
5#include "fs/Path.hpp"
6
7#define PROCESS_MAX_ALLOCATIONS 1024
8#define PROCESS_KEYBOARD_BUFFER_SIZE 1024
9#define MAX_PROCESSES 12
10
11struct process
12{
16 uint8_t id;
17
22
26 struct task* task;
27
32
33 // TODO: Make this ELFFile* when rewritten to C++
34 void* elf;
35
39 void* stack;
40
44 void* bss;
45
50
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:12
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:300
void process_terminate(struct process *process)
Definition process.cpp:313
#define PROCESS_MAX_ALLOCATIONS
Definition process.h:7
int process_switch(struct process *process)
Definition process.cpp:34
struct process ** process_get_list()
Definition process.cpp:354
void * process_malloc_flags(struct process *process, size_t size, int flags)
Definition process.cpp:278
struct process * process_current()
Definition process.cpp:21
int process_load_switch(const char *filename, struct process *process)
Definition process.cpp:140
char process_popkey(struct process *process)
Definition process.cpp:256
void process_pushkey(struct process *process, char c)
Definition process.cpp:244
void * process_malloc(struct process *process, size_t size)
Definition process.cpp:274
int process_load(const char *filename, struct process *process)
Definition process.cpp:227
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:44
void * elf
Definition process.h:34
void * elf_entry
Definition process.h:58
uint8_t id
Process ID.
Definition process.h:16
char filename[MAX_PATH]
Path to process.
Definition process.h:21
void * allocations[PROCESS_MAX_ALLOCATIONS]
malloc allocations of the process
Definition process.h:31
struct task * task
Main process task.
Definition process.h:26
void * framebuffer
Pointer to allocated memory for framebuffer.
Definition process.h:49
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:39