static uintptr_t uct_ugni_safe_swap_pointers(void *address, uintptr_t new_value) { if (sizeof(void*) == 4) { return ucs_atomic_swap32(address, new_value); } else { return ucs_atomic_swap64(address, new_value); } }
ucs_status_t uct_mm_ep_atomic_swap64(uct_ep_h tl_ep, uint64_t swap, uint64_t remote_addr, uct_rkey_t rkey, uint64_t *result, uct_completion_t *comp) { uint64_t *ptr = (uint64_t *)(rkey + remote_addr); *result = ucs_atomic_swap64(ptr, swap); uct_mm_trace_data(remote_addr, rkey, "ATOMIC_SWAP64 [swap %"PRIu64" result %"PRIu64"]", swap, *result); return UCS_OK; }