aboutsummaryrefslogtreecommitdiff
path: root/src/include/utils/memutils.h
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2015-02-27 17:16:40 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2015-02-27 17:16:43 -0500
commitf65e8270587f3e9b8224e20f7d020ed1f816dfe1 (patch)
tree0a285e9914555d3d876dfa1c5a9eb56825c4acd7 /src/include/utils/memutils.h
parent654809e770ce270c0bb9de726c5df1ab193d60f0 (diff)
downloadpostgresql-f65e8270587f3e9b8224e20f7d020ed1f816dfe1.tar.gz
postgresql-f65e8270587f3e9b8224e20f7d020ed1f816dfe1.zip
Invent a memory context reset/delete callback mechanism.
This allows cleanup actions to be registered to be called just before a particular memory context's contents are flushed (either by deletion or MemoryContextReset). The patch in itself has no use-cases for this, but several likely reasons for wanting this exist. In passing, per discussion, rearrange some boolean fields in struct MemoryContextData so as to avoid wasted padding space. For safety, this requires making allowInCritSection's existence unconditional; but I think that's a better approach than what was there anyway.
Diffstat (limited to 'src/include/utils/memutils.h')
-rw-r--r--src/include/utils/memutils.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/include/utils/memutils.h b/src/include/utils/memutils.h
index 85aba7a7220..76ad7d443b0 100644
--- a/src/include/utils/memutils.h
+++ b/src/include/utils/memutils.h
@@ -94,6 +94,8 @@ extern void MemoryContextDelete(MemoryContext context);
extern void MemoryContextResetChildren(MemoryContext context);
extern void MemoryContextDeleteChildren(MemoryContext context);
extern void MemoryContextResetAndDeleteChildren(MemoryContext context);
+extern void MemoryContextRegisterResetCallback(MemoryContext context,
+ MemoryContextCallback *cb);
extern void MemoryContextSetParent(MemoryContext context,
MemoryContext new_parent);
extern Size GetMemoryChunkSpace(void *pointer);