aboutsummaryrefslogtreecommitdiff
path: root/src/usr
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2021-01-25 16:18:28 +0000
committerMichael Brown <mcb30@ipxe.org>2021-01-25 17:03:56 +0000
commit989a7a8032db02eb0524bd78a674d3b087dea3a6 (patch)
tree3ead7f99b466e3274d29dbeb0df7374905ff92d5 /src/usr
parentffc41ae9d12f319be67053e529091c8710303d3c (diff)
downloadipxe-989a7a8032db02eb0524bd78a674d3b087dea3a6.zip
ipxe-989a7a8032db02eb0524bd78a674d3b087dea3a6.tar.gz
ipxe-989a7a8032db02eb0524bd78a674d3b087dea3a6.tar.bz2
[image] Provide image_memory()
Consolidate the remaining logic common to initrd_init() and imgmem() into a shared image_memory() function. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/imgmgmt.c41
1 files changed, 9 insertions, 32 deletions
diff --git a/src/usr/imgmgmt.c b/src/usr/imgmgmt.c
index bf4c745..f8d1491 100644
--- a/src/usr/imgmgmt.c
+++ b/src/usr/imgmgmt.c
@@ -173,43 +173,20 @@ void imgstat ( struct image *image ) {
/**
* Create image from block of memory
*
+ * @v name Name
* @v data Image data
* @v len Length
- * @v name Name
- * @v image Image to fill in
* @ret rc Return status code
*/
-int imgmem ( userptr_t data, size_t len, const char *name,
- struct image **image ) {
- int rc;
-
- /* Allocate image */
- *image = alloc_image ( NULL );
- if ( ! *image ) {
- rc = -ENOMEM;
- goto err_alloc_image;
- }
-
- /* Set name */
- if ( ( rc = image_set_name ( *image, name ) ) != 0 )
- goto err_set_name;
+int imgmem ( const char *name, userptr_t data, size_t len ) {
+ struct image *image;
- /* Set data */
- if ( ( rc = image_set_data ( *image, data, len ) ) != 0 ) {
- printf ( "Could not set image data: %s\n", strerror ( rc ) );
- goto err_set_data;
- }
-
- /* Register image */
- if ( ( rc = register_image ( *image ) ) != 0 ) {
- printf ( "Could not register image: %s\n", strerror ( rc ) );
- goto err_register_image;
+ /* Create image */
+ image = image_memory ( name, data, len );
+ if ( ! image ) {
+ printf ( "Could not create image\n" );
+ return -ENOMEM;
}
- err_register_image:
- err_set_data:
- err_set_name:
- image_put ( *image );
- err_alloc_image:
- return rc;
+ return 0;
}