3 * Take a possible embedded image and put it in a struct image
8 #include <gpxe/image.h>
9 #include <gpxe/malloc.h>
10 #include <gpxe/uaccess.h>
11 #include <gpxe/umalloc.h>
12 #include <gpxe/embedded.h>
14 extern char _embedded_image_start[], _embedded_image_end[];
16 struct image *embedded_image(void)
18 static int reclaimed = 0;
20 size_t eisize = _embedded_image_end - _embedded_image_start;
23 return NULL; /* No embedded image */
26 return NULL; /* Already reclaimed */
28 printf("Embedded image: %d bytes at %p\n",
29 eisize, _embedded_image_start);
31 image = alloc_image();
36 image->data = umalloc(eisize);
37 if (image->data == UNULL) {
41 copy_to_user(image->data, 0, _embedded_image_start, eisize);
43 /* Reclaim embedded image memory */
45 mpopulate(_embedded_image_start, eisize);