1
1

- Add stuff for compile-time debuging switch (which is, I think, what Rob

wanted...?)
- Added "#if ROB_HASNT_FINISHED_YET" sections around code that doesn't
  compile (will easily show up when --enable-debug) so that these files
  can compile and generate a valid liblam

This commit was SVN r122.
Этот коммит содержится в:
Jeff Squyres 2004-01-08 15:50:34 +00:00
родитель 84d5606627
Коммит 772b2157bb
2 изменённых файлов: 51 добавлений и 35 удалений

Просмотреть файл

@ -32,25 +32,28 @@ lam_class_info_t free_list_cls = {"lam_free_list_t", &lam_object_cls,
void lam_frl_init(lam_free_list_t *flist)
{
SUPER_INIT(flist, free_list_cls.cls_parent);
lam_mtx_init(&flist->fl_lock);
flist->fl_pool = 0;
flist->fl_elt_cls = 0;
flist->fl_description = 0;
flist->fl_free_lists = 0;
lam_mtutex_init(&flist->fl_lock);
flist->fl_pool = NULL;
flist->fl_elt_cls = NULL;
flist->fl_description = NULL;
flist->fl_free_lists = NULL;
flist->fl_is_shared = 0;
flist->fl_nlists = 0;
flist->fl_elt_per_chunk = 0;
flist->fl_elt_size = 0;
flist->fl_retry_more_resources = 0;
flist->fl_enforce_affinity = 0;
flist->fl_affinity = 0;
flist->fl_affinity = NULL;
flist->fl_threshold_grow = 0;
flist->fl_elt_out = 0;
flist->fl_elt_max = 0;
flist->fl_elt_sum = 0;
flist->fl_nevents = 0;
flist->fl_chunks_req= 0;
flist->fl_chunks_returned = 0;
#if LAM_ENABLE_DEBUG
flist->fl_elt_out = NULL;
flist->fl_elt_max = NULL;
flist->fl_elt_sum = NULL;
flist->fl_nevents = NULL;
flist->fl_chunks_req = NULL;
flist->fl_chunks_returned = NULL;
#endif
}
@ -65,6 +68,7 @@ void lam_frl_destroy(lam_free_list_t *flist)
if ( flist->fl_affinity )
free(flist->fl_affinity);
#if LAM_ENABLE_DEBUG
if ( flist->fl_elt_out )
free(flist->fl_elt_out);
@ -82,6 +86,7 @@ void lam_frl_destroy(lam_free_list_t *flist)
if ( flist->fl_chunks_returned )
free(flist->fl_chunks_returned);
#endif
SUPER_DESTROY(flist, free_list_cls.cls_parent);
}
@ -311,11 +316,9 @@ static void *lam_frl_get_mem_chunk(lam_free_list_t *flist, int index, size_t *le
exceed the amount allowed */
sz_to_add = lam_mp_get_chunk_size(flist->fl_pool);
/* need to add option to configure */
if (OPT_MEMPROFILE)
{
#if LAM_ENABLE_DEBUG
flist->fl_chunks_req[index]++;
}
#endif
if (index >= flist->fl_nlists)
{
@ -370,10 +373,9 @@ static void *lam_frl_get_mem_chunk(lam_free_list_t *flist, int index, size_t *le
this far in the code. */
lam_sgl_set_consec_fail(flist->fl_free_lists[index], 0);
if (OPT_MEMPROFILE)
{
#if LAM_ENABLE_DEBUG
flist->fl_chunks_returned[index]++;
}
#endif
return chunk;
}
@ -382,12 +384,16 @@ static void *lam_frl_get_mem_chunk(lam_free_list_t *flist, int index, size_t *le
static lam_flist_elt_t *lam_flr_request_elt(lam_free_list_t *flist, int pool_idx)
{
#if ROB_HASNT_FINISHED_THIS_YET
lam_dbl_list_t *seg_list = &(flist->fl_free_lists[pool_idx]->sgl_list);
volatile lam_flist_elt_t *elt = lam_dbl_get_last(seg_list);
if ( elt )
lam_sgl_set_consec_fail(seg_list, 0);
return elt;
#else
return NULL;
#endif
}
@ -452,8 +458,9 @@ static int lam_frl_create_more_elts(lam_free_list_t *flist, int pool_idx)
lam_flist_elt_t *lam_frl_get_elt(lam_free_list_t *flist, int index, int *error)
{
#if ROB_HASNT_FINISHED_THIS_YET
int error;
volatile lam_flist_elt_t *elem = 0;
volatile lam_flist_elt_t *elem = NULL;
elem = lam_flr_request_elt(flist, index);
@ -486,8 +493,7 @@ lam_flist_elt_t *lam_frl_get_elt(lam_free_list_t *flist, int index, int *error)
return 0;
}
}
if ( OPT_MEMPROFILE )
{
#if LAM_ENABLE_DEBUG
flist->fl_elt_out[index]++;
flist->fl_elt_sum[index] += flist->fl_elt_out[index];
flist->fl_nevents[index]++;
@ -495,22 +501,29 @@ lam_flist_elt_t *lam_frl_get_elt(lam_free_list_t *flist, int index, int *error)
{
flist->fl_elt_max[index] = flist->fl_elt_out[index];
}
}
#endif
return elem;
#else
return NULL;
#endif
}
int lam_frl_return_elt(lam_free_list_t *flist, int index, lam_flist_elt_t *item)
{
#if ROB_HASNT_FINISHED_THIS_YET
mb();
lam_dbl_append(&(flist->fl_free_lists[index]->sgl_list), item);
mb();
if ( OPT_MEMPROFILE ) {
#if LAM_ENABLE_DEBUG
flist->fl_elt_out[index]--;
}
#endif
return LAM_SUCCESS;
#else
return LAM_ERROR;
#endif
}

Просмотреть файл

@ -52,14 +52,17 @@ typedef struct lam_free_list
lam_affinity_t *fl_affinity; /* array of lam_affinity_t */
int fl_threshold_grow;
lam_class_info_t *fl_elt_cls; /* this will be used to create new free list elements. */
lam_mutex_t fl_lock;
/* for mem profiling */
int *fl_elt_out;
int *fl_elt_max;
int *fl_elt_sum;
int *fl_nevents;
#if LAM_ENABLE_DEBUG
int *fl_chunks_req;
int *fl_chunks_returned;
#endif
} lam_free_list_t;
extern lam_class_info_t free_list_cls;