]> granicus.if.org Git - postgresql/commitdiff
Move memory context callback declarations into palloc.h.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 1 Mar 2015 17:31:32 +0000 (12:31 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 1 Mar 2015 17:31:32 +0000 (12:31 -0500)
Initial experience with this feature suggests that instances of
MemoryContextCallback are likely to propagate into some widely-used headers
over time.  As things stood, that would result in pulling memutils.h or
at least memnodes.h into common headers, which does not seem desirable.
Instead, let's decide that this feature is part of the "ordinary palloc
user" API rather than the "specialized context management" API, and as
such should be declared in palloc.h not memutils.h.

src/include/nodes/memnodes.h
src/include/utils/memutils.h
src/include/utils/palloc.h

index 3eeaad49288e88a02892e691dc0cf24961dcc5f8..5e036b9b6f5dc892b8947caef2c91cc32bcc4874 100644 (file)
 
 #include "nodes/nodes.h"
 
-/*
- * A memory context can have callback functions registered on it.  Any such
- * function will be called once just before the context is next reset or
- * deleted.  The MemoryContextCallback struct describing such a callback
- * typically would be allocated within the context itself, thereby avoiding
- * any need to manage it explicitly (the reset/delete action will free it).
- */
-typedef void (*MemoryContextCallbackFunction) (void *arg);
-
-typedef struct MemoryContextCallback
-{
-       MemoryContextCallbackFunction func; /* function to call */
-       void       *arg;                        /* argument to pass it */
-       struct MemoryContextCallback *next; /* next in list of callbacks */
-} MemoryContextCallback;
-
 /*
  * MemoryContext
  *             A logical context in which memory allocations occur.
index dbb163a15364cb79254d9f43d68531b17edabf36..9e84d01103f3a9fe53889bc3719889ff047d0e89 100644 (file)
@@ -97,8 +97,6 @@ extern void MemoryContextDelete(MemoryContext context);
 extern void MemoryContextResetOnly(MemoryContext context);
 extern void MemoryContextResetChildren(MemoryContext context);
 extern void MemoryContextDeleteChildren(MemoryContext context);
-extern void MemoryContextRegisterResetCallback(MemoryContext context,
-                                                                  MemoryContextCallback *cb);
 extern void MemoryContextSetParent(MemoryContext context,
                                           MemoryContext new_parent);
 extern Size GetMemoryChunkSpace(void *pointer);
index f586fd5535b3ee42417036cb3cfb85840fb4f04c..39b318da43aca64aad9b8f31b87428c4b74756a7 100644 (file)
  */
 typedef struct MemoryContextData *MemoryContext;
 
+/*
+ * A memory context can have callback functions registered on it.  Any such
+ * function will be called once just before the context is next reset or
+ * deleted.  The MemoryContextCallback struct describing such a callback
+ * typically would be allocated within the context itself, thereby avoiding
+ * any need to manage it explicitly (the reset/delete action will free it).
+ */
+typedef void (*MemoryContextCallbackFunction) (void *arg);
+
+typedef struct MemoryContextCallback
+{
+       MemoryContextCallbackFunction func; /* function to call */
+       void       *arg;                        /* argument to pass it */
+       struct MemoryContextCallback *next; /* next in list of callbacks */
+} MemoryContextCallback;
+
 /*
  * CurrentMemoryContext is the default allocation context for palloc().
  * Avoid accessing it directly!  Instead, use MemoryContextSwitchTo()
@@ -107,6 +123,10 @@ MemoryContextSwitchTo(MemoryContext context)
 #endif   /* PG_USE_INLINE || MCXT_INCLUDE_DEFINITIONS */
 #endif   /* FRONTEND */
 
+/* Registration of memory context reset/delete callbacks */
+extern void MemoryContextRegisterResetCallback(MemoryContext context,
+                                                                  MemoryContextCallback *cb);
+
 /*
  * These are like standard strdup() except the copied string is
  * allocated in a context, not with malloc().