For the next patch that will add cpio support for efi,
we want to use a common read_mem_file() as cpio handler.
This patch moves the private read_file() from main.c to
vdisk.c as read_mem_file() so it can shared.

Signed-off-by: Friedemann Gerold <f.ger...@b-c-s.de>
---
--- wimbootorig/src/vdisk.h     2018-11-02 12:29:14.343297008 +0100
+++ wimboot/src/vdisk.h 2018-11-02 12:28:48.071166732 +0100
@@ -610,11 +610,15 @@

 extern struct vdisk_file vdisk_files[VDISK_MAX_FILES];

+
 extern void vdisk_read ( uint64_t lba, unsigned int count, void *data );
 extern struct vdisk_file *
 vdisk_add_file ( const char *name, void *opaque, size_t len,
                 void ( * read ) ( struct vdisk_file *file, void *data,
                                   size_t offset, size_t len ) );
+
+extern void read_mem_file ( struct vdisk_file *file, void *data, size_t 
offset, size_t len );
+
 extern void
 vdisk_patch_file ( struct vdisk_file *file,
                   void ( * patch ) ( struct vdisk_file *file, void *data,
--- wimbootorig/src/vdisk.c     2018-11-02 12:29:14.343297008 +0100
+++ wimboot/src/vdisk.c 2018-11-02 12:28:48.071166732 +0100
@@ -614,6 +614,19 @@
 }

 /**
+ * Read from file
+ *
+ * @v file              Virtual file
+ * @v data              Data buffer
+ * @v offset            Offset
+ * @v len               Length
+ */
+void read_mem_file ( struct vdisk_file *file, void *data, size_t offset, 
size_t len ) {
+        memcpy ( data, ( file->opaque + offset ), len );
+}
+
+
+/**
  * Add file to virtual disk
  *
  * @v name             Name
--- wimbootorig/src/main.c      2018-11-02 12:29:14.343297008 +0100
+++ wimboot/src/main.c  2018-11-02 12:28:48.071166732 +0100
@@ -197,20 +197,6 @@
 }

 /**
- * Read from file
- *
- * @v file             Virtual file
- * @v data             Data buffer
- * @v offset           Offset
- * @v len              Length
- */
-static void read_file ( struct vdisk_file *file, void *data, size_t offset,
-                       size_t len ) {
-
-       memcpy ( data, ( file->opaque + offset ), len );
-}
-
-/**
  * Add embedded bootmgr.exe extracted from bootmgr
  *
  * @v data             File data
@@ -305,8 +291,7 @@
                decompress ( compressed, compressed_len, initrd );

                /* Add decompressed image */
-               return vdisk_add_file ( "bootmgr.exe", initrd,
-                                       decompressed_len, read_file );
+               return vdisk_add_file ( "bootmgr.exe", initrd, 
decompressed_len, read_mem_file );
        }

        DBG ( "...no embedded bootmgr.exe found\n" );
@@ -325,7 +310,7 @@
        struct vdisk_file *file;

        /* Store file */
-       file = vdisk_add_file ( name, data, len, read_file );
+       file = vdisk_add_file ( name, data, len, read_mem_file );

        /* Check for special-case files */
        if ( strcasecmp ( name, "bootmgr.exe" ) == 0 ) {
@@ -378,7 +363,7 @@
        /* Read bootmgr.exe into memory */
        if ( ! bootmgr )
                die ( "FATAL: no bootmgr.exe\n" );
-       if ( bootmgr->read == read_file ) {
+       if ( bootmgr->read == read_mem_file ) {
                raw_pe = bootmgr->opaque;
        } else {
                padded_len = ( ( bootmgr->len + PAGE_SIZE - 1 ) &
cinap_lenrek@bonaparte ~/wimboot/src $ cat readmemfile.patch
--- wimbootorig/src/vdisk.h     2018-11-02 12:29:14.343297008 +0100
+++ wimboot/src/vdisk.h 2018-11-02 12:28:48.071166732 +0100
@@ -610,11 +610,15 @@

 extern struct vdisk_file vdisk_files[VDISK_MAX_FILES];

+
 extern void vdisk_read ( uint64_t lba, unsigned int count, void *data );
 extern struct vdisk_file *
 vdisk_add_file ( const char *name, void *opaque, size_t len,
                 void ( * read ) ( struct vdisk_file *file, void *data,
                                   size_t offset, size_t len ) );
+
+extern void read_mem_file ( struct vdisk_file *file, void *data, size_t 
offset, size_t len );
+
 extern void
 vdisk_patch_file ( struct vdisk_file *file,
                   void ( * patch ) ( struct vdisk_file *file, void *data,
--- wimbootorig/src/vdisk.c     2018-11-02 12:29:14.343297008 +0100
+++ wimboot/src/vdisk.c 2018-11-02 12:28:48.071166732 +0100
@@ -614,6 +614,19 @@
 }

 /**
+ * Read from file
+ *
+ * @v file              Virtual file
+ * @v data              Data buffer
+ * @v offset            Offset
+ * @v len               Length
+ */
+void read_mem_file ( struct vdisk_file *file, void *data, size_t offset, 
size_t len ) {
+        memcpy ( data, ( file->opaque + offset ), len );
+}
+
+
+/**
  * Add file to virtual disk
  *
  * @v name             Name
--- wimbootorig/src/main.c      2018-11-02 12:29:14.343297008 +0100
+++ wimboot/src/main.c  2018-11-02 12:28:48.071166732 +0100
@@ -197,20 +197,6 @@
 }

 /**
- * Read from file
- *
- * @v file             Virtual file
- * @v data             Data buffer
- * @v offset           Offset
- * @v len              Length
- */
-static void read_file ( struct vdisk_file *file, void *data, size_t offset,
-                       size_t len ) {
-
-       memcpy ( data, ( file->opaque + offset ), len );
-}
-
-/**
  * Add embedded bootmgr.exe extracted from bootmgr
  *
  * @v data             File data
@@ -305,8 +291,7 @@
                decompress ( compressed, compressed_len, initrd );

                /* Add decompressed image */
-               return vdisk_add_file ( "bootmgr.exe", initrd,
-                                       decompressed_len, read_file );
+               return vdisk_add_file ( "bootmgr.exe", initrd, 
decompressed_len, read_mem_file );
        }

        DBG ( "...no embedded bootmgr.exe found\n" );
@@ -325,7 +310,7 @@
        struct vdisk_file *file;

        /* Store file */
-       file = vdisk_add_file ( name, data, len, read_file );
+       file = vdisk_add_file ( name, data, len, read_mem_file );

        /* Check for special-case files */
        if ( strcasecmp ( name, "bootmgr.exe" ) == 0 ) {
@@ -378,7 +363,7 @@
        /* Read bootmgr.exe into memory */
        if ( ! bootmgr )
                die ( "FATAL: no bootmgr.exe\n" );
-       if ( bootmgr->read == read_file ) {
+       if ( bootmgr->read == read_mem_file ) {
                raw_pe = bootmgr->opaque;
        } else {
                padded_len = ( ( bootmgr->len + PAGE_SIZE - 1 ) &
_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

Reply via email to