diff --git a/src/include/gpxe/image.h b/src/include/gpxe/image.h index 6875a204..08a1dd90 100644 --- a/src/include/gpxe/image.h +++ b/src/include/gpxe/image.h @@ -11,6 +11,7 @@ #include #include #include +#include struct image_type; @@ -19,6 +20,9 @@ struct image_type; /** An executable or loadable image */ struct image { + /** Reference count */ + struct refcnt refcnt; + /** Name */ char name[16]; /** List of registered images */ @@ -117,4 +121,24 @@ extern int image_load ( struct image *image ); extern int image_autoload ( struct image *image ); extern int image_exec ( struct image *image ); +/** + * Increment reference count on an image + * + * @v image Image + * @ret image Image + */ +static inline struct image * image_get ( struct image *image ) { + ref_get ( &image->refcnt ); + return image; +} + +/** + * Decrement reference count on an image + * + * @v image Image + */ +static inline void image_put ( struct image *image ) { + ref_put ( &image->refcnt ); +} + #endif /* _GPXE_IMAGE_H */