static unsigned int __thread cpu_id;
 
 /* This is our list of devices. */
-struct device_list
-{
+struct device_list {
        /* Counter to assign interrupt numbers. */
        unsigned int next_irq;
 
 static struct device_list devices;
 
 /* The device structure describes a single device. */
-struct device
-{
+struct device {
        /* The linked-list pointer. */
        struct device *next;
 
 };
 
 /* The virtqueue structure describes a queue attached to a device. */
-struct virtqueue
-{
+struct virtqueue {
        struct virtqueue *next;
 
        /* Which device owns me. */
  *
  * We associate some data with the console for our exit hack.
  */
-struct console_abort
-{
+struct console_abort {
        /* How many times have they hit ^C? */
        int count;
        /* When did they start? */
 /*:*/
 
 /* This hangs off device->priv. */
-struct vblk_info
-{
+struct vblk_info {
        /* The size of the file. */
        off64_t len;
 
        /* The file descriptor for the file. */
        int fd;
 
-       /* IO thread listens on this file descriptor [0]. */
-       int workpipe[2];
-
-       /* IO thread writes to this file descriptor to mark it done, then
-        * Launcher triggers interrupt to Guest. */
-       int done_fd;
 };
 
 /*L:210
 
 void free_pagetables(void);
 int init_pagetables(struct page **switcher_page, unsigned int pages);
 
-struct pgdir
-{
+struct pgdir {
        unsigned long gpgdir;
        pgd_t *pgdir;
 };
 
 /* We have two pages shared with guests, per cpu.  */
-struct lguest_pages
-{
+struct lguest_pages {
        /* This is the stack page mapped rw in guest */
        char spare[PAGE_SIZE - sizeof(struct lguest_regs)];
        struct lguest_regs regs;
 };
 
 /* The private info the thread maintains about the guest. */
-struct lguest
-{
+struct lguest {
        struct lguest_data __user *lguest_data;
        struct lg_cpu cpus[NR_CPUS];
        unsigned int nr_cpus;
 
  */
 
 /*D:140 This is the information we remember about each virtqueue. */
-struct lguest_vq_info
-{
+struct lguest_vq_info {
        /* A copy of the information contained in the device config. */
        struct lguest_vqconfig config;
 
 
  * lguest_data".  Once the Guest's initialization hypercall tells the Host where
  * this is, the Guest and Host both publish information in it.
 :*/
-struct lguest_data
-{
+struct lguest_data {
        /*
         * 512 == enabled (same as eflags in normal hardware).  The Guest
         * changes interrupts so often that a hypercall is too slow.
 
 
 #define VIRTIO_BLK_ID_BYTES    (sizeof(__u16[256]))    /* IDENTIFY DATA */
 
-struct virtio_blk_config
-{
+struct virtio_blk_config {
        /* The capacity (in 512-byte sectors). */
        __u64 capacity;
        /* The maximum segment size (if VIRTIO_BLK_F_SIZE_MAX) */
 #define VIRTIO_BLK_T_BARRIER   0x80000000
 
 /* This is the first element of the read scatter-gather list. */
-struct virtio_blk_outhdr
-{
+struct virtio_blk_outhdr {
        /* VIRTIO_BLK_T* */
        __u32 type;
        /* io priority. */
 
  *     the dev->feature bits if it wants.
  */
 typedef void vq_callback_t(struct virtqueue *);
-struct virtio_config_ops
-{
+struct virtio_config_ops {
        void (*get)(struct virtio_device *vdev, unsigned offset,
                    void *buf, unsigned len);
        void (*set)(struct virtio_device *vdev, unsigned offset,
 
 
 #define VIRTIO_NET_S_LINK_UP   1       /* Link is up */
 
-struct virtio_net_config
-{
+struct virtio_net_config {
        /* The config defining mac address (if VIRTIO_NET_F_MAC) */
        __u8 mac[6];
        /* See VIRTIO_NET_F_STATUS and VIRTIO_NET_S_* above */
 
 /* This is the first element of the scatter-gather list.  If you don't
  * specify GSO or CSUM features, you can simply ignore the header. */
-struct virtio_net_hdr
-{
+struct virtio_net_hdr {
 #define VIRTIO_NET_HDR_F_NEEDS_CSUM    1       // Use csum_start, csum_offset
        __u8 flags;
 #define VIRTIO_NET_HDR_GSO_NONE                0       // Not a GSO frame
 
 #define VIRTIO_RING_F_INDIRECT_DESC    28
 
 /* Virtio ring descriptors: 16 bytes.  These can chain together via "next". */
-struct vring_desc
-{
+struct vring_desc {
        /* Address (guest-physical). */
        __u64 addr;
        /* Length. */
        __u16 next;
 };
 
-struct vring_avail
-{
+struct vring_avail {
        __u16 flags;
        __u16 idx;
        __u16 ring[];
 };
 
 /* u32 is used here for ids for padding reasons. */
-struct vring_used_elem
-{
+struct vring_used_elem {
        /* Index of start of used descriptor chain. */
        __u32 id;
        /* Total length of the descriptor chain which was used (written to) */
        __u32 len;
 };
 
-struct vring_used
-{
+struct vring_used {
        __u16 flags;
        __u16 idx;
        struct vring_used_elem ring[];