📄 fre_mem.c
字号:
/* ------------------------------------------------------------------------ *//* Hyper Operating System V4 μITRON4.0慌屯 Real-Time OS *//* カ〖ネルメモリ瓷妄 *//* *//* Copyright (C) 1998-2002 by Project HOS *//* http://sourceforge.jp/projects/hos/ *//* ------------------------------------------------------------------------ */#include "knl_mem.h"/* メモリの豺庶 */void kernel_fre_mem(VP ptr){ T_KERNEL_MEM_BLK *mblk; T_KERNEL_MEM_BLK *mblktmp; T_KERNEL_MEM_BLK *mblknext; /* ポインタ认跋チェック */ if ( ptr < (VP)kernel_mem_base || ptr >= (VP)((UB*)kernel_mem_base + kernel_mem_size) ) { return; } /* メモリブロック疤弥を艰评 */ mblk = (T_KERNEL_MEM_BLK *)((UB *)ptr - MEMBLKSIZE); /* パラメ〖タ〖チェック */#ifdef HOS_ERCHK_E_PAR if ( mblk->flag != MEMBLK_USING ) /* 蝗脱面で痰ければ */ { return; }#endif /* フラグを踏蝗脱に肋年 */ mblk->flag = MEMBLK_FREE; /* 肌のブロックをチェック */ mblktmp = (T_KERNEL_MEM_BLK *)((UB *)ptr + mblk->size); if ( mblktmp->flag == MEMBLK_FREE ) { /* 肌のブロックが踏蝗脱なら冯圭する */ mblknext = (T_KERNEL_MEM_BLK *)((UB *)mblktmp + mblktmp->size + MEMBLKSIZE); mblknext->prev = mblk; mblk->size += mblktmp->size + MEMBLKSIZE; } /* 涟のブロックをチェック */ if ( mblk->prev != NULL ) { mblktmp = mblk->prev; if ( mblktmp->flag == MEMBLK_FREE ) { /* 涟の痰ロックが踏蝗脱なら冯圭する */ mblknext = (T_KERNEL_MEM_BLK *)((UB *)mblk + mblk->size + MEMBLKSIZE); mblknext->prev = mblktmp; mblktmp->size += mblk->size + MEMBLKSIZE; } }}/* ------------------------------------------------------------------------ *//* Copyright (C) 1998-2002 by Project HOS *//* ------------------------------------------------------------------------ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -