#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.