diff --git a/src/include/cbfs.h b/src/include/cbfs.h index f0ae7a80ef..27a285e51d 100644 --- a/src/include/cbfs.h +++ b/src/include/cbfs.h @@ -126,6 +126,8 @@ static inline void *cbfs_unverified_area_cbmem_alloc(const char *area, const cha * method succeeds or fails. */ void cbfs_preload(const char *name); +/* Wait for all preloaded CBFS contexts to complete their operations. */ +void cbfs_preload_wait_for_all(void); /* Removes a previously allocated CBFS mapping. Should try to unmap mappings in strict LIFO order where possible, since mapping backends often don't support more complicated cases. */ diff --git a/src/lib/cbfs.c b/src/lib/cbfs.c index f25030491e..fab64d3b7b 100644 --- a/src/lib/cbfs.c +++ b/src/lib/cbfs.c @@ -376,6 +376,14 @@ out: free_cbfs_preload_context(context); } +void cbfs_preload_wait_for_all(void) +{ + struct cbfs_preload_context *context; + + list_for_each(context, cbfs_preload_context_list, list_node) + thread_join(&context->handle); +} + static struct cbfs_preload_context *find_cbfs_preload_context(const char *name) { struct cbfs_preload_context *context;