#ifndef _UCW_RESPOOL_H
#define _UCW_RESPOOL_H
-#include "ucw/clists.h"
-#include "ucw/threads.h"
+#include <ucw/clists.h>
+#include <ucw/threads.h>
+
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define res_add ucw_res_add
+#define res_alloc ucw_res_alloc
+#define res_detach ucw_res_detach
+#define res_drop ucw_res_drop
+#define res_dump ucw_res_dump
+#define res_eltpool ucw_res_eltpool
+#define res_for_fd ucw_res_for_fd
+#define res_free ucw_res_free
+#define res_malloc ucw_res_malloc
+#define res_malloc_zero ucw_res_malloc_zero
+#define res_mempool ucw_res_mempool
+#define res_realloc ucw_res_realloc
+#define res_subpool ucw_res_subpool
+#define rp_commit ucw_rp_commit
+#define rp_delete ucw_rp_delete
+#define rp_detach ucw_rp_detach
+#define rp_dump ucw_rp_dump
+#define rp_new ucw_rp_new
+#endif
/**
* A resource pool. It contains a name of the pool (which is printed
/** Resource flags **/
enum resource_flags {
RES_FLAG_TEMP = 1, // Resource is temporary
+ RES_FLAG_XFREE = 2, // Resource structure needs to be deallocated by xfree()
};
/**
return orp;
}
-struct resource *res_alloc(const struct res_class *rc) LIKE_MALLOC; // Returns NULL if there is no pool active
+struct resource *res_alloc(const struct res_class *rc) LIKE_MALLOC; // Dies if there is no pool active
void res_dump(struct resource *r, uns indent); /** Prints out a debugging dump of the resource to stdout. **/
uns res_size; // Size of the resource structure (0=default)
};
+/**
+ * Initialize a pre-allocated buffer to the specific class of resource, setting its private data to @priv.
+ * This resource can be added to the current pool by @res_add().
+ **/
+static inline struct resource *res_init(struct resource *r, const struct res_class *rc, void *priv)
+{
+ r->flags = 0;
+ r->rclass = rc;
+ r->priv = priv;
+ return r;
+}
+
+/**
+ * Links a pre-initialized resource to the active pool.
+ **/
+void res_add(struct resource *r);
+
/**
* Unlinks a resource from a pool and releases its meta-data. Unlike @res_detach(),
* it does not invoke any callbacks. The caller must make sure that no references to