diff options
| author | Michael Brown | 2025-04-30 14:22:54 +0200 |
|---|---|---|
| committer | Michael Brown | 2025-04-30 16:38:15 +0200 |
| commit | cd803ff2e2424b56a7ae5886e4cfe17b47652e6e (patch) | |
| tree | 7aa8c5e39ba398b19881a0dc181a4bdbf48e7723 /src/tests/pixbuf_test.h | |
| parent | [image] Move embedded images from .rodata to .data (diff) | |
| download | ipxe-cd803ff2e2424b56a7ae5886e4cfe17b47652e6e.tar.gz ipxe-cd803ff2e2424b56a7ae5886e4cfe17b47652e6e.tar.xz ipxe-cd803ff2e2424b56a7ae5886e4cfe17b47652e6e.zip | |
[image] Add the concept of a static image
Not all images are allocated via alloc_image(). For example: embedded
images, the static images created to hold a runtime command line, and
the images used by unit tests are all static structures.
Using image_set_cmdline() (via e.g. the "imgargs" command) to set the
command-line arguments of a static image will succeed but will leak
memory, since nothing will ever free the allocated command line.
There are no code paths that can lead to calling image_set_len() on a
static image, but there is no safety check against future code paths
attempting this.
Define a flag IMAGE_STATIC to mark an image as statically allocated,
generalise free_image() to also handle freeing dynamically allocated
portions of static images (such as the command line), and expose
free_image() for use by static images.
Define a related flag IMAGE_STATIC_NAME to mark the name as statically
allocated. Allow a statically allocated name to be replaced with a
dynamically allocated name since this is a potentially valid use case
(e.g. if "imgdecrypt --name <name>" is used on an embedded image).
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/tests/pixbuf_test.h')
| -rw-r--r-- | src/tests/pixbuf_test.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/tests/pixbuf_test.h b/src/tests/pixbuf_test.h index d12829d89..991c16ba3 100644 --- a/src/tests/pixbuf_test.h +++ b/src/tests/pixbuf_test.h @@ -41,6 +41,7 @@ struct pixel_buffer_test { static struct image _name ## __image = { \ .refcnt = REF_INIT ( ref_no_free ), \ .name = #_name, \ + .flags = ( IMAGE_STATIC | IMAGE_STATIC_NAME ), \ .data = ( userptr_t ) ( _name ## __file ), \ .len = sizeof ( _name ## __file ), \ }; \ |
