diff --git a/src/core/refcnt.c b/src/core/refcnt.c index cd6ab964..e540240f 100644 --- a/src/core/refcnt.c +++ b/src/core/refcnt.c @@ -76,3 +76,15 @@ void ref_put ( struct refcnt *refcnt ) { free ( refcnt ); } } + +/** + * Do not free reference-counted object + * + * @v refcnt Reference counter + * + * This is meant for initializing a reference counter structure in a + * statically allocated object. + */ +void ref_no_free ( struct refcnt *refcnt __unused ) { + /* Do nothing */ +} diff --git a/src/image/embedded.c b/src/image/embedded.c index 89905d7f..53d601a6 100644 --- a/src/image/embedded.c +++ b/src/image/embedded.c @@ -13,16 +13,6 @@ FILE_LICENCE ( GPL2_OR_LATER ); #include #include -/** - * Free embedded image - * - * @v refcnt Reference counter - */ -static void __attribute__ (( unused )) -embedded_image_free ( struct refcnt *refcnt __unused ) { - /* Do nothing */ -} - /* Raw image data for all embedded images */ #undef EMBED #define EMBED( _index, _path, _name ) \ @@ -41,7 +31,7 @@ EMBED_ALL /* Image structures for all embedded images */ #undef EMBED #define EMBED( _index, _path, _name ) { \ - .refcnt = REF_INIT ( embedded_image_free ), \ + .refcnt = REF_INIT ( ref_no_free ), \ .name = _name, \ .data = ( userptr_t ) ( embedded_image_ ## _index ## _data ), \ .len = ( size_t ) embedded_image_ ## _index ## _len, \ diff --git a/src/include/ipxe/refcnt.h b/src/include/ipxe/refcnt.h index f359ac9c..37f574dc 100644 --- a/src/include/ipxe/refcnt.h +++ b/src/include/ipxe/refcnt.h @@ -77,5 +77,6 @@ ref_init ( struct refcnt *refcnt, extern struct refcnt * ref_get ( struct refcnt *refcnt ); extern void ref_put ( struct refcnt *refcnt ); +extern void ref_no_free ( struct refcnt *refcnt ); #endif /* _IPXE_REFCNT_H */