// SPDX-License-Identifier: MPL-2.0 #ifndef SH_LIB_CONF_H #define SH_LIB_CONF_H #include "std/type.h" #include "std/status.h" #include "memory/page.h" #include "memory/vmem_layout.h" #include "devs/devs.h" #define SH_CONF_BOOT_CONFIG_VA SH_VMEM_LAYOUT_BOOT_CONFIG_VA // Framebuffer configuration typedef struct __attribute__((aligned(8))) { sh_bool fb_present; sh_page_VIRTUAL_ADDRESS fb_pa; sh_uint32 white_pixel_value; sh_uint32 gray_pixel_value; sh_uint64 size_in_bytes; sh_uint32 fb_height; sh_uint32 fb_width; sh_uint16 text_x; sh_uint16 text_y; sh_uint16 text_width; sh_uint16 text_height; } sh_conf_FB_CONFIG; // Boot config structure. typedef struct __attribute__((aligned(8))) { sh_uint8 sig_start[8]; sh_uint8 log_level; sh_uint16 page_table_allocator_level; sh_page_PHYSICAL_ADDRESS page_table_pool_pa; sh_page_VIRTUAL_ADDRESS page_table_pool_va; sh_bool test_benchmark; sh_uint64 bench_iterations; sh_bool log_disable_serial_port; sh_bool disable_serial_port; sh_uint16 log_ring_size; sh_uint64 acpi_rsdp; sh_uint8 acpi_ver; sh_uint16 kbd_events_queue_capacity; sh_conf_FB_CONFIG fb_config; sh_uint8 sig_end[8]; } sh_conf_BOOT_CONFIG; // Check and create boot config structure. SH_STATUS sh_conf_get_boot_config(sh_conf_BOOT_CONFIG **config); // Parse a configuration DevS query SH_STATUS sh_conf_devs_query(char *sub_path,sh_devs_RESULT *result); #endif