1 /******************************************************************************/
2 /* src/kernel/MemMng/MemMngMap.c */
4 /* Copyright (C) 2018 Mochi. */
5 /******************************************************************************/
6 /******************************************************************************/
8 /******************************************************************************/
17 #include "MemMngMap.h"
20 /******************************************************************************/
22 /******************************************************************************/
24 #ifdef DEBUG_LOG_ENABLE
25 #define DEBUG_LOG( ... ) \
26 DebugLogOutput( CMN_MODULE_MEMMNG_MAP, \
30 #define DEBUG_LOG( ... )
33 /** メモリマップ管理テーブル構造体 */
35 BiosE820Entry_t *pBiosE820; /**< BIOS-E820メモリマップ */
36 size_t biosE820Num; /**< BIOS-E820メモリマップエントリ数 */
37 MkMemMapEntry_t *pMemMap; /**< メモリマップ */
38 size_t memMapNum; /**< メモリマップエントリ数 */
42 /******************************************************************************/
44 /******************************************************************************/
46 static MapTbl_t gMapTbl;
49 /******************************************************************************/
50 /* 外部モジュール向けグローバル関数定義 */
51 /******************************************************************************/
52 /******************************************************************************/
55 * @details メモリマップから指定タイプのメモリマップ領域情報を取得する。
57 * @param[out] *pInfo メモリマップ領域情報
58 * @param[in] type メモリマップ領域種別
59 * - MK_MEM_TYPE_KERNEL カーネル領域
60 * - MK_MEM_TYPE_PROCIMG プロセスイメージ領域
63 * @retval CMN_SUCCESS 正常終了
64 * @retval CMN_FAILURE 異常終了
66 /******************************************************************************/
67 CmnRet_t MemMngMapGetInfo( MkMemMapEntry_t *pInfo,
70 uint32_t index; /* インデックス */
71 MkMemMapEntry_t *pEntry; /* メモリマップエントリ */
73 /* メモリマップ全エントリ毎に繰り返し */
74 for ( index = 0; index < gMapTbl.memMapNum; index++ ) {
76 pEntry = &( gMapTbl.pMemMap[ index ] );
79 if ( pEntry->type == type ) {
93 /******************************************************************************/
94 /* 内部モジュール向けグローバル関数定義 */
95 /******************************************************************************/
96 /******************************************************************************/
99 * @details メモリマップ管理テーブルを初期化する。
101 * @param[in] *pBiosE820 BIOS-E820メモリマップ
102 * @param[in] biosE820Num BIOS-E820メモリマップエントリ数
103 * @param[in] *pMemMap メモリマップ
104 * @param[in] memMapNum メモリマップエントリ数
106 /******************************************************************************/
107 void MapInit( BiosE820Entry_t *pBiosE820,
109 MkMemMapEntry_t *pMemMap,
113 gMapTbl.pBiosE820 = pBiosE820;
114 gMapTbl.biosE820Num = biosE820Num;
115 gMapTbl.pMemMap = pMemMap;
116 gMapTbl.memMapNum = memMapNum;
122 /******************************************************************************/