mempfix.h

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

mempfix.h125 行で定義されています。

参照元 ref_tsk().


型定義


関数

void get_mpf_block ( MPFCB p_mpfcb,
void **  p_blk 
)

mempfix.c150 行で定義されています。

参照先 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   ) 

mempfix.c128 行で定義されています。

参照先 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 ID tmax_mpfid


Copyright © 2008 by Kijineko Inc.

ホームページ制作