alc_hep.c

来自「iTRON4.0最新操作系统」· C语言 代码 · 共 67 行

C
67
字号
/* ------------------------------------------------------------------------ *//*  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"/* メモリの充り碰て */VP kernel_alc_hep(		T_KERNEL_HEPCB *pk_hepcb,		SIZE           size){	T_KERNEL_HEPBLK *mblk;	T_KERNEL_HEPBLK *mblk_next;	T_KERNEL_HEPBLK *mblk_next2;		/* ヒ〖プの赂哼チェック */	if ( pk_hepcb->base == NULL )	{		return NULL;	}		/* サイズのアライメントを拇腊} */	size = KERNEL_HEP_ALIGNED(size);		/* 鄂き挝拌を浮瑚 */	mblk = pk_hepcb->base;	while ( mblk->size != 0 )	{		if ( mblk->flag == KERNEL_HEP_FREE && mblk->size >= size )		{			/* 浇尸な推翁があったら */			if ( mblk->size - size > KERNEL_HEP_BLKSIZE + KERNEL_HEP_MEMALIGN )			{				/* ブロックを尸充する */				mblk_next  = (T_KERNEL_HEPBLK *)((UB *)mblk + KERNEL_HEP_BLKSIZE + size);				mblk_next2 = (T_KERNEL_HEPBLK *)((UB *)mblk + KERNEL_HEP_BLKSIZE + mblk->size);				mblk_next->prev  = mblk;				mblk_next->size  = mblk->size - size - KERNEL_HEP_BLKSIZE;				mblk_next->flag  = KERNEL_HEP_FREE;				mblk_next2->prev = mblk_next;				mblk->size       = size;			}			mblk->flag = KERNEL_HEP_USING;						return (VP)((UB *)mblk + KERNEL_HEP_BLKSIZE);		}				/* 肌のブロックへ渴む */		mblk = (T_KERNEL_HEPBLK *)((UB *)mblk + mblk->size + KERNEL_HEP_BLKSIZE);	}	return NULL;	/* 鄂きが痰い */}/* ------------------------------------------------------------------------ *//*  Copyright (C) 1998-2006 by Project HOS                                  *//* ------------------------------------------------------------------------ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?