#ifndef UCT_ROCM_IPC_CACHE_H_
#define UCT_ROCM_IPC_CACHE_H_
#include <ucs/datastruct/pgtable.h>
#include <ucs/datastruct/list.h>
#include "rocm_ipc_md.h"
typedef struct uct_cuda_ipc_cache_region {
ucs_pgt_region_t super;
ucs_list_link_t list;
uct_rocm_ipc_key_t key;
void *mapped_addr;
} uct_rocm_ipc_cache_region_t;
typedef struct uct_rocm_ipc_cache {
pthread_rwlock_t lock;
ucs_pgtable_t pgtable;
char *name;
} uct_rocm_ipc_cache_t;
ucs_status_t uct_rocm_ipc_create_cache(uct_rocm_ipc_cache_t **cache,
const char *name);
void uct_rocm_ipc_destroy_cache(uct_rocm_ipc_cache_t *cache);
ucs_status_t uct_rocm_ipc_cache_map_memhandle(void *arg, uct_rocm_ipc_key_t *key,
void **mapped_addr);
#endif