fix off by one on up_align_addr, use base and bound instead of base_align and
bound_align.. This commit was SVN r7521.
Этот коммит содержится в:
родитель
621fb2b99e
Коммит
09e67ce4fd
@ -44,7 +44,7 @@ static inline void *down_align_addr(void* addr, unsigned int shift) {
|
||||
}
|
||||
|
||||
static inline void *up_align_addr(void*addr, unsigned int shift) {
|
||||
return (void*) ((((unsigned long) addr) | ~((~(unsigned long) 0) << shift)) + 1);
|
||||
return (void*) ((((unsigned long) addr) | ~((~(unsigned long) 0) << shift)));
|
||||
}
|
||||
|
||||
struct mca_mpool_base_selected_module_t {
|
||||
|
@ -36,6 +36,10 @@ void mca_mpool_base_mem_cb(void* base, size_t size, void* cbdata)
|
||||
opal_list_item_t* item;
|
||||
void* base_addr;
|
||||
void* bound_addr;
|
||||
if(size == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
base_addr = down_align_addr( base, mca_mpool_base_page_size_log);
|
||||
bound_addr = up_align_addr((void*) ((unsigned long) base + size - 1), mca_mpool_base_page_size_log);
|
||||
OBJ_CONSTRUCT(®s, ompi_pointer_array_t);
|
||||
|
@ -92,12 +92,10 @@ int mca_mpool_gm_register(
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
reg->mpool = mpool;
|
||||
reg->base = addr;
|
||||
reg->base = down_align_addr(addr, mca_mpool_base_page_size_log);
|
||||
reg->flags = flags;
|
||||
reg->bound = reg->base + size - 1;
|
||||
reg->base_align = down_align_addr(addr, mca_mpool_base_page_size_log);
|
||||
reg->bound_align = up_align_addr(reg->bound
|
||||
, mca_mpool_base_page_size_log);
|
||||
reg->bound = up_align_addr(reg->base + size -1
|
||||
, mca_mpool_base_page_size_log);
|
||||
|
||||
OPAL_THREAD_ADD32(®->ref_count,1);
|
||||
|
||||
|
@ -36,8 +36,6 @@ struct mca_mpool_base_registration_t {
|
||||
unsigned char* base;
|
||||
unsigned char* bound;
|
||||
unsigned char* alloc_base;
|
||||
unsigned char* base_align;
|
||||
unsigned char* bound_align;
|
||||
void* user_data;
|
||||
uint32_t ref_count;
|
||||
uint32_t flags;
|
||||
|
@ -65,8 +65,6 @@ static void mca_mpool_mvapi_registration_constructor( mca_mpool_mvapi_registrati
|
||||
{
|
||||
registration->base_reg.base = NULL;
|
||||
registration->base_reg.bound = NULL;
|
||||
registration->base_reg.base_align = NULL;
|
||||
registration->base_reg.bound_align = NULL;
|
||||
registration->base_reg.flags = 0;
|
||||
|
||||
}
|
||||
|
@ -126,13 +126,11 @@ int mca_mpool_mvapi_register(
|
||||
|
||||
vapi_reg->l_key = mr_out.l_key;
|
||||
vapi_reg->r_key = mr_out.r_key;
|
||||
vapi_reg->base_reg.base = addr;
|
||||
vapi_reg->base_reg.bound = (unsigned char*) (unsigned long) addr + size - 1;
|
||||
vapi_reg->base_reg.base_align = down_align_addr(addr, mca_mpool_base_page_size_log);
|
||||
vapi_reg->base_reg.bound_align = up_align_addr(vapi_reg->base_reg.bound
|
||||
vapi_reg->base_reg.base = down_align_addr(addr, mca_mpool_base_page_size_log);
|
||||
vapi_reg->base_reg.bound = up_align_addr((void*) ((unsigned long) addr + size - 1)
|
||||
, mca_mpool_base_page_size_log);
|
||||
|
||||
assert(vapi_reg->base_reg.bound - vapi_reg->base_reg.base > 0);
|
||||
assert(vapi_reg->base_reg.bound - vapi_reg->base_reg.base >= 0);
|
||||
|
||||
if(flags & (MCA_MPOOL_FLAGS_CACHE | MCA_MPOOL_FLAGS_PERSIST)) {
|
||||
mpool->rcache->rcache_insert(mpool->rcache,
|
||||
|
@ -103,13 +103,10 @@ int mca_mpool_openib_register(mca_mpool_base_module_t* mpool,
|
||||
return OMPI_ERROR;
|
||||
}
|
||||
|
||||
vapi_reg->base_reg.base = addr;
|
||||
vapi_reg->base_reg.bound = (void*) ((char*) addr + size - 1);
|
||||
vapi_reg->base_reg.base_align = down_align_addr(addr, mca_mpool_base_page_size_log);
|
||||
vapi_reg->base_reg.bound_align = up_align_addr(vapi_reg->base_reg.bound
|
||||
, mca_mpool_base_page_size_log);
|
||||
|
||||
|
||||
vapi_reg->base_reg.base = down_align_addr(addr, mca_mpool_base_page_size_log);
|
||||
vapi_reg->base_reg.bound = up_align_addr( (void*) ((char*) addr + size - 1)
|
||||
, mca_mpool_base_page_size_log);
|
||||
|
||||
if(flags & (MCA_MPOOL_FLAGS_CACHE | MCA_MPOOL_FLAGS_PERSIST)) {
|
||||
mpool->rcache->rcache_insert(mpool->rcache,
|
||||
(mca_mpool_base_registration_t*) vapi_reg,
|
||||
|
@ -75,9 +75,9 @@ int mca_rcache_rb_find (
|
||||
if(rc == OMPI_SUCCESS) {
|
||||
*cnt = 1;
|
||||
}
|
||||
assert(tree_item->reg->bound - tree_item->reg->base > 0);
|
||||
assert(((void*) tree_item->reg->base_align) <= addr);
|
||||
assert(((void*) tree_item->reg->bound_align) >= addr);
|
||||
assert(tree_item->reg->bound - tree_item->reg->base >= 0);
|
||||
assert(((void*) tree_item->reg->base) <= addr);
|
||||
assert(((void*) tree_item->reg->bound) >= addr);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -60,8 +60,8 @@ struct mca_rcache_rb_tree_item_t * mca_rcache_rb_tree_find(
|
||||
ompi_rb_tree_find(&rcache->rb_tree, &key);
|
||||
|
||||
if(NULL != found ) {
|
||||
if((void*) found->reg->base_align > base ||
|
||||
(void*) found->reg->bound_align < base){
|
||||
if((void*) found->reg->base > base ||
|
||||
(void*) found->reg->bound < base){
|
||||
assert(0);
|
||||
}
|
||||
}
|
||||
@ -116,8 +116,8 @@ int mca_rcache_rb_tree_insert(
|
||||
return rc;
|
||||
rb_tree_item = (mca_rcache_rb_tree_item_t*) item;
|
||||
|
||||
rb_tree_item->key.base = reg->base_align;
|
||||
rb_tree_item->key.bound = reg->bound_align;
|
||||
rb_tree_item->key.base = reg->base;
|
||||
rb_tree_item->key.bound = reg->bound;
|
||||
rb_tree_item->reg = reg;
|
||||
|
||||
rc = ompi_rb_tree_insert(&rb_module->rb_tree,
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user