#ifndef UCT_ROCM_COPY_MD_H
#define UCT_ROCM_COPY_MD_H
#include <uct/base/uct_md.h>
#include <ucs/config/types.h>
#include <ucs/memory/rcache.h>
extern uct_component_t uct_rocm_copy_component;
typedef struct uct_rocm_copy_md {
uct_md_t super;
ucs_rcache_t *rcache;
ucs_linear_func_t reg_cost;
} uct_rocm_copy_md_t;
typedef struct uct_rocm_copy_md_config {
uct_md_config_t super;
ucs_ternary_auto_value_t enable_rcache;
uct_md_rcache_config_t rcache;
ucs_linear_func_t uc_reg_cost;
} uct_rocm_copy_md_config_t;
typedef struct uct_rocm_copy_mem {
void *vaddr;
void *dev_ptr;
size_t reg_size;
} uct_rocm_copy_mem_t;
typedef struct uct_rocm_copy_key {
uint64_t vaddr;
void *dev_ptr;
} uct_rocm_copy_key_t;
typedef struct uct_rocm_copy_rcache_region {
ucs_rcache_region_t super;
uct_rocm_copy_mem_t memh;
} uct_rocm_copy_rcache_region_t;
#endif