mtkernel_3/kernel/tkernel/mempfix.h | bare source | permlink (0.02 seconds) |
1: /* 2: *---------------------------------------------------------------------- 3: * micro T-Kernel 3.00.00 4: * 5: * Copyright (C) 2006-2019 by Ken Sakamura. 6: * This software is distributed under the T-License 2.1. 7: *---------------------------------------------------------------------- 8: * 9: * Released by TRON Forum(http://www.tron.org) at 2019/12/11. 10: * 11: *---------------------------------------------------------------------- 12: */ 13: 14: /* 15: * mempfix.h 16: * Fixed Size Memory Pool 17: */ 18: 19: #ifndef _MEMPFIX_H_ 20: #define _MEMPFIX_H_ 21: 22: /* 23: * Fixed size memory pool control block 24: */ 25: typedef struct free_list { 26: struct free_list *next; 27: } FREEL; 28: 29: typedef struct fix_memorypool_control_block { 30: QUEUE wait_queue; /* Memory pool wait queue */ 31: ID mpfid; /* Fixed size memory pool ID */ 32: void *exinf; /* Extended information */ 33: ATR mpfatr; /* Memory pool attribute */ 34: W mpfcnt; /* Number of blocks in whole memory pool */ 35: W blfsz; /* Fixed size memory block size */ 36: W mpfsz; /* Whole memory pool size */ 37: W frbcnt; /* Number of blocks in free area */ 38: void *mempool; /* Top address of memory pool */ 39: void *unused; /* Top address of unused area */ 40: FREEL *freelist; /* Free block list */ 41: OBJLOCK lock; /* Lock for object exclusive access */ 42: #if USE_OBJECT_NAME 43: UB name[OBJECT_NAME_LENGTH]; /* name */ 44: #endif 45: } MPFCB; 46: 47: IMPORT MPFCB knl_mpfcb_table[]; /* Fixed size memory pool control block */ 48: IMPORT QUEUE knl_free_mpfcb; /* FreeQue */ 49: 50: #define get_mpfcb(id) ( &knl_mpfcb_table[INDEX_MPF(id)] ) 51: 52: 53: #define MINSIZE ( sizeof(FREEL) ) 54: #define MINSZ(sz) ( ((UW)(sz) + (UW)(MINSIZE-1)) & ~(UW)(MINSIZE-1) ) 55: 56: /* 57: * Return end address in memory pool area 58: */ 59: Inline void *knl_mempool_end( MPFCB *mpfcb ) 60: { 61: return (VB*)mpfcb->mempool + mpfcb->mpfsz; 62: } 63: 64: 65: 66: #endif /* _MEMPFIX_H_ */