diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c
index 532a0ab25e11ec2ae48bc7502757bbb916a12389..94eb1bb12247d4500e82a943b41e56b0459d35c9 100644
--- a/src/backend/commands/async.c
+++ b/src/backend/commands/async.c
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.68 2000/08/29 09:36:39 petere Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.69 2000/10/02 19:42:45 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -70,14 +70,14 @@
  *-------------------------------------------------------------------------
  */
 
+#include "postgres.h"
+
 #include <unistd.h>
 #include <signal.h>
 #include <errno.h>
 #include <sys/types.h>
 #include <netinet/in.h>
 
-#include "postgres.h"
-
 #include "access/heapam.h"
 #include "catalog/catname.h"
 #include "catalog/indexing.h"
@@ -255,7 +255,7 @@ Async_Listen(char *relname, int pid)
 	 */
 	if (!unlistenExitRegistered)
 	{
-		if (on_shmem_exit(Async_UnlistenOnExit, (caddr_t) NULL) < 0)
+		if (on_shmem_exit(Async_UnlistenOnExit, 0) < 0)
 			elog(NOTICE, "Async_Listen: out of shmem_exit slots");
 		unlistenExitRegistered = 1;
 	}
@@ -373,7 +373,7 @@ Async_UnlistenAll()
  *--------------------------------------------------------------
  */
 static void
-Async_UnlistenOnExit()
+Async_UnlistenOnExit(void)
 {
 
 	/*
diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c
index d0b10414fdec2a278fdf3d887e8f35d6bd8cdc48..df66c7b1bde91197739acac485be007c2985c387 100644
--- a/src/backend/libpq/pqcomm.c
+++ b/src/backend/libpq/pqcomm.c
@@ -29,7 +29,7 @@
  * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- *	$Id: pqcomm.c,v 1.101 2000/09/27 15:17:54 petere Exp $
+ *	$Id: pqcomm.c,v 1.102 2000/10/02 19:42:46 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -260,7 +260,7 @@ StreamServerPort(int family, unsigned short portName, int *fdP)
 
 	if (family == AF_UNIX)
 	{
-		on_proc_exit(StreamDoUnlink, NULL);
+		on_proc_exit(StreamDoUnlink, 0);
 
 		/*
 		 * Open the socket file and get an advisory lock on it. The
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 748d8dbf787d9d1bb0aef32c576b10b6dd000da4..ba5ec51648c67f0df710b01818d2bd7e791bfcbd 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.166 2000/09/06 19:54:46 petere Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.167 2000/10/02 19:42:46 petere Exp $
  *
  * NOTES
  *
@@ -628,7 +628,7 @@ PostmasterMain(int argc, char *argv[])
 		/*
 		 * register clean up proc
 		 */
-		on_proc_exit(UnlinkPidFile, NULL);
+		on_proc_exit(UnlinkPidFile, 0);
 	}
 
 	/*
@@ -727,7 +727,7 @@ pmdaemonize(int argc, char *argv[])
 	/*
 	 * register clean up proc
 	 */
-	on_proc_exit(UnlinkPidFile, NULL);
+	on_proc_exit(UnlinkPidFile, 0);
 }
 
 
diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index de6ca57ca1a65a7274cd63e278dc23ea4b46b1f5..128c49989a060f703cbac97f3554e8921b01ab34 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/file/fd.c,v 1.63 2000/08/27 21:48:00 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/file/fd.c,v 1.64 2000/10/02 19:42:47 petere Exp $
  *
  * NOTES:
  *
@@ -38,6 +38,8 @@
  *-------------------------------------------------------------------------
  */
 
+#include "postgres.h"
+
 #include <sys/types.h>
 #include <sys/file.h>
 #include <sys/param.h>
@@ -46,7 +48,6 @@
 #include <unistd.h>
 #include <fcntl.h>
 
-#include "postgres.h"
 #include "miscadmin.h"
 #include "storage/fd.h"
 
@@ -472,7 +473,7 @@ AllocateVfd(void)
 		 * register proc-exit call to ensure temp files are dropped at
 		 * exit
 		 */
-		on_proc_exit(AtEOXact_Files, NULL);
+		on_proc_exit(AtEOXact_Files, 0);
 	}
 
 	if (VfdCache[0].nextFree == 0)
diff --git a/src/backend/storage/ipc/ipc.c b/src/backend/storage/ipc/ipc.c
index 942e72cac03d2fd6088ea5e77c99255ba1dc6003..d0e98cf48b4787ab21f61ed2e7541f684f0700d6 100644
--- a/src/backend/storage/ipc/ipc.c
+++ b/src/backend/storage/ipc/ipc.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.49 2000/07/22 14:49:01 petere Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.50 2000/10/02 19:42:48 petere Exp $
  *
  * NOTES
  *
@@ -25,12 +25,12 @@
  *
  *-------------------------------------------------------------------------
  */
+#include "postgres.h"
+
 #include <sys/types.h>
 #include <sys/file.h>
 #include <errno.h>
 
-#include "postgres.h"
-
 #include "storage/ipc.h"
 #include "storage/s_lock.h"
 /* In Ultrix, sem.h and shm.h must be included AFTER ipc.h */
@@ -65,7 +65,7 @@ static void IpcMemoryDetach(int status, char *shmaddr);
 static struct ONEXIT
 {
 	void		(*function) ();
-	caddr_t		arg;
+	Datum		arg;
 }			on_proc_exit_list[MAX_ON_EXITS], on_shmem_exit_list[MAX_ON_EXITS];
 
 static int	on_proc_exit_index,
@@ -182,7 +182,7 @@ shmem_exit(int code)
  * ----------------------------------------------------------------
  */
 int
-			on_proc_exit(void (*function) (), caddr_t arg)
+on_proc_exit(void (*function) (), Datum arg)
 {
 	if (on_proc_exit_index >= MAX_ON_EXITS)
 		return -1;
@@ -203,7 +203,7 @@ int
  * ----------------------------------------------------------------
  */
 int
-			on_shmem_exit(void (*function) (), caddr_t arg)
+on_shmem_exit(void (*function) (), Datum arg)
 {
 	if (on_shmem_exit_index >= MAX_ON_EXITS)
 		return -1;
@@ -234,8 +234,7 @@ on_exit_reset(void)
 /*																			*/
 /****************************************************************************/
 static void
-IPCPrivateSemaphoreKill(int status,
-						int semId)		/* caddr_t */
+IPCPrivateSemaphoreKill(int status, int semId)
 {
 	union semun semun;
 	semun.val = 0;		/* unused */
@@ -251,8 +250,7 @@ IPCPrivateSemaphoreKill(int status,
 /*																			*/
 /****************************************************************************/
 static void
-IPCPrivateMemoryKill(int status,
-					 int shmId) /* caddr_t */
+IPCPrivateMemoryKill(int status, int shmId)
 {
 	if (UsePrivateMemory)
 	{
@@ -343,7 +341,7 @@ IpcSemaphoreCreate(IpcSemaphoreKey semKey,
 		}
 
 		if (removeOnExit)
-			on_shmem_exit(IPCPrivateSemaphoreKill, (caddr_t) semId);
+			on_shmem_exit(IPCPrivateSemaphoreKill, (Datum)semId);
 	}
 
 #ifdef DEBUG_IPC
@@ -565,7 +563,7 @@ IpcMemoryCreate(IpcMemoryKey memKey, uint32 size, int permission)
 	}
 
 	/* if (memKey == PrivateIPCKey) */
-	on_shmem_exit(IPCPrivateMemoryKill, (caddr_t) shmid);
+	on_shmem_exit(IPCPrivateMemoryKill, (Datum) shmid);
 
 	return shmid;
 }
@@ -629,7 +627,7 @@ IpcMemoryAttach(IpcMemoryId memId)
 	}
 
 	if (!UsePrivateMemory)
-		on_shmem_exit(IpcMemoryDetach, (caddr_t) memAddress);
+		on_shmem_exit(IpcMemoryDetach, PointerGetDatum(memAddress));
 
 	return (char *) memAddress;
 }
diff --git a/src/backend/storage/ipc/sinvaladt.c b/src/backend/storage/ipc/sinvaladt.c
index da043d383eb6dbb66ee5274069aa99d9708ab1fa..2634f371a942be6cafa5ed400f2c0b5c38cfe24c 100644
--- a/src/backend/storage/ipc/sinvaladt.c
+++ b/src/backend/storage/ipc/sinvaladt.c
@@ -8,15 +8,15 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinvaladt.c,v 1.32 2000/05/31 00:28:29 petere Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinvaladt.c,v 1.33 2000/10/02 19:42:48 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
+#include "postgres.h"
+
 #include <signal.h>
 #include <unistd.h>
 
-#include "postgres.h"
-
 #include "miscadmin.h"
 #include "storage/backendid.h"
 #include "storage/proc.h"
@@ -189,7 +189,7 @@ SIBackendInit(SISeg *segP)
 	stateP->procStruct = MAKE_OFFSET(MyProc);
 
 	/* register exit routine to mark my entry inactive at exit */
-	on_shmem_exit(CleanupInvalidationState, (caddr_t) segP);
+	on_shmem_exit(CleanupInvalidationState, PointerGetDatum(segP));
 
 	return 1;
 }
diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c
index d0da37b839fbfdc3175fa74366c70ef6268e29ff..e68d96d772951f89f4aaf1093e92b152ca0eed26 100644
--- a/src/backend/storage/lmgr/proc.c
+++ b/src/backend/storage/lmgr/proc.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.79 2000/08/29 09:36:44 petere Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.80 2000/10/02 19:42:48 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -47,8 +47,10 @@
  *		This is so that we can support more backends. (system-wide semaphore
  *		sets run out pretty fast.)				  -ay 4/95
  *
- * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.79 2000/08/29 09:36:44 petere Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.80 2000/10/02 19:42:48 petere Exp $
  */
+#include "postgres.h"
+
 #include <sys/time.h>
 #include <unistd.h>
 #include <signal.h>
@@ -59,7 +61,6 @@
 #include <sys/sem.h>
 #endif
 
-#include "postgres.h"
 #include "miscadmin.h"
 
 
@@ -140,7 +141,7 @@ InitProcGlobal(IPCKey key, int maxBackends)
 		 * Arrange to delete semas on exit --- set this up now so that we
 		 * will clean up if pre-allocation fails...
 		 */
-		on_shmem_exit(ProcFreeAllSemaphores, NULL);
+		on_shmem_exit(ProcFreeAllSemaphores, 0);
 
 		/*
 		 * Pre-create the semaphores for the first maxBackends processes,
@@ -306,7 +307,7 @@ InitProcess(IPCKey key)
 	MyProc->errType = NO_ERROR;
 	SHMQueueElemInit(&(MyProc->links));
 
-	on_shmem_exit(ProcKill, (caddr_t) MyProcPid);
+	on_shmem_exit(ProcKill, (Datum) MyProcPid);
 }
 
 /* -----------------------
diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c
index 1d0445660f952e4d6f72461edf40284a83979a18..1994028cdbd622b8c213f66023460daa01f13525 100644
--- a/src/backend/storage/smgr/smgr.c
+++ b/src/backend/storage/smgr/smgr.c
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/smgr/smgr.c,v 1.37 2000/06/19 23:37:08 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/smgr/smgr.c,v 1.38 2000/10/02 19:42:52 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -112,7 +112,7 @@ smgrinit()
 	}
 
 	/* register the shutdown proc */
-	on_proc_exit(smgrshutdown, NULL);
+	on_proc_exit(smgrshutdown, 0);
 
 	return SM_SUCCESS;
 }
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 373d6831df6d833c8661dd3f30d368ced02db966..150423faafac97411475cda738e6418fd311d9e7 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.175 2000/09/06 14:15:21 petere Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.176 2000/10/02 19:42:53 petere Exp $
  *
  * NOTES
  *	  this is the "main" module of the postgres backend and
@@ -1284,7 +1284,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[], const cha
 		/*
 		 * Register clean up proc.
 		 */
-		on_proc_exit(UnlinkPidFile, NULL);
+		on_proc_exit(UnlinkPidFile, 0);
 
 		BaseInit();
 		snprintf(XLogDir, MAXPGPATH, "%s/pg_xlog", DataDir);
@@ -1376,7 +1376,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[], const cha
 	reset_client_encoding();
 #endif
 
-	on_shmem_exit(remove_all_temp_relations, NULL);
+	on_shmem_exit(remove_all_temp_relations, 0);
 
 	/*
 	 * Send this backend's cancellation info to the frontend.
@@ -1397,7 +1397,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[], const cha
 	if (!IsUnderPostmaster)
 	{
 		puts("\nPOSTGRES backend interactive interface ");
-		puts("$Revision: 1.175 $ $Date: 2000/09/06 14:15:21 $\n");
+		puts("$Revision: 1.176 $ $Date: 2000/10/02 19:42:53 $\n");
 	}
 
 	/*
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index c0502d99ab3655fa5e2ae77a674918cc6dc94e76..cc3a3825c408a6cf22af69d085acc00880e95c6e 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.66 2000/09/19 18:17:57 petere Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.67 2000/10/02 19:42:54 petere Exp $
  *
  *
  *-------------------------------------------------------------------------
@@ -232,7 +232,7 @@ InitPostgres(const char *dbname, const char *username)
 
 #ifndef XLOG
 	if (!TransactionFlushEnabled())
-		on_shmem_exit(FlushBufferPool, (caddr_t) NULL);
+		on_shmem_exit(FlushBufferPool, 0);
 #endif
 
 	SetDatabaseName(dbname);
diff --git a/src/include/storage/ipc.h b/src/include/storage/ipc.h
index a3abfea03771b5c1d525227c79364abc340c7c2c..85dfe03ceb1488cca1b244783a18db27c467320e 100644
--- a/src/include/storage/ipc.h
+++ b/src/include/storage/ipc.h
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: ipc.h,v 1.39 2000/10/02 17:15:58 momjian Exp $
+ * $Id: ipc.h,v 1.40 2000/10/02 19:42:56 petere Exp $
  *
  * NOTES
  *	  This file is very architecture-specific.	This stuff should actually
@@ -22,13 +22,13 @@
 #ifndef IPC_H
 #define IPC_H
 
+#include "config.h"
+
 #include <sys/types.h>
 #ifdef HAVE_SYS_IPC_H
 #include <sys/ipc.h>			/* For IPC_PRIVATE */
 #endif
 
-#include "config.h"
-
 #ifndef HAVE_UNION_SEMUN
 union semun
 {
@@ -78,8 +78,8 @@ extern bool proc_exit_inprogress;
 
 extern void proc_exit(int code);
 extern void shmem_exit(int code);
-extern int	on_shmem_exit(void (*function) (), caddr_t arg);
-extern int	on_proc_exit(void (*function) (), caddr_t arg);
+extern int	on_shmem_exit(void (*function) (), Datum arg);
+extern int	on_proc_exit(void (*function) (), Datum arg);
 extern void on_exit_reset(void);
 
 extern IpcSemaphoreId IpcSemaphoreCreate(IpcSemaphoreKey semKey,