}
/**
- * Set image data
+ * Set image length
*
* @v image Image
- * @v data Image data
* @v len Length of image data
* @ret rc Return status code
*/
-int image_set_data ( struct image *image, userptr_t data, size_t len ) {
+int image_set_len ( struct image *image, size_t len ) {
userptr_t new;
/* (Re)allocate image data */
if ( ! new )
return -ENOMEM;
image->data = new;
+ image->len = len;
+
+ return 0;
+}
+
+/**
+ * Set image data
+ *
+ * @v image Image
+ * @v data Image data
+ * @v len Length of image data
+ * @ret rc Return status code
+ */
+int image_set_data ( struct image *image, userptr_t data, size_t len ) {
+ int rc;
+
+ /* Set image length */
+ if ( ( rc = image_set_len ( image, len ) ) != 0 )
+ return rc;
/* Copy in new image data */
memcpy_user ( image->data, 0, data, 0, len );
- image->len = len;
return 0;
}
extern int image_set_uri ( struct image *image, struct uri *uri );
extern int image_set_name ( struct image *image, const char *name );
extern int image_set_cmdline ( struct image *image, const char *cmdline );
+extern int image_set_len ( struct image *image, size_t len );
extern int image_set_data ( struct image *image, userptr_t data, size_t len );
extern int register_image ( struct image *image );
extern void unregister_image ( struct image *image );