aos/tools/fastmodels/config.h
Daniel Schwyn 6d444bf552 Main handout
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>
2022-03-03 14:57:51 +01:00

56 lines
1.4 KiB
C

#ifndef __CONFIG_H
#define __CONFIG_H
#include <multiboot2.h>
#include <stdint.h>
/* The default inital stack size for the CPU driver, if it's not specified in
* the configuration file. */
#define DEFAULT_STACK_SIZE 16384
struct component_config {
/* The offset and length of the image path, and argument strings for this
* component. */
size_t path_start, path_len;
size_t args_start, args_len;
/* The size and target address of the ELF image. */
size_t image_size, alloc_size;
uint64_t image_address;
/* A pointer to the module tag in the multiboot info image. */
struct multiboot_tag_module_64 *tag;
/* A pointer to the loaded image. */
void *image;
struct component_config *next;
};
struct config {
/* The raw configuration file. */
char *buf;
/* The multiboot information structure. */
void *multiboot;
size_t multiboot_size, multiboot_alloc;
/* Pointers (within the multiboot structure), to the memory map that needs
* to be filled in after all allocation is finished. */
struct multiboot_tag_efi_mmap *mmap_tag;
void *mmap_start;
/* The CPU driver load information. */
struct component_config *kernel;
uint64_t kernel_entry;
uint64_t kernel_stack;
uint64_t stack_size;
/* The additional modules. */
struct component_config *first_module, *last_module;
};
struct config *parse_config(char *buf, size_t size);
#endif /* __CONFIG_H */