///                MentOS, The Mentoring Operating system project
/// @file module.h
/// @brief
/// @copyright (c) 2014-2021 This file is distributed under the MIT License.
/// See LICENSE.md for details.

#pragma once

#include "multiboot.h"
#include "stdint.h"

/// The maximum number of modules.
#define MAX_MODULES 10

extern multiboot_module_t modules[MAX_MODULES];

/// @brief Ininitialize the modules.
/// @param header Multiboot info used to initialize the modules.
/// @return 1 on success, 0 on error.
int init_modules(multiboot_info_t *header);

/// @brief Relocates modules to virtual mapped low memory, to allow physical
///        unmapping of the first part of the ram.
/// @return 1 on success, 0 on failure.
int relocate_modules();

/// @brief Returns the address where the modules end.
/// @return Address after the modules.
uintptr_t get_address_after_modules();