📄 alc_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"/* メモリの充り碰て */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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -