vhost: convert buffer addresses to GPA for logging
[dpdk.git] / lib / librte_vhost / rte_vhost.h
index 338e47c..fa813b0 100644 (file)
@@ -172,7 +172,15 @@ struct vhost_device_ops {
        int (*new_connection)(int vid);
        void (*destroy_connection)(int vid);
 
-       void *reserved[2]; /**< Reserved for future extension */
+       /**
+        * This callback gets called each time a guest gets notified
+        * about waiting packets. This is the interrupt handling trough
+        * the eventfd_write(callfd), which can be used for counting these
+        * "slow" syscalls.
+        */
+       void (*guest_notified)(int vid);
+
+       void *reserved[1]; /**< Reserved for future extension */
 };
 
 /**
@@ -225,6 +233,7 @@ rte_vhost_gpa_to_vva(struct rte_vhost_memory *mem, uint64_t gpa)
  * @return
  *  the host virtual address on success, 0 on failure
  */
+__rte_experimental
 static __rte_always_inline uint64_t
 rte_vhost_va_from_guest_pa(struct rte_vhost_memory *mem,
                                                   uint64_t gpa, uint64_t *len)
@@ -265,7 +274,7 @@ rte_vhost_va_from_guest_pa(struct rte_vhost_memory *mem,
  * @param vid
  *  vhost device ID
  * @param addr
- *  the starting address for write
+ *  the starting address for write (in guest physical address space)
  * @param len
  *  the length to write
  */
@@ -313,7 +322,8 @@ int rte_vhost_driver_unregister(const char *path);
  * @return
  *  0 on success, -1 on failure
  */
-int __rte_experimental
+__rte_experimental
+int
 rte_vhost_driver_attach_vdpa_device(const char *path, int did);
 
 /**
@@ -324,7 +334,8 @@ rte_vhost_driver_attach_vdpa_device(const char *path, int did);
  * @return
  *  0 on success, -1 on failure
  */
-int __rte_experimental
+__rte_experimental
+int
 rte_vhost_driver_detach_vdpa_device(const char *path);
 
 /**
@@ -335,7 +346,8 @@ rte_vhost_driver_detach_vdpa_device(const char *path);
  * @return
  *  Device id, -1 on failure
  */
-int __rte_experimental
+__rte_experimental
+int
 rte_vhost_driver_get_vdpa_device_id(const char *path);
 
 /**
@@ -403,7 +415,8 @@ int rte_vhost_driver_get_features(const char *path, uint64_t *features);
  * @return
  *  0 on success, -1 on failure
  */
-int __rte_experimental
+__rte_experimental
+int
 rte_vhost_driver_set_protocol_features(const char *path,
                uint64_t protocol_features);
 
@@ -417,7 +430,8 @@ rte_vhost_driver_set_protocol_features(const char *path,
  * @return
  *  0 on success, -1 on failure
  */
-int __rte_experimental
+__rte_experimental
+int
 rte_vhost_driver_get_protocol_features(const char *path,
                uint64_t *protocol_features);
 
@@ -431,7 +445,8 @@ rte_vhost_driver_get_protocol_features(const char *path,
  * @return
  *  0 on success, -1 on failure
  */
-int __rte_experimental
+__rte_experimental
+int
 rte_vhost_driver_get_queue_num(const char *path, uint32_t *queue_num);
 
 /**
@@ -656,7 +671,8 @@ uint32_t rte_vhost_rx_queue_count(int vid, uint16_t qid);
  * @return
  *  0 on success, -1 on failure
  */
-int __rte_experimental
+__rte_experimental
+int
 rte_vhost_get_log_base(int vid, uint64_t *log_base, uint64_t *log_size);
 
 /**
@@ -673,7 +689,8 @@ rte_vhost_get_log_base(int vid, uint64_t *log_base, uint64_t *log_size);
  * @return
  *  0 on success, -1 on failure
  */
-int __rte_experimental
+__rte_experimental
+int
 rte_vhost_get_vring_base(int vid, uint16_t queue_id,
                uint16_t *last_avail_idx, uint16_t *last_used_idx);
 
@@ -691,7 +708,8 @@ rte_vhost_get_vring_base(int vid, uint16_t queue_id,
  * @return
  *  0 on success, -1 on failure
  */
-int __rte_experimental
+__rte_experimental
+int
 rte_vhost_set_vring_base(int vid, uint16_t queue_id,
                uint16_t last_avail_idx, uint16_t last_used_idx);
 
@@ -707,7 +725,8 @@ rte_vhost_set_vring_base(int vid, uint16_t queue_id,
  * @return
  *  0 on success, -1 on failure
  */
-int __rte_experimental
+__rte_experimental
+int
 rte_vhost_extern_callback_register(int vid,
                struct rte_vhost_user_extern_ops const * const ops, void *ctx);
 
@@ -719,7 +738,8 @@ rte_vhost_extern_callback_register(int vid,
  * @return
  *  device id
  */
-int __rte_experimental
+__rte_experimental
+int
 rte_vhost_get_vdpa_device_id(int vid);
 
 #ifdef __cplusplus