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