[SeaBIOS] [PATCH v4 2/3] romfile-loader: Switch to using named structs
Laszlo Ersek
lersek at redhat.com
Fri Feb 17 11:48:24 CET 2017
On 02/17/17 07:26, ben at skyportsystems.com wrote:
> From: Ben Warren <ben at skyportsystems.com>
>
> This is a little cleaner and matches how the command structures are
> defined in QEMU.
>
> Signed-off-by: Ben Warren <ben at skyportsystems.com>
> ---
> src/fw/romfile_loader.c | 34 +++++++++++++++++-----------------
> src/fw/romfile_loader.h | 40 ++++++++++++++++++++--------------------
> 2 files changed, 37 insertions(+), 37 deletions(-)
Reviewed-by: Laszlo Ersek <lersek at redhat.com>
Thanks
Laszlo
> diff --git a/src/fw/romfile_loader.c b/src/fw/romfile_loader.c
> index f4b17ff..7737453 100644
> --- a/src/fw/romfile_loader.c
> +++ b/src/fw/romfile_loader.c
> @@ -35,12 +35,12 @@ static void romfile_loader_allocate(struct romfile_loader_entry_s *entry,
> struct romfile_loader_file *file = &files->files[files->nfiles];
> void *data;
> int ret;
> - unsigned alloc_align = le32_to_cpu(entry->alloc_align);
> + unsigned alloc_align = le32_to_cpu(entry->alloc.align);
>
> if (alloc_align & (alloc_align - 1))
> goto err;
>
> - switch (entry->alloc_zone) {
> + switch (entry->alloc.zone) {
> case ROMFILE_LOADER_ALLOC_ZONE_HIGH:
> zone = &ZoneHigh;
> break;
> @@ -52,9 +52,9 @@ static void romfile_loader_allocate(struct romfile_loader_entry_s *entry,
> }
> if (alloc_align < MALLOC_MIN_ALIGN)
> alloc_align = MALLOC_MIN_ALIGN;
> - if (entry->alloc_file[ROMFILE_LOADER_FILESZ - 1])
> + if (entry->alloc.file[ROMFILE_LOADER_FILESZ - 1])
> goto err;
> - file->file = romfile_find(entry->alloc_file);
> + file->file = romfile_find(entry->alloc.file);
> if (!file->file || !file->file->size)
> return;
> data = _malloc(zone, file->file->size, alloc_align);
> @@ -80,24 +80,24 @@ static void romfile_loader_add_pointer(struct romfile_loader_entry_s *entry,
> {
> struct romfile_loader_file *dest_file;
> struct romfile_loader_file *src_file;
> - unsigned offset = le32_to_cpu(entry->pointer_offset);
> + unsigned offset = le32_to_cpu(entry->pointer.offset);
> u64 pointer = 0;
>
> - dest_file = romfile_loader_find(entry->pointer_dest_file, files);
> - src_file = romfile_loader_find(entry->pointer_src_file, files);
> + dest_file = romfile_loader_find(entry->pointer.dest_file, files);
> + src_file = romfile_loader_find(entry->pointer.src_file, files);
>
> if (!dest_file || !src_file || !dest_file->data || !src_file->data ||
> - offset + entry->pointer_size < offset ||
> - offset + entry->pointer_size > dest_file->file->size ||
> - entry->pointer_size < 1 || entry->pointer_size > 8 ||
> - entry->pointer_size & (entry->pointer_size - 1))
> + offset + entry->pointer.size < offset ||
> + offset + entry->pointer.size > dest_file->file->size ||
> + entry->pointer.size < 1 || entry->pointer.size > 8 ||
> + entry->pointer.size & (entry->pointer.size - 1))
> goto err;
>
> - memcpy(&pointer, dest_file->data + offset, entry->pointer_size);
> + memcpy(&pointer, dest_file->data + offset, entry->pointer.size);
> pointer = le64_to_cpu(pointer);
> pointer += (unsigned long)src_file->data;
> pointer = cpu_to_le64(pointer);
> - memcpy(dest_file->data + offset, &pointer, entry->pointer_size);
> + memcpy(dest_file->data + offset, &pointer, entry->pointer.size);
>
> return;
> err:
> @@ -108,12 +108,12 @@ static void romfile_loader_add_checksum(struct romfile_loader_entry_s *entry,
> struct romfile_loader_files *files)
> {
> struct romfile_loader_file *file;
> - unsigned offset = le32_to_cpu(entry->cksum_offset);
> - unsigned start = le32_to_cpu(entry->cksum_start);
> - unsigned len = le32_to_cpu(entry->cksum_length);
> + unsigned offset = le32_to_cpu(entry->cksum.offset);
> + unsigned start = le32_to_cpu(entry->cksum.start);
> + unsigned len = le32_to_cpu(entry->cksum.length);
> u8 *data;
>
> - file = romfile_loader_find(entry->cksum_file, files);
> + file = romfile_loader_find(entry->cksum.file, files);
>
> if (!file || !file->data || offset >= file->file->size ||
> start + len < start || start + len > file->file->size)
> diff --git a/src/fw/romfile_loader.h b/src/fw/romfile_loader.h
> index 15eab2a..bce3719 100644
> --- a/src/fw/romfile_loader.h
> +++ b/src/fw/romfile_loader.h
> @@ -11,45 +11,45 @@ struct romfile_loader_entry_s {
> u32 command;
> union {
> /*
> - * COMMAND_ALLOCATE - allocate a table from @alloc_file
> - * subject to @alloc_align alignment (must be power of 2)
> - * and @alloc_zone (can be HIGH or FSEG) requirements.
> + * COMMAND_ALLOCATE - allocate a table from @alloc.file
> + * subject to @alloc.align alignment (must be power of 2)
> + * and @alloc.zone (can be HIGH or FSEG) requirements.
> *
> * Must appear exactly once for each file, and before
> * this file is referenced by any other command.
> */
> struct {
> - char alloc_file[ROMFILE_LOADER_FILESZ];
> - u32 alloc_align;
> - u8 alloc_zone;
> - };
> + char file[ROMFILE_LOADER_FILESZ];
> + u32 align;
> + u8 zone;
> + } alloc;
>
> /*
> * COMMAND_ADD_POINTER - patch the table (originating from
> - * @dest_file) at @pointer_offset, by adding a pointer to the table
> + * @dest_file) at @pointer.offset, by adding a pointer to the table
> * originating from @src_file. 1,2,4 or 8 byte unsigned
> - * addition is used depending on @pointer_size.
> + * addition is used depending on @pointer.size.
> */
> struct {
> - char pointer_dest_file[ROMFILE_LOADER_FILESZ];
> - char pointer_src_file[ROMFILE_LOADER_FILESZ];
> - u32 pointer_offset;
> - u8 pointer_size;
> - };
> + char dest_file[ROMFILE_LOADER_FILESZ];
> + char src_file[ROMFILE_LOADER_FILESZ];
> + u32 offset;
> + u8 size;
> + } pointer;
>
> /*
> * COMMAND_ADD_CHECKSUM - calculate checksum of the range specified by
> - * @cksum_start and @cksum_length fields,
> + * @cksum.start and @cksum.length fields,
> * and then add the value at @cksum_offset.
> * Checksum simply sums -X for each byte X in the range
> * using 8-bit math.
> */
> struct {
> - char cksum_file[ROMFILE_LOADER_FILESZ];
> - u32 cksum_offset;
> - u32 cksum_start;
> - u32 cksum_length;
> - };
> + char file[ROMFILE_LOADER_FILESZ];
> + u32 offset;
> + u32 start;
> + u32 length;
> + } cksum;
>
> /* padding */
> char pad[124];
>
More information about the SeaBIOS
mailing list