Use container_of on romfile entries.

Create cbfs and fw_cfg specific romfile_s wrappers instead of using
private variables directly in romfile_s.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
diff --git a/src/paravirt.c b/src/paravirt.c
index ee6a86e..e5027d0 100644
--- a/src/paravirt.c
+++ b/src/paravirt.c
@@ -166,13 +166,20 @@
     qemu_cfg_read(buf, len);
 }
 
+struct qemu_romfile_s {
+    struct romfile_s file;
+    int select, skip;
+};
+
 static int
 qemu_cfg_read_file(struct romfile_s *file, void *dst, u32 maxlen)
 {
     if (file->size > maxlen)
         return -1;
-    qemu_cfg_select(file->id);
-    qemu_cfg_skip(file->rawsize);
+    struct qemu_romfile_s *qfile;
+    qfile = container_of(file, struct qemu_romfile_s, file);
+    qemu_cfg_select(qfile->select);
+    qemu_cfg_skip(qfile->skip);
     qemu_cfg_read(dst, file->size);
     return file->size;
 }
@@ -180,18 +187,18 @@
 static void
 qemu_romfile_add(char *name, int select, int skip, int size)
 {
-    struct romfile_s *file = malloc_tmp(sizeof(*file));
-    if (!file) {
+    struct qemu_romfile_s *qfile = malloc_tmp(sizeof(*qfile));
+    if (!qfile) {
         warn_noalloc();
         return;
     }
-    memset(file, 0, sizeof(*file));
-    strtcpy(file->name, name, sizeof(file->name));
-    file->id = select;
-    file->rawsize = skip; // Use rawsize to indicate skip length.
-    file->size = size;
-    file->copy = qemu_cfg_read_file;
-    romfile_add(file);
+    memset(qfile, 0, sizeof(*qfile));
+    strtcpy(qfile->file.name, name, sizeof(qfile->file.name));
+    qfile->file.size = size;
+    qfile->select = select;
+    qfile->skip = skip;
+    qfile->file.copy = qemu_cfg_read_file;
+    romfile_add(&qfile->file);
 }
 
 struct e820_reservation {