diff --git a/src/backend/access/rmgrdesc/standbydesc.c b/src/backend/access/rmgrdesc/standbydesc.c
new file mode 100644
index 3d35f38..acd590b
*** a/src/backend/access/rmgrdesc/standbydesc.c
--- b/src/backend/access/rmgrdesc/standbydesc.c
***************
*** 14,20 ****
   */
  #include "postgres.h"
  
! #include "storage/standby.h"
  
  static void
  standby_desc_running_xacts(StringInfo buf, xl_running_xacts *xlrec)
--- 14,20 ----
   */
  #include "postgres.h"
  
! #include "storage/standbydefs.h"
  
  static void
  standby_desc_running_xacts(StringInfo buf, xl_running_xacts *xlrec)
diff --git a/src/bin/pg_xlogdump/rmgrdesc.c b/src/bin/pg_xlogdump/rmgrdesc.c
new file mode 100644
index 5b88a8d..f9cd395
*** a/src/bin/pg_xlogdump/rmgrdesc.c
--- b/src/bin/pg_xlogdump/rmgrdesc.c
***************
*** 27,33 ****
  #include "commands/tablespace.h"
  #include "replication/origin.h"
  #include "rmgrdesc.h"
! #include "storage/standby.h"
  #include "utils/relmapper.h"
  
  #define PG_RMGR(symname,name,redo,desc,identify,startup,cleanup) \
--- 27,33 ----
  #include "commands/tablespace.h"
  #include "replication/origin.h"
  #include "rmgrdesc.h"
! #include "storage/standbydefs.h"
  #include "utils/relmapper.h"
  
  #define PG_RMGR(symname,name,redo,desc,identify,startup,cleanup) \
diff --git a/src/include/storage/standby.h b/src/include/storage/standby.h
new file mode 100644
index 40b329b..f27a7ba
*** a/src/include/storage/standby.h
--- b/src/include/storage/standby.h
***************
*** 14,22 ****
  #ifndef STANDBY_H
  #define STANDBY_H
  
! #include "access/xlogreader.h"
! #include "lib/stringinfo.h"
! #include "storage/lockdefs.h"
  #include "storage/procsignal.h"
  #include "storage/relfilenode.h"
  
--- 14,20 ----
  #ifndef STANDBY_H
  #define STANDBY_H
  
! #include "storage/standbydefs.h"
  #include "storage/procsignal.h"
  #include "storage/relfilenode.h"
  
*************** extern void StandbyReleaseLockTree(Trans
*** 51,91 ****
  extern void StandbyReleaseAllLocks(void);
  extern void StandbyReleaseOldLocks(int nxids, TransactionId *xids);
  
- /*
-  * XLOG message types
-  */
- #define XLOG_STANDBY_LOCK			0x00
- #define XLOG_RUNNING_XACTS			0x10
- 
- typedef struct xl_standby_locks
- {
- 	int			nlocks;			/* number of entries in locks array */
- 	xl_standby_lock locks[FLEXIBLE_ARRAY_MEMBER];
- } xl_standby_locks;
- 
- /*
-  * When we write running xact data to WAL, we use this structure.
-  */
- typedef struct xl_running_xacts
- {
- 	int			xcnt;			/* # of xact ids in xids[] */
- 	int			subxcnt;		/* # of subxact ids in xids[] */
- 	bool		subxid_overflow;	/* snapshot overflowed, subxids missing */
- 	TransactionId nextXid;		/* copy of ShmemVariableCache->nextXid */
- 	TransactionId oldestRunningXid;		/* *not* oldestXmin */
- 	TransactionId latestCompletedXid;	/* so we can set xmax */
- 
- 	TransactionId xids[FLEXIBLE_ARRAY_MEMBER];
- } xl_running_xacts;
- 
  #define MinSizeOfXactRunningXacts offsetof(xl_running_xacts, xids)
  
  
- /* Recovery handlers for the Standby Rmgr (RM_STANDBY_ID) */
- extern void standby_redo(XLogReaderState *record);
- extern void standby_desc(StringInfo buf, XLogReaderState *record);
- extern const char *standby_identify(uint8 info);
- 
  /*
   * Declarations for GetRunningTransactionData(). Similar to Snapshots, but
   * not quite. This has nothing at all to do with visibility on this server,
--- 49,57 ----
diff --git a/src/include/storage/standbydefs.h b/src/include/storage/standbydefs.h
new file mode 100644
index ...a2c9db8
*** a/src/include/storage/standbydefs.h
--- b/src/include/storage/standbydefs.h
***************
*** 0 ****
--- 1,53 ----
+ /*-------------------------------------------------------------------------
+  *
+  * standbydef.h
+  *	   Frontend exposed definitions for hot standby mode.
+  *
+  *
+  * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
+  * Portions Copyright (c) 1994, Regents of the University of California
+  *
+  * src/include/storage/standbydefs.h
+  *
+  *-------------------------------------------------------------------------
+  */
+ #ifndef STANDBYDEFS_H
+ #define STANDBYDEFS_H
+ 
+ #include "access/xlogreader.h"
+ #include "lib/stringinfo.h"
+ #include "storage/lockdefs.h"
+ 
+ /* Recovery handlers for the Standby Rmgr (RM_STANDBY_ID) */
+ extern void standby_redo(XLogReaderState *record);
+ extern void standby_desc(StringInfo buf, XLogReaderState *record);
+ extern const char *standby_identify(uint8 info);
+ 
+ /*
+  * XLOG message types
+  */
+ #define XLOG_STANDBY_LOCK			0x00
+ #define XLOG_RUNNING_XACTS			0x10
+ 
+ typedef struct xl_standby_locks
+ {
+ 	int			nlocks;			/* number of entries in locks array */
+ 	xl_standby_lock locks[FLEXIBLE_ARRAY_MEMBER];
+ } xl_standby_locks;
+ 
+ /*
+  * When we write running xact data to WAL, we use this structure.
+  */
+ typedef struct xl_running_xacts
+ {
+ 	int			xcnt;			/* # of xact ids in xids[] */
+ 	int			subxcnt;		/* # of subxact ids in xids[] */
+ 	bool		subxid_overflow;	/* snapshot overflowed, subxids missing */
+ 	TransactionId nextXid;		/* copy of ShmemVariableCache->nextXid */
+ 	TransactionId oldestRunningXid;		/* *not* oldestXmin */
+ 	TransactionId latestCompletedXid;	/* so we can set xmax */
+ 
+ 	TransactionId xids[FLEXIBLE_ARRAY_MEMBER];
+ } xl_running_xacts;
+ 
+ #endif   /* STANDBYDEFS_H */
