www.pudn.com > hos-v4_os.rar > knl_mem.h
/* ------------------------------------------------------------------------ */
/* Hyper Operating System V4 μITRON4.0仕様 Real-Time OS */
/* カーネル メモリ管理 */
/* */
/* Copyright (C) 1998-2002 by Project HOS */
/* http://sourceforge.jp/projects/hos/ */
/* ------------------------------------------------------------------------ */
#ifndef __HOS_V4__knl_mem_h__
#define __HOS_V4__knl_mem_h__
#include "knl_hos.h"
/* ------------------------------------------ */
/* 定数定義 */
/* ------------------------------------------ */
/* カーネルメモリ管理定数 */
#define MEMBLK_ALIGN sizeof(VP) /* メモリアライメント */
#define MEMBLK_USING 0x1234 /* 使用中 */
#define MEMBLK_FREE 0xabcd /* 未使用 */
/* ------------------------------------------ */
/* 型定義 */
/* ------------------------------------------ */
/* カーネルメモリ管理ブロック */
typedef struct t_kernel_mem_blk
{
struct t_kernel_mem_blk* prev; /* 前のブロック */
SIZE size; /* ブロックのサイズ */
INT flag; /* 使用中フラグ */
} T_KERNEL_MEM_BLK;
/* カーネルメモリ管理ブロックサイズ */
#define MEMBLKSIZE ((sizeof(T_KERNEL_MEM_BLK) + MEMBLK_ALIGN - 1) & ~(MEMBLK_ALIGN - 1))
/* ---------------------------------- */
/* グローバル変数宣言 */
/* ---------------------------------- */
/* カーネルメモリ管理 */
extern T_KERNEL_MEM_BLK *kernel_mem_base; /* カーネル用メモリ先頭ブロックのアドレス */
extern SIZE kernel_mem_size; /* カーネル用メモリサイズ */
/* ------------------------------------------ */
/* 関数宣言 */
/* ------------------------------------------ */
#ifdef __cplusplus
extern "C" {
#endif
/* システムメモリ管理 */
void kernel_ini_mem(void *p_base, SIZE size); /* メモリ管理を初期化 */
VP kernel_alc_mem(SIZE size); /* メモリの割り当て */
void kernel_fre_mem(VP ptr); /* メモリの解放 */
#ifdef __cplusplus
}
#endif
#endif /* __HOS_V4__knl_mem_h__ */
/* ------------------------------------------------------------------------ */
/* Copyright (C) 1998-2002 by Project HOS */
/* ------------------------------------------------------------------------ */