📄 alc_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"/* メモリの充り碰て */VP kernel_alc_mem( SIZE size) /* 艰评する挝拌のサイズ */{ T_KERNEL_MEM_BLK *mblk; T_KERNEL_MEM_BLK *mblk_next; /* ヒ〖プの赂哼チェック */ if ( kernel_mem_base == NULL ) { return NULL; } /* サイズのアライメントを拇腊 */ size = (size + MEMBLK_ALIGN - 1) & ~(MEMBLK_ALIGN - 1); /* 鄂き挝拌を浮瑚 */ mblk = kernel_mem_base; while ( mblk->size != 0 ) { if ( mblk->flag == MEMBLK_FREE && mblk->size >= size ) { /* 浇尸な推翁があったら */ if ( mblk->size - size > MEMBLKSIZE + MEMBLK_ALIGN ) { /* ブロックを尸充する */ mblk_next = (T_KERNEL_MEM_BLK *)((UB *)mblk + MEMBLKSIZE + size); mblk_next->prev = mblk; mblk_next->size = mblk->size - size - MEMBLKSIZE; mblk_next->flag = MEMBLK_FREE; mblk->size = size; } mblk->flag = MEMBLK_USING; return (VP)((UB *)mblk + MEMBLKSIZE); } /* 肌のブロックへ渴む */ mblk = (T_KERNEL_MEM_BLK *)((UB *)mblk + mblk->size + MEMBLKSIZE); } return NULL; /* 鄂きが痰い */}/* ------------------------------------------------------------------------ *//* Copyright (C) 1998-2002 by Project HOS *//* ------------------------------------------------------------------------ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -