aboutsummaryrefslogtreecommitdiff
path: root/lib/private.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private.h')
-rw-r--r--lib/private.h31
1 files changed, 27 insertions, 4 deletions
diff --git a/lib/private.h b/lib/private.h
index 05d2fa4..2e9a769 100644
--- a/lib/private.h
+++ b/lib/private.h
@@ -149,11 +149,25 @@ struct pci_dev {
struct dma_controller;
+enum vfu_ctx_pending_state {
+ VFU_CTX_PENDING_NONE,
+ VFU_CTX_PENDING_MSG,
+ VFU_CTX_PENDING_DEVICE_RESET,
+ VFU_CTX_PENDING_CTX_RESET
+};
+
+struct vfu_ctx_pending_info {
+ enum vfu_ctx_pending_state state;
+ vfu_msg_t *msg;
+
+ /* when pending == VFU_CTX_PENDING_XXX_RESET */
+ uint32_t migr_dev_state;
+};
+
struct vfu_ctx {
void *pvt;
struct dma_controller *dma;
- vfu_reset_cb_t *reset;
- int log_level;
+ int log_level;
vfu_log_fn_t *log;
size_t nr_regions;
vfu_reg_info_t *reg_info;
@@ -162,20 +176,26 @@ struct vfu_ctx {
void *tran_data;
uint64_t flags;
char *uuid;
+
+ /* device callbacks */
+ vfu_device_quiesce_cb_t *quiesce;
+ vfu_reset_cb_t *reset;
vfu_dma_register_cb_t *dma_register;
vfu_dma_unregister_cb_t *dma_unregister;
int client_max_fds;
size_t client_max_data_xfer_size;
+ struct vfu_ctx_pending_info pending;
+
struct migration *migration;
- bool migr_trans_pending;
- vfu_msg_t *migr_trans_msg;
uint32_t irq_count[VFU_DEV_NUM_IRQS];
vfu_irqs_t *irqs;
bool realized;
vfu_dev_type_t dev_type;
+
+ ssize_t pci_cap_exp_off;
};
typedef struct ioeventfd {
@@ -228,6 +248,9 @@ MOCK_DECLARE(bool, cmd_allowed_when_stopped_and_copying, uint16_t cmd);
MOCK_DECLARE(bool, should_exec_command, vfu_ctx_t *vfu_ctx, uint16_t cmd);
+MOCK_DECLARE(ssize_t, migr_trans_to_valid_state, vfu_ctx_t *vfu_ctx,
+ struct migration *migr, uint32_t device_state, bool notify);
+
#endif /* LIB_VFIO_USER_PRIVATE_H */
/* ex: set tabstop=4 shiftwidth=4 softtabstop=4 expandtab: */