From b14d0afe86966b91ad6a40816439cdc34602b49e Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Tue, 4 Jul 2017 11:35:23 +0200 Subject: new structure for process management, structures to discuss the idea behind kernel/include/progman.h was good but the implementation was very not unix-like, so I made a new file under kernel/include/process.h that will implement the same features other changes: - move usart register structs definitions outside of the device - remove old build files - delete boot.h and boot_loader.h (as they weren't used by anything) - change on makefile to build binary with `makebin` instead of `xxd` - new file memory.h to implement memory mapping and mmu control - new type `uint` in types.h --- sw/z80/kernel/include/progman.h | 109 ---------------------------------------- 1 file changed, 109 deletions(-) delete mode 100644 sw/z80/kernel/include/progman.h (limited to 'sw/z80/kernel/include/progman.h') diff --git a/sw/z80/kernel/include/progman.h b/sw/z80/kernel/include/progman.h deleted file mode 100644 index b59e14a..0000000 --- a/sw/z80/kernel/include/progman.h +++ /dev/null @@ -1,109 +0,0 @@ -#ifndef PROGRAM_MAN -#define PROGRAM_MAN - -#include "types.h" - -#define PROG_0 0x0 -#define PROG_1 0x1 - -#define PROG_VSTART 0x1000 -#define PROG_0_PREFIX 0xA000 -#define PROG_1_PREFIX 0xC000 - -#define PROG_0_INFO // TODO -#define PROG_1_INFO // TODO find a space in the ram - -struct prog_status { - - // The program is in execution - - uint8_t running:1; - - // The program is executing its quit callback - - uint8_t exiting:1; - - uint8_t unused:6; // TODO, find a usage for these bits -}: - -struct prog_data { - - struct prog_status status; - - /* - * The following addresses are needed to map - * map the usable memory for dynamic allocations - */ - - // Virtual address of the heap - - uint8_t heap_addr:12; - - // Virtual address of the stack limit - - uint8_t stack_limit:12; - - /* - * Function called when the program exits normally - */ - - void (*quit_cb)(void); // 16 -}; - -/* -* Initialize the program manager system -*/ - -void progman_init(); - -/* -* Check if it can start a new program -* If it succedes, the program id is returned, -* otherwise it is returned an error number -* -* ! Disable virtual addresses when this function is called -*/ - -#define PROG_REQ_FULL -1 - -int8_t prog_req(); - -/* -* It allocates a program in the RAM -* To obtain the right id call prog_req() first -* Basic informations must be allocated and referenced by a program_base struct -* -* ! Disable virtual addresses when this function is called -*/ - -struct prog_space { - - void * inst_set; // pointer to the instructions set - size_t inst_size; // size of the instructions set - void * bss_data; // pointer to the bss/data space - size_t data_size; // size of the bss/data space -}; - -void prog_alloc(int8_t id, struct prog_data *data, const struct prog_space *space); - -/* -* It jumps the program counter to the given one -*/ - -void prog_exec(int8_t id, struct prog_data *data); - -/* -* It sets a quit callback -*/ - -void prog_0_set_qcb(void (*callback)(void)); -void prog_1_set_qcb(void (*callback)(void)); - -/* -* It quits a program, if a callback is set, it will be called -*/ - -void prog_0_quit(uint8_t force); -void prog_1_quit(uint8_t force); - -#endif \ No newline at end of file -- cgit v1.2.1