summaryrefslogtreecommitdiffstats
path: root/userspace/lib/rpc_emulator.h
blob: 1b641bfd2b7dde6673e4833cb44f275433dc354a (plain)
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
46
47
48
49
50
51
52
53
/*
 * GSP vGPU-IO Userspace RPC Emulator - Header
 */

#ifndef _RPC_EMULATOR_H_
#define _RPC_EMULATOR_H_

#include <stdint.h>
#include <stdbool.h>
#include "libvgpu.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Emulation mode control */
void rpc_emu_enable(bool enable);
bool rpc_emu_is_enabled(void);

/* BAR Emulation */
int rpc_emu_bar_config(uint32_t vf_id, uint64_t offset, uint64_t size);
int rpc_emu_bar_force_access(uint32_t vf_id, bool enable);
int rpc_emu_bar_save(uint32_t vf_id, void *buf, size_t *size);
int rpc_emu_bar_restore(uint32_t vf_id, const void *buf, size_t size);
int rpc_emu_bar_get_state(uint32_t vf_id, uint64_t *offset, uint64_t *size);

/* WPR Emulation */
int rpc_emu_wpr_protect_write(uint32_t vf_id, uint64_t base, uint64_t size);
int rpc_emu_wpr_protect_read(uint32_t vf_id, uint64_t base, uint64_t size);
int rpc_emu_wpr_protect(uint32_t vf_id, uint64_t base, uint64_t size, uint32_t flags);
int rpc_emu_wpr_unprotect(uint32_t vf_id, uint64_t base);
int rpc_emu_wpr_set_timeout(uint32_t vf_id, uint64_t timeout_ns);
int rpc_emu_wpr_check_access(uint32_t vf_id, uint64_t addr, uint32_t access_type);

/* Scheduling Emulation */
int rpc_emu_schedule(uint32_t vf_id, uint64_t work_handle, uint64_t callback, uint64_t arg, uint32_t priority, uint32_t flags);
int rpc_emu_yield(uint32_t vf_id);

/* Notification Emulation */
typedef void (*rpc_emu_notify_cb_t)(uint32_t vf_id, uint32_t type, void *data, size_t size, void *ctx);
int rpc_emu_notify_register(uint32_t vf_id, uint32_t type, rpc_emu_notify_cb_t cb, void *ctx);
int rpc_emu_notify_unregister(uint32_t vf_id, uint32_t type);
int rpc_emu_notify_send(uint32_t vf_id, uint32_t type, void *data, size_t size);

/* Init/Fini */
int rpc_emu_init(void);
void rpc_emu_fini(void);

#ifdef __cplusplus
}
#endif

#endif /* _RPC_EMULATOR_H_ */