// 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"
#define SH_CONF_BOOT_CONFIG_VA SH_VMEM_LAYOUT_BOOT_CONFIG_VA
// 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_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);
#endif
