]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[refcnt] Add ref_no_free handler
authorJoshua Oreman <oremanj@rwcr.net>
Thu, 26 Nov 2009 01:27:50 +0000 (17:27 -0800)
committerMichael Brown <mcb30@ipxe.org>
Tue, 22 Jun 2010 23:34:48 +0000 (00:34 +0100)
Since more reference-counted structures than embedded images might
want to mark themselves unfreeable, expose a dummy ref_no_free().

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/core/refcnt.c
src/image/embedded.c
src/include/ipxe/refcnt.h

index cd6ab964811fcc60b269bb79729b51260b62eec0..e540240fff15c16d4356cd84bc2425c08dd060d0 100644 (file)
@@ -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 */
+}
index 89905d7fdbd87d49d850e49b3ea5fc24e8cf0177..53d601a6bdb8d1244b8cc99a0234d64e999a110b 100644 (file)
@@ -13,16 +13,6 @@ FILE_LICENCE ( GPL2_OR_LATER );
 #include <ipxe/uaccess.h>
 #include <ipxe/init.h>
 
-/**
- * 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,            \
index f359ac9c151085342388f234d4d302243fe1aa81..37f574dcce07a1cfe0b4e7dd405bd38e8c1db463 100644 (file)
@@ -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 */