#include <queue.h>| データ構造 | |
| struct | fixed_memoryblock_management_block | 
| struct | fixed_memorypool_initialization_block | 
| struct | fixed_memorypool_control_block | 
| struct | fixed_memorypool_waiting_information | 
| マクロ定義 | |
| #define | MPFID(p_mpfcb) ((ID)(((p_mpfcb) - mpfcb_table) + TMIN_MPFID)) | 
| 型定義 | |
| typedef struct fixed_memoryblock_management_block | MPFMB | 
| typedef struct fixed_memorypool_initialization_block | MPFINIB | 
| typedef struct fixed_memorypool_control_block | MPFCB | 
| typedef struct fixed_memorypool_waiting_information | WINFO_MPF | 
| 関数 | |
| void | initialize_mempfix (void) | 
| void | get_mpf_block (MPFCB *p_mpfcb, void **p_blk) | 
| 変数 | |
| const ID | tmax_mpfid | 
| const MPFINIB | mpfinib_table [] | 
| MPFCB | mpfcb_table [] | 
| #define MPFID | ( | p_mpfcb | ) | ((ID)(((p_mpfcb) - mpfcb_table) + TMIN_MPFID)) | 
| typedef struct fixed_memorypool_control_block MPFCB | 
| typedef struct fixed_memorypool_initialization_block MPFINIB | 
| typedef struct fixed_memoryblock_management_block MPFMB | 
| typedef struct fixed_memorypool_waiting_information WINFO_MPF | 
| void get_mpf_block | ( | MPFCB * | p_mpfcb, | |
| void ** | p_blk | |||
| ) | 
参照先 fixed_memorypool_initialization_block::blksz, fixed_memorypool_control_block::fblkcnt, fixed_memorypool_control_block::freelist, INDEX_ALLOC, INDEX_NULL, fixed_memorypool_initialization_block::mpf, fixed_memorypool_control_block::p_mpfinib, fixed_memorypool_initialization_block::p_mpfmb, と fixed_memorypool_control_block::unused.
参照元 get_mpf(), pget_mpf(), と tget_mpf().
00151 { 00152 uint_t blkidx; 00153 00154 if (p_mpfcb->freelist != INDEX_NULL) { 00155 blkidx = p_mpfcb->freelist; 00156 p_mpfcb->freelist = (p_mpfcb->p_mpfinib->p_mpfmb + blkidx)->next; 00157 } 00158 else { 00159 blkidx = p_mpfcb->unused; 00160 p_mpfcb->unused++; 00161 } 00162 *p_blk = (void *)((char *)(p_mpfcb->p_mpfinib->mpf) 00163 + p_mpfcb->p_mpfinib->blksz * blkidx); 00164 p_mpfcb->fblkcnt--; 00165 (p_mpfcb->p_mpfinib->p_mpfmb + blkidx)->next = INDEX_ALLOC; 00166 }
| void initialize_mempfix | ( | void | ) | 
参照先 fixed_memorypool_initialization_block::blkcnt, fixed_memorypool_control_block::fblkcnt, fixed_memorypool_control_block::freelist, INDEX_NULL, mpfcb_table, mpfinib_table, fixed_memorypool_control_block::p_mpfinib, queue_initialize(), tnum_mpf, fixed_memorypool_control_block::unused, と fixed_memorypool_control_block::wait_queue.
00129 { 00130 uint_t i; 00131 MPFCB *p_mpfcb; 00132 00133 for (p_mpfcb = mpfcb_table, i = 0; i < tnum_mpf; p_mpfcb++, i++) { 00134 queue_initialize(&(p_mpfcb->wait_queue)); 00135 p_mpfcb->p_mpfinib = &(mpfinib_table[i]); 00136 p_mpfcb->fblkcnt = p_mpfcb->p_mpfinib->blkcnt; 00137 p_mpfcb->unused = 0U; 00138 p_mpfcb->freelist = INDEX_NULL; 00139 } 00140 }
| const MPFINIB mpfinib_table[] | 
| const ID tmax_mpfid | 
Copyright © 2008 by Kijineko Inc.