vmm: Added more syscalls and helpers to linuxemu
[akaros.git] / user / vmm / include / vmm / virtio.h
index 18c3b8b..473d5bf 100644 (file)
@@ -16,9 +16,9 @@
 
 #include <stdint.h>
 #include <err.h>
-#include <pthread.h>
 #include <sys/uio.h>
 #include <vmm/virtio_ring.h>
+#include <vmm/sched.h>
 
 // This file contains the core virtio structs, functions, and macros for Akaros
 
@@ -72,7 +72,7 @@ struct virtio_vq {
        void *(*srv_fn)(void *arg);
 
        // The thread that the service function is running in
-       pthread_t srv_th;
+       struct task_thread *srv_th;
 
        // Write eventfd to wake up the service function; it blocks on eventfd read
        int eventfd;
@@ -113,3 +113,16 @@ struct virtio_vq_dev {
        // Flexible array of vqs on this device
        struct virtio_vq vqs[];
 };
+
+// Do not include virtio_lguest_helpers.h directly. You should include the
+// contained functions by including virtio.h. These functions are kept apart
+// from virtio.h so that we can keep a clean separation between our code
+// and code derived from lguest.
+#include <vmm/virtio_lguest_helpers.h>
+
+// Returns NULL if the features are valid, otherwise returns
+// an error string describing what part of validation failed
+// We pass the vqdev instead of just the dev_id in case we
+// also want to validate the device-specific config space.
+// feat is the feature vector that you want to validate for the vqdev
+const char *virtio_validate_feat(struct virtio_vq_dev *vqdev, uint64_t feat);