diff options
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/gpxe/async.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/include/gpxe/async.h b/src/include/gpxe/async.h index 42ee93d59..2d1d31a4a 100644 --- a/src/include/gpxe/async.h +++ b/src/include/gpxe/async.h @@ -204,4 +204,25 @@ static inline aid_t async_init_orphan ( struct async *async ) { rc; \ } ) +/** + * Execute and block on an asynchronous operation, with progress indicator + * + * @v async_temp Temporary asynchronous operation structure to use + * @v START Code used to start the asynchronous operation + * @ret rc Return status code + * + * As for async_block(), the argument START is a code snippet; it + * should initiate an asynchronous operation as a child of @c + * async_temp and return an error status code if it failed to do so + * (e.g. due to malloc() failure). + */ +#define async_block_progress( async_temp, START ) ( { \ + int rc; \ + \ + async_init_orphan ( async_temp ); \ + if ( ( rc = START ) == 0 ) \ + async_wait_progress ( async_temp, &rc );\ + rc; \ + } ) + #endif /* _GPXE_ASYNC_H */ |
