rcache/udreg: make reference count thread safe
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
Этот коммит содержится в:
родитель
1eb4ef438e
Коммит
4658b761e4
@ -301,7 +301,7 @@ static int mca_rcache_udreg_register(mca_rcache_base_module_t *rcache, void *add
|
||||
OPAL_THREAD_UNLOCK(&rcache_udreg->lock);
|
||||
|
||||
*reg = udreg_reg;
|
||||
++udreg_reg->ref_count;
|
||||
(void) OPAL_THREAD_ADD32(&udreg_reg->ref_count, 1);
|
||||
udreg_reg->rcache_context = udreg_entry;
|
||||
|
||||
return OPAL_SUCCESS;
|
||||
@ -318,16 +318,15 @@ static int mca_rcache_udreg_deregister(mca_rcache_base_module_t *rcache,
|
||||
mca_rcache_base_registration_t *reg)
|
||||
{
|
||||
mca_rcache_udreg_module_t *rcache_udreg = (mca_rcache_udreg_module_t *) rcache;
|
||||
int32_t ref_count = OPAL_THREAD_ADD32 (®->ref_count, -1);
|
||||
|
||||
assert(reg->ref_count > 0);
|
||||
|
||||
--reg->ref_count;
|
||||
assert(ref_count >= 0);
|
||||
|
||||
if (!(reg->flags & MCA_RCACHE_FLAGS_CACHE_BYPASS)) {
|
||||
OPAL_THREAD_LOCK(&rcache_udreg->lock);
|
||||
UDREG_DecrRefcount (rcache_udreg->udreg_handle, reg->rcache_context);
|
||||
OPAL_THREAD_UNLOCK(&rcache_udreg->lock);
|
||||
} else if (!reg->ref_count) {
|
||||
} else if (!ref_count) {
|
||||
mca_rcache_udreg_dereg_func (reg, rcache);
|
||||
}
|
||||
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user