X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fdevices%2Fsym_swap.c;h=ea303e561ce7a9a0aa0785fa78fe380bf1be3627;hb=37c18b2c2335a41c68c2f0b779fd2b7d51ab216d;hp=706d1c5eb6e8d6d0fd8c5341b4bb6dbb08881812;hpb=0160025157d9bc39687eb0c5df6cb3d965d20e07;p=palacios.git diff --git a/palacios/src/devices/sym_swap.c b/palacios/src/devices/sym_swap.c index 706d1c5..ea303e5 100644 --- a/palacios/src/devices/sym_swap.c +++ b/palacios/src/devices/sym_swap.c @@ -18,8 +18,7 @@ */ #include - -#include +#include #include @@ -31,20 +30,16 @@ struct swap_state { }; -static int swap_init(struct vm_device * dev) { - return -1; -} -static int swap_deinit(struct vm_device * dev) { +static int swap_free(struct vm_device * dev) { return -1; } -static struct vm_device_ops dev_ops = { - .init = swap_init, - .deinit = swap_deinit, +static struct v3_device_ops dev_ops = { + .free = swap_free, .reset = NULL, .start = NULL, .stop = NULL, @@ -52,19 +47,37 @@ static struct vm_device_ops dev_ops = { -struct vm_device * v3_create_swap(struct vm_device * virtio_blk) { + +static int swap_init(struct guest_info * vm, void * cfg_data) { struct swap_state * swap = NULL; + struct vm_device * virtio_blk = v3_find_dev(vm, (char *)cfg_data); + + if (!virtio_blk) { + PrintError("could not find Virtio backend\n"); + return -1; + } PrintDebug("Creating Swap Device\n"); if (virtio_blk == NULL) { PrintError("Swap device requires a virtio block device\n"); - return NULL; + return -1; } swap = (struct swap_state *)V3_Malloc(sizeof(struct swap_state)); swap->blk_dev = virtio_blk; - return v3_create_device("SYM_SWAP", &dev_ops, swap); + struct vm_device * dev = v3_allocate_device("SYM_SWAP", &dev_ops, swap); + + if (v3_attach_device(vm, dev) == -1) { + PrintError("Could not attach device %s\n", "SYM_SWAP"); + return -1; + } + + return 0; } + + + +device_register("SYM_SWAP", swap_init)