diff --git a/src/include/nodes/memnodes.h b/src/include/nodes/memnodes.h
index 3eeaad49288e88a02892e691dc0cf24961dcc5f8..5e036b9b6f5dc892b8947caef2c91cc32bcc4874 100644
--- a/src/include/nodes/memnodes.h
+++ b/src/include/nodes/memnodes.h
@@ -16,22 +16,6 @@
 
 #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.
diff --git a/src/include/utils/memutils.h b/src/include/utils/memutils.h
index dbb163a15364cb79254d9f43d68531b17edabf36..9e84d01103f3a9fe53889bc3719889ff047d0e89 100644
--- a/src/include/utils/memutils.h
+++ b/src/include/utils/memutils.h
@@ -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);
diff --git a/src/include/utils/palloc.h b/src/include/utils/palloc.h
index f586fd5535b3ee42417036cb3cfb85840fb4f04c..39b318da43aca64aad9b8f31b87428c4b74756a7 100644
--- a/src/include/utils/palloc.h
+++ b/src/include/utils/palloc.h
@@ -35,6 +35,22 @@
  */
 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().