mirror of
https://github.com/ipxe/ipxe
synced 2025-12-21 12:30:20 +03:00
[image] Allow download job to complete before acting upon image
Allow the monojob controlling the download to complete before calling register_image() and friends. This allows the trailing "ok" from monojob.c to be printed before the image starts executing (and possibly printing output of its own). Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -50,8 +50,6 @@ struct downloader {
|
||||
struct image *image;
|
||||
/** Current position within image buffer */
|
||||
size_t pos;
|
||||
/** Image registration routine */
|
||||
int ( * register_image ) ( struct image *image );
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -75,10 +73,6 @@ static void downloader_free ( struct refcnt *refcnt ) {
|
||||
*/
|
||||
static void downloader_finished ( struct downloader *downloader, int rc ) {
|
||||
|
||||
/* Register image if download was successful */
|
||||
if ( rc == 0 )
|
||||
rc = downloader->register_image ( downloader->image );
|
||||
|
||||
/* Shut down interfaces */
|
||||
intf_shutdown ( &downloader->xfer, rc );
|
||||
intf_shutdown ( &downloader->job, rc );
|
||||
@@ -219,7 +213,6 @@ static struct interface_descriptor downloader_job_desc =
|
||||
*
|
||||
* @v job Job control interface
|
||||
* @v image Image to fill with downloaded file
|
||||
* @v register_image Image registration routine
|
||||
* @v type Location type to pass to xfer_open()
|
||||
* @v ... Remaining arguments to pass to xfer_open()
|
||||
* @ret rc Return status code
|
||||
@@ -229,7 +222,6 @@ static struct interface_descriptor downloader_job_desc =
|
||||
* image registration routine @c register_image() will be called.
|
||||
*/
|
||||
int create_downloader ( struct interface *job, struct image *image,
|
||||
int ( * register_image ) ( struct image *image ),
|
||||
int type, ... ) {
|
||||
struct downloader *downloader;
|
||||
va_list args;
|
||||
@@ -245,7 +237,6 @@ int create_downloader ( struct interface *job, struct image *image,
|
||||
intf_init ( &downloader->xfer, &downloader_xfer_desc,
|
||||
&downloader->refcnt );
|
||||
downloader->image = image_get ( image );
|
||||
downloader->register_image = register_image;
|
||||
va_start ( args, type );
|
||||
|
||||
/* Instantiate child objects and attach to our interfaces */
|
||||
|
||||
Reference in New Issue
Block a user