-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathVEOWrapper.hpp
45 lines (40 loc) · 1.3 KB
/
VEOWrapper.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/**
* @file VEOWrapper.hpp
* @brief VEO API wrapper
*/
#ifndef INTERDEVCOPY_VEO_WRAPPER_HPP_INCLUDE_
#define INTERDEVCOPY_VEO_WRAPPER_HPP_INCLUDE_
#include <ve_offload.h>
#include <veo_dev_mem.h>
#include <veo_vedma.h>
#include <stdexcept>
#include <string>
namespace interdevcopy {
namespace veo {
bool init_wrapper();
class UnhandleableVEOError: public std::runtime_error {
public:
UnhandleableVEOError(int, const std::string &);
};
// wrapper functions
namespace wrap {
// ve_offload.h
veo_proc_handle *veo_get_proc_handle_from_hmem(const void *);
// veo_hmem.h
int veo_is_ve_addr(const void *);
// veo_dev_mem.h
int64_t veo_attach_dev_mem(veo_proc_handle *, int);
int veo_detach_dev_mem(veo_proc_handle *, const uint64_t);
int veo_register_gpu_mem(veo_proc_handle *, uint64_t, uint64_t, uint64_t *);
int veo_unregister_gpu_mem(veo_proc_handle *, int);
uint64_t veo_register_mem_to_dmaatb_unalign(void *, size_t);
int veo_unregister_mem_from_dmaatb_unalign(struct veo_proc_handle *, uint64_t);
// veo_vedma.h
int veo_dma_post(struct veo_proc_handle *, uint64_t, uint64_t, int,
ve_dma_handle_t *);
int veo_dma_poll(struct veo_proc_handle *, ve_dma_handle_t *);
int veo_hmemcpy(void *, const void *, size_t);
} // namespace interdevcopy::veo::wrap
} // namespace interdevcopy::veo
} // namespace interdevcopy
#endif