fa7a11afb5f19dd5a2fa3382fc38662f34b6f147
braney
  Wed May 29 13:55:44 2019 -0700
first cut at caching trackDb in a shared memory location.   No changes
in running code if "cacheTrackDb" hg.conf variable doesn't exist

diff --git src/hg/inc/trackDb.h src/hg/inc/trackDb.h
index ebc6c13..c163803 100644
--- src/hg/inc/trackDb.h
+++ src/hg/inc/trackDb.h
@@ -684,17 +684,32 @@
 {
 return startsWithWord("bedGraph", tdb->type);
 }
 
 boolean trackDbSettingBlocksConfiguration(struct trackDb *tdb, boolean onlyAjax);
 // Configuration dialogs may be explicitly blocked in tracDb settings
 
 struct slPair *trackDbMetaPairs(struct trackDb *tdb);
 /* Read in metadata given a trackDb entry.  This routine understands the three ways
  * that metadata can be represented in a trackDb stanza: "metadata" lines per stanza,
  * or a  tab-separated or tagStorm file with a foreign key specified by the "meta" tag.
  */
 
 char *trackDbViewSetting(struct trackDb *tdb, char *name);
 /* Return view setting from tdb, but *not* any of it's parents. */
+
+struct trackDb *lmCloneTdb(struct lm *lm, struct trackDb *tdb, struct trackDb *parent, struct hash *superHash);
+/* clone a single tdb structure.  Will clone its children if it has any */
+
+struct trackDb *lmCloneTdbList(struct lm *lm, struct trackDb *list, struct trackDb *parent, struct hash *superHash);
+/* clone a list of tdb structures. */
+
+struct trackDb *lmCloneSuper(struct lm *lm, struct trackDb *tdb, struct hash *superHash);
+/* clone a super track tdb structure. */
+
+struct trackDb *cloneTdbListToSharedMem(struct trackDb *list, unsigned long size);
+/* Allocate shared memory and clone trackDb list into it. */
+
+struct trackDb *mapSharedMemTrackDb(char *file, unsigned long address, unsigned long size);
+/* Use a hunk of shared memory as our trackDb list. */
 #endif /* TRACKDB_H */