]> granicus.if.org Git - postgresql/commitdiff
Fix for hang after postmaster restart. Add new proc_exit and
authorBruce Momjian <bruce@momjian.us>
Sat, 27 Jun 1998 04:53:49 +0000 (04:53 +0000)
committerBruce Momjian <bruce@momjian.us>
Sat, 27 Jun 1998 04:53:49 +0000 (04:53 +0000)
shmem_exit to replace exitpg().

18 files changed:
src/backend/bootstrap/bootstrap.c
src/backend/commands/async.c
src/backend/libpq/pqcomm.c
src/backend/postmaster/postmaster.c
src/backend/storage/ipc/ipc.c
src/backend/storage/ipc/ipci.c
src/backend/storage/ipc/shmem.c
src/backend/storage/ipc/sinvaladt.c
src/backend/storage/lmgr/lock.c
src/backend/storage/lmgr/multi.c
src/backend/storage/lmgr/proc.c
src/backend/storage/smgr/smgr.c
src/backend/tcop/postgres.c
src/backend/utils/error/elog.c
src/backend/utils/error/exc.c
src/backend/utils/init/miscinit.c
src/backend/utils/init/postinit.c
src/include/storage/ipc.h

index 85afd7874687eae8b02276cf6d6750bc387a0c0b..acf461d1627fcc18e5dbb779c09ef1b816b47ee9 100644 (file)
@@ -7,7 +7,7 @@
  * Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.43 1998/06/15 19:28:04 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.44 1998/06/27 04:53:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -262,7 +262,7 @@ usage(void)
        fprintf(stderr, "     O: set BootstrapProcessing mode\n");
        fprintf(stderr, "     P portno: specify port number\n");
 
-       exitpg(1);
+       proc_exit(1);
 }
 
 
@@ -360,7 +360,7 @@ BootstrapMain(int argc, char *argv[])
                                "database system either by specifying the -D invocation "
                         "option or by setting the PGDATA environment variable.\n\n",
                                argv[0]);
-               exitpg(1);
+               proc_exit(1);
        }
 
        if (dbName == NULL)
@@ -370,7 +370,7 @@ BootstrapMain(int argc, char *argv[])
                {
                        fputs("bootstrap backend: failed, no db name specified\n", stderr);
                        fputs("          and no USER enviroment variable\n", stderr);
-                       exitpg(1);
+                       proc_exit(1);
                }
        }
 
@@ -381,7 +381,7 @@ BootstrapMain(int argc, char *argv[])
        if (IsUnderPostmaster && portFd < 0)
        {
                fputs("backend: failed, no -P option with -postmaster opt.\n", stderr);
-               exitpg(1);
+               proc_exit(1);
        }
 
        /* ----------------
@@ -770,12 +770,12 @@ cleanup()
        else
        {
                elog(FATAL, "Memory manager fault: cleanup called twice.\n", stderr);
-               exitpg(1);
+               proc_exit(1);
        }
        if (reldesc != (Relation) NULL)
                heap_close(reldesc);
        CommitTransactionCommand();
-       exitpg(Warnings);
+       proc_exit(Warnings);
 }
 
 /* ----------------
index fcdda333057685c8eae5ba05453ac27fbb502796..b4b354cfc524deb4da6bfed5fdee373adf2251f0 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.33 1998/06/15 19:28:11 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.34 1998/06/27 04:53:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -477,7 +477,7 @@ Async_Listen(char *relname, int pid)
         */
        relnamei = malloc(NAMEDATALEN);         /* persists to process exit */
        StrNCpy(relnamei, relname, NAMEDATALEN);
-       on_exitpg(Async_UnlistenOnExit, (caddr_t) relnamei);
+       on_shmem_exit(Async_UnlistenOnExit, (caddr_t) relnamei);
 }
 
 /*
index 710fe8184ba99cad9f5fbe2601c2ad84da926315..a70bbc22e9c83efc3b31c3b4370de20a3318ce39 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.46 1998/06/21 16:39:10 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.47 1998/06/27 04:53:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -650,7 +650,7 @@ StreamServerPort(char *hostName, short portName, int *fdP)
        }
 
        if (family == AF_UNIX)
-               on_exitpg(StreamDoUnlink, NULL);
+               on_proc_exit(StreamDoUnlink, NULL);
 
        listen(fd, SOMAXCONN);
 
index 5c446559104208a1e09547218e08fd506ec311d0..941d8ed119ce3df669de135cf080361cc76466a2 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.89 1998/06/18 03:43:59 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.90 1998/06/27 04:53:31 momjian Exp $
  *
  * NOTES
  *
@@ -895,7 +895,7 @@ reset_shared(short port)
 static void
 pmdie(SIGNAL_ARGS)
 {
-       exitpg(0);
+       proc_exit(0);
 }
 
 /*
@@ -986,9 +986,9 @@ CleanupProc(int pid,
        {
                bp = (Backend *) DLE_VAL(curr);
 
-               /*
-                * ----------------- SIGUSR1 is the special signal that sez exit
-                * without exitpg and let the user know what's going on.
+               /* -----------------
+                * SIGUSR1 is the special signal that says exit
+                * without proc_exit and let the user know what's going on.
                 * ProcSemaphoreKill() cleans up the backends semaphore.  If
                 * SendStop is set (-s on command line), then we send a SIGSTOP so
                 * that we can core dumps from all backends by hand.
@@ -1020,10 +1020,6 @@ CleanupProc(int pid,
        }
 
        /*
-        * Quasi_exit means run all of the on_exitpg routines
-        * but don't acutally call exit().  The on_exit list of routines to do
-        * is also truncated.
-        *
         * Nothing up my sleeve here, ActiveBackends means that since the last
         * time we recreated shared memory and sems another frontend has
         * requested and received a connection and I have forked off another
@@ -1036,7 +1032,7 @@ CleanupProc(int pid,
                if (DebugLvl)
                        fprintf(stderr, "%s: CleanupProc: reinitializing shared memory and semaphores\n",
                                        progname);
-               quasi_exitpg();
+               shmem_exit();
                reset_shared(PostPortName);
        }
 }
@@ -1230,7 +1226,7 @@ DoBackend(Port *port)
         *      Let's clean up ourselves as the postmaster child
         */
        
-       clear_exitpg(); /* we don't want the postmaster's exitpg() handlers */
+       clear_proc_exit(); /* we don't want the postmaster's proc_exit() handlers */
 
        /* ----------------
         *      register signal handlers.
@@ -1352,7 +1348,7 @@ ExitPostmaster(int status)
                StreamClose(ServerSock_INET);
        if (ServerSock_UNIX != INVALID_SOCK)
                StreamClose(ServerSock_UNIX);
-       exitpg(status);
+       proc_exit(status);
 }
 
 static void
index d301cdfe0049f7b5ea379be5ad8783fecce872e0..e1ef1119efbf452da584d23cae24f17db1f94534 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.26 1998/06/23 16:04:46 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.27 1998/06/27 04:53:34 momjian Exp $
  *
  * NOTES
  *
@@ -60,9 +60,9 @@ static struct ONEXIT
 {
        void            (*function) ();
        caddr_t         arg;
-}                      onexit_list[MAX_ON_EXITS];
+}      on_proc_exit_list[MAX_ON_EXITS], on_shmem_exit_list[MAX_ON_EXITS];
 
-static int     onexit_index;
+static int     on_proc_exit_index, on_shmem_exit_index;
 static void IpcConfigTip(void);
 
 typedef struct _PrivateMemStruct
@@ -98,7 +98,7 @@ PrivateMemoryAttach(IpcMemoryId memid)
 
 
 /* ----------------------------------------------------------------
- *             exitpg
+ *             proc_exit
  *
  *             this function calls all the callbacks registered
  *             for it (to free resources) and then calls exit.
@@ -106,100 +106,124 @@ PrivateMemoryAttach(IpcMemoryId memid)
  *             -cim 2/6/90
  * ----------------------------------------------------------------
  */
-static int     exitpg_inprogress = 0;
+static int     proc_exit_inprogress = 0;
 
 void
-exitpg(int code)
+proc_exit(int code)
 {
        int                     i;
 
        /* ----------------
-        *      if exitpg_inprocess is true, then it means that we
+        *      if proc_exit_inprocess is true, then it means that we
         *      are being invoked from within an on_exit() handler
         *      and so we return immediately to avoid recursion.
         * ----------------
         */
-       if (exitpg_inprogress)
+       if (proc_exit_inprogress)
                return;
 
-       exitpg_inprogress = 1;
+       proc_exit_inprogress = 1;
 
+       /* do our shared memory exits first */
+       shmem_exit(code);
+       
        /* ----------------
         *      call all the callbacks registered before calling exit().
         * ----------------
         */
-       for (i = onexit_index - 1; i >= 0; --i)
-               (*onexit_list[i].function) (code, onexit_list[i].arg);
+       for (i = on_proc_exit_index - 1; i >= 0; --i)
+               (*on_proc_exit_list[i].function) (code, on_proc_exit_list[i].arg);
 
        exit(code);
 }
 
 /* ------------------
- * Run all of the on_exitpg routines but don't exit in the end.
+ * Run all of the on_shmem_exit routines but don't exit in the end.
  * This is used by the postmaster to re-initialize shared memory and
  * semaphores after a backend dies horribly
  * ------------------
  */
+static int     shmem_exit_inprogress = 0;
+
 void
-quasi_exitpg()
+shmem_exit(int code)
 {
        int                     i;
 
        /* ----------------
-        *      if exitpg_inprocess is true, then it means that we
+        *      if shmem_exit_inprocess is true, then it means that we
         *      are being invoked from within an on_exit() handler
         *      and so we return immediately to avoid recursion.
         * ----------------
         */
-       if (exitpg_inprogress)
+       if (shmem_exit_inprogress)
                return;
 
-       exitpg_inprogress = 1;
+       shmem_exit_inprogress = 1;
 
        /* ----------------
         *      call all the callbacks registered before calling exit().
         * ----------------
         */
-       for (i = onexit_index - 1; i >= 0; --i)
-               /* Don't do StreamDoUnlink on quasi_exit */
-               if (onexit_list[i].function != StreamDoUnlink)
-                       (*onexit_list[i].function) (0, onexit_list[i].arg);
+       for (i = on_shmem_exit_index - 1; i >= 0; --i)
+               (*on_shmem_exit_list[i].function) (code, on_shmem_exit_list[i].arg);
+
+       on_shmem_exit_index = 0;
+       shmem_exit_inprogress = 0;
+}
 
-       onexit_index = 0;
-       exitpg_inprogress = 0;
+/* ----------------------------------------------------------------
+ *             on_proc_exit
+ *
+ *             this function adds a callback function to the list of
+ *             functions invoked by proc_exit().       -cim 2/6/90
+ * ----------------------------------------------------------------
+ */
+int
+on_proc_exit(void (*function) (), caddr_t arg)
+{
+       if (on_proc_exit_index >= MAX_ON_EXITS)
+               return (-1);
+
+       on_proc_exit_list[on_proc_exit_index].function = function;
+       on_proc_exit_list[on_proc_exit_index].arg = arg;
+
+       ++on_proc_exit_index;
+
+       return (0);
 }
 
 /* ----------------------------------------------------------------
- *             on_exitpg
+ *             on_shmem_exit
  *
  *             this function adds a callback function to the list of
- *             functions invoked by exitpg().  -cim 2/6/90
+ *             functions invoked by shmem_exit().      -cim 2/6/90
  * ----------------------------------------------------------------
  */
 int
-on_exitpg(void (*function) (), caddr_t arg)
+on_shmem_exit(void (*function) (), caddr_t arg)
 {
-       if (onexit_index >= MAX_ON_EXITS)
+       if (on_shmem_exit_index >= MAX_ON_EXITS)
                return (-1);
 
-       onexit_list[onexit_index].function = function;
-       onexit_list[onexit_index].arg = arg;
+       on_shmem_exit_list[on_shmem_exit_index].function = function;
+       on_shmem_exit_list[on_shmem_exit_index].arg = arg;
 
-       ++onexit_index;
+       ++on_shmem_exit_index;
 
        return (0);
 }
 
 /* ----------------------------------------------------------------
- *             clear_exitpg
+ *             clear_proc_exit
  *
- *             this function clears all exitpg() registered functions.
+ *             this function clears all proc_exit() registered functions.
  * ----------------------------------------------------------------
  */
 void
-clear_exitpg(void)
+clear_proc_exit(void)
 {
-       onexit_index = 0;
+       on_proc_exit_index = 0;
 }
 
 /****************************************************************************/
@@ -301,7 +325,7 @@ IpcSemaphoreCreate(IpcSemaphoreKey semKey,
                {
                        perror("semget");
                        IpcConfigTip();
-                       exitpg(3);
+                       proc_exit(3);
                }
                for (i = 0; i < semNum; i++)
                        array[i] = semStartValue;
@@ -314,7 +338,7 @@ IpcSemaphoreCreate(IpcSemaphoreKey semKey,
                }
 
                if (removeOnExit)
-                       on_exitpg(IPCPrivateSemaphoreKill, (caddr_t) semId);
+                       on_shmem_exit(IPCPrivateSemaphoreKill, (caddr_t) semId);
 
        }
        else
@@ -418,7 +442,7 @@ IpcSemaphoreLock(IpcSemaphoreId semId, int sem, int lock)
        {
                perror("semop");
                IpcConfigTip();
-               exitpg(255);
+               proc_exit(255);
        }
 }
 
@@ -463,7 +487,7 @@ IpcSemaphoreUnlock(IpcSemaphoreId semId, int sem, int lock)
        {
                perror("semop");
                IpcConfigTip();
-               exitpg(255);
+               proc_exit(255);
        }
 }
 
@@ -517,7 +541,7 @@ IpcMemoryCreate(IpcMemoryKey memKey, uint32 size, int permission)
        }
 
        /* if (memKey == PrivateIPCKey) */
-       on_exitpg(IPCPrivateMemoryKill, (caddr_t) shmid);
+       on_shmem_exit(IPCPrivateMemoryKill, (caddr_t) shmid);
 
        return (shmid);
 }
@@ -583,7 +607,7 @@ IpcMemoryAttach(IpcMemoryId memId)
        }
 
        if (!UsePrivateMemory)
-               on_exitpg(IpcMemoryDetach, (caddr_t) memAddress);
+               on_shmem_exit(IpcMemoryDetach, (caddr_t) memAddress);
 
        return ((char *) memAddress);
 }
index e8aabe5a74fb3e6744c6777fe11bd8708a117548..4bcc15efd2efa4b5f6e0c1a30191210ebab98849 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipci.c,v 1.13 1998/06/26 19:57:48 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipci.c,v 1.14 1998/06/27 04:53:35 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -92,7 +92,6 @@ CreateSharedMemoryAndSemaphores(IPCKey key)
         * ----------------
         */
        InitLocks();
-       InitMultiLevelLocks();
        if (InitMultiLevelLocks() == INVALID_TABLEID)
                elog(FATAL, "Couldn't create the lock table");
 
@@ -101,7 +100,7 @@ CreateSharedMemoryAndSemaphores(IPCKey key)
         * ----------------
         */
        InitProcGlobal(key);
-       on_exitpg(ProcFreeAllSemaphores, NULL);
+       on_shmem_exit(ProcFreeAllSemaphores, NULL);
 
        CreateSharedInvalidationState(key);
 }
index 431edc6ff7d0990034ca52c41d22c022f8e77bff..6bf0a500a31e864b41f287733ad33a48226d9d65 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/storage/ipc/shmem.c,v 1.22 1998/06/25 14:24:34 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/storage/ipc/shmem.c,v 1.23 1998/06/27 04:53:36 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -524,7 +524,7 @@ ShmemInitStruct(char *name, unsigned long size, bool *foundPtr)
        }
        else
        {
-               /* look it up in the bindint table */
+               /* look it up in the binding table */
                result = (BindingEnt *)
                        hash_search(BindingTable, (char *) &item, HASH_ENTER, foundPtr);
        }
index bca6dcee1651c9accf04677cae44fa1604f155bd..b54f4dc2211a79f27003b64c70ec6c56834f8543 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinvaladt.c,v 1.10 1998/06/18 04:20:34 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinvaladt.c,v 1.11 1998/06/27 04:53:36 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -100,7 +100,7 @@ SIBackendInit(SISeg *segInOutP)
 #endif                                                 /* INVALIDDEBUG */
 
        SISetActiveProcess(segInOutP, MyBackendId);
-       on_exitpg(CleanupInvalidationState, (caddr_t) segInOutP);
+       on_shmem_exit(CleanupInvalidationState, (caddr_t) segInOutP);
        return 1;
 }
 
@@ -193,7 +193,7 @@ SISetDeadProcess(SISeg *segP, int backendId)
  * CleanupInvalidationState --
  * Note:
  *             This is a temporary hack.  ExitBackend should call this instead
- *             of exit (via on_exitpg).
+ *             of exit (via on_shmem_exit).
  */
 static void
 CleanupInvalidationState(int status,   /* XXX */
index ab8b7b82584f7a98189ce3d65da6b27782d40506..191ee71f878543902c77e3a0ae763aadc48631f8 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.28 1998/06/26 01:58:45 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.29 1998/06/27 04:53:37 momjian Exp $
  *
  * NOTES
  *       Outside modules can create a lock table and acquire/release
@@ -153,7 +153,7 @@ static LOCKTAB *AllTables[MAX_TABLES];
  * no zero-th table
  * -------------------
  */
-static int     NumTables = 1;
+static int     NumTables;
 
 /* -------------------
  * InitLocks -- Init the lock module.  Create a private data
@@ -242,14 +242,6 @@ LockTableInit(char *tabName,
                return (INVALID_TABLEID);
        }
 
-       if (NumTables > MAX_TABLES)
-       {
-               elog(NOTICE,
-                        "LockTableInit: system limit of MAX_TABLES (%d) lock tables",
-                        MAX_TABLES);
-               return (INVALID_TABLEID);
-       }
-
        /* allocate a string for the binding table lookup */
        shmemName = (char *) palloc((unsigned) (strlen(tabName) + 32));
        if (!shmemName)
@@ -289,6 +281,8 @@ LockTableInit(char *tabName,
                status = FALSE;
        }
 
+       NumTables = 1;
+
        /* ----------------
         * we're first - initialize
         * ----------------
index 135996432a9c9f3f583eec09b6798953ae894cfa..19682ffe95cfac41b168925369cea1eee61bc9ea 100644 (file)
@@ -12,7 +12,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/storage/lmgr/Attic/multi.c,v 1.16 1998/06/26 19:57:49 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/storage/lmgr/Attic/multi.c,v 1.17 1998/06/27 04:53:38 momjian Exp $
  *
  * NOTES:
  *      (1) The lock.c module assumes that the caller here is doing
@@ -89,13 +89,6 @@ InitMultiLevelLocks()
 {
        int                     tableId;
 
-       /* -----------------------
-        * If we're already initialized just return the table id.
-        * -----------------------
-        */
-       if (MultiTableId)
-               return MultiTableId;
-
        tableId = LockTableInit("LockTable", MultiConflicts, MultiPrios, 5);
        MultiTableId = tableId;
        if (!(MultiTableId))
index d6ef6f9e7af64055cae9e62dbd97cd8f95535201..559542ed8afc0decd37388c2a582809b08ae180c 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.36 1998/06/19 02:55:11 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.37 1998/06/27 04:53:39 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -46,7 +46,7 @@
  *             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.36 1998/06/19 02:55:11 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.37 1998/06/27 04:53:39 momjian Exp $
  */
 #include <sys/time.h>
 #include <unistd.h>
@@ -274,7 +274,7 @@ InitProcess(IPCKey key)
        MyProc->errType = NO_ERROR;
        SHMQueueElemInit(&(MyProc->links));
 
-       on_exitpg(ProcKill, (caddr_t) MyProcPid);
+       on_shmem_exit(ProcKill, (caddr_t) MyProcPid);
 
        ProcInitialized = TRUE;
 }
index 4960eebe164a14266d63d549366b60729ac44b20..f96e7aa0988a577ee3de02e9388691a470ee931e 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/storage/smgr/smgr.c,v 1.16 1998/06/23 15:35:45 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/storage/smgr/smgr.c,v 1.17 1998/06/27 04:53:40 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -100,7 +100,7 @@ smgrinit()
        }
 
        /* register the shutdown proc */
-       on_exitpg(smgrshutdown, NULL);
+       on_proc_exit(smgrshutdown, NULL);
 
        return (SM_SUCCESS);
 }
index 2c457bf05e0939c2d9ed2557f0824e3909c540bd..97ac571d2c6a9fbc02e4621aa671d9e2ea37163e 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.77 1998/06/16 07:29:30 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.78 1998/06/27 04:53:43 momjian Exp $
  *
  * NOTES
  *       this is the "main" module of the postgres backend and
@@ -263,7 +263,7 @@ InteractiveBackend(char *inBuf)
                        if (!Quiet)
                                puts("EOF");
                        IsEmptyQuery = true;
-                       exitpg(0);
+                       proc_exit(0);
                }
 
                /* ----------------
@@ -312,7 +312,7 @@ SocketBackend(char *inBuf)
                 *      when front-end applications quits/dies
                 * ------------
                 */
-               exitpg(0);
+               proc_exit(0);
        }
 
        switch (*qtype)
@@ -1176,7 +1176,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
        if (errs || argc - optind > 1)
        {
                usage(argv[0]);
-               exitpg(1);
+               proc_exit(1);
        }
        else if (argc - optind == 1)
                DBName = argv[optind];
@@ -1184,14 +1184,14 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
        {
                fprintf(stderr, "%s: USER undefined and no database specified\n",
                                argv[0]);
-               exitpg(1);
+               proc_exit(1);
        }
 
        if (ShowStats &&
                (ShowParserStats || ShowPlannerStats || ShowExecutorStats))
        {
                fprintf(stderr, "-s can not be used together with -t.\n");
-               exitpg(1);
+               proc_exit(1);
        }
 
        if (!DataDir)
@@ -1201,7 +1201,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
                                "database system either by specifying the -D invocation "
                         "option or by setting the PGDATA environment variable.\n\n",
                                argv[0]);
-               exitpg(1);
+               proc_exit(1);
        }
 
        Noversion = flagC;
@@ -1325,7 +1325,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
        if (!IsUnderPostmaster)
        {
                puts("\nPOSTGRES backend interactive interface");
-               puts("$Revision: 1.77 $ $Date: 1998/06/16 07:29:30 $");
+               puts("$Revision: 1.78 $ $Date: 1998/06/27 04:53:43 $");
        }
 
        /* ----------------
@@ -1335,7 +1335,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
         * ----------------
         */
        if (!TransactionFlushEnabled())
-               on_exitpg(FlushBufferPool, NULL);
+               on_shmem_exit(FlushBufferPool, NULL);
 
        for (;;)
        {
@@ -1427,7 +1427,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
                                 */
                        case 'X':
                                pq_close();
-                               exitpg(0);
+                               proc_exit(0);
                                break;
 
                        default:
@@ -1458,7 +1458,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
                }
 
        }                                                       /* infinite for-loop */
-       exitpg(0);
+       proc_exit(0);
        return 1;
 }
 
index 88ca05a1b2f6226354ffad2ac57789a6b4a5110d..04fd4d0c03f80ad31e14a13c4d38dd046a5a2718 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.29 1998/06/15 19:29:41 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.30 1998/06/27 04:53:45 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -142,7 +142,7 @@ elog(int lev, const char *fmt,...)
                        write(open("/dev/console", O_WRONLY, 0666), line, len);
                        fflush(stdout);
                        fflush(stderr);
-                       exitpg(lev);
+                       proc_exit(lev);
                }
                fsync(Err_file);
        }
@@ -201,14 +201,14 @@ elog(int lev, const char *fmt,...)
                fflush(stderr);
                ProcReleaseSpins(NULL); /* get rid of spinlocks we hold */
                ProcReleaseLocks();             /* get rid of real locks we hold */
-               exitpg(0);
+               proc_exit(0);
        }
 
        if (lev > FATAL)
        {
                fflush(stdout);
                fflush(stderr);
-               exitpg(lev);
+               proc_exit(lev);
        }
 }
 
index ee79fa98142f51a7f7c3ab6c878ee77e8e369ed8..70af54af12777ca7dfff80f1bad9643868365278 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/error/Attic/exc.c,v 1.20 1998/02/26 04:37:35 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/error/Attic/exc.c,v 1.21 1998/06/27 04:53:45 momjian Exp $
  *
  * NOTE
  *       XXX this code needs improvement--check for state violations and
@@ -78,7 +78,7 @@ EnableExceptionHandling(bool on)
        if (on == ExceptionHandlingEnabled)
        {
                /* XXX add logging of failed state */
-               exitpg(255);
+               proc_exit(255);
                /* ExitPostgres(FatalExitStatus); */
        }
 
index 7f02bec61134a81464c5260fa118f7f4398247d5..da0f412feacc5e05973ee18c3595a50cc994b76f 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.15 1998/05/29 17:00:19 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.16 1998/06/27 04:53:47 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -84,7 +84,7 @@ unsigned char RecodeBackTable[128];
 void
 ExitPostgres(ExitStatus status)
 {
-       exitpg(status);
+       proc_exit(status);
 }
 
 /*
@@ -111,7 +111,7 @@ AbortPostgres()
        if (PointerIsValid(abortValue) && abortValue[0] != '\0')
                abort();
        else
-               exitpg(FatalExitStatus);
+               proc_exit(FatalExitStatus);
 }
 
 #endif
@@ -125,7 +125,7 @@ StatusBackendExit(int status)
 {
        /* someday, do some real cleanup and then call the LISP exit */
        /* someday, call StatusPostmasterExit if running without postmaster */
-       exitpg(status);
+       proc_exit(status);
 }
 
 /* ----------------
@@ -136,7 +136,7 @@ void
 StatusPostmasterExit(int status)
 {
        /* someday, do some real cleanup and then call the LISP exit */
-       exitpg(status);
+       proc_exit(status);
 }
 
 /* ----------------------------------------------------------------
index 650068d22d42c41eb65301cdea3e049b47a2f9f7..36de317266486e3c4fd22067fc8f35c016268bf4 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.29 1998/06/15 19:29:49 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.30 1998/06/27 04:53:48 momjian Exp $
  *
  * NOTES
  *             InitPostgres() is the function called from PostgresMain
@@ -481,7 +481,7 @@ InitPostgres(char *name)            /* database name */
        InitLocalBuffer();
 
        if (!TransactionFlushEnabled())
-               on_exitpg(FlushBufferPool, (caddr_t) NULL);
+               on_shmem_exit(FlushBufferPool, (caddr_t) NULL);
 
        /* ----------------
         *      initialize the database id used for system caches and lock tables
@@ -601,7 +601,7 @@ InitPostgres(char *name)            /* database name */
         * ----------------
         */
        PostgresIsInitialized = true;
-/*       on_exitpg(DestroyLocalRelList, (caddr_t) NULL); */
+/*       on_shmem_exit(DestroyLocalRelList, (caddr_t) NULL); */
 
        /* ----------------
         *      Done with "InitPostgres", now change to NormalProcessing unless
index 1327b2d1702519604af0b2fb1b0c54ae81c31aa3..778c54e2071ef808e8d40ba759535b12f674c8bd 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: ipc.h,v 1.26 1998/06/23 15:35:48 momjian Exp $
+ * $Id: ipc.h,v 1.27 1998/06/27 04:53:49 momjian Exp $
  *
  * NOTES
  *       This file is very architecture-specific.      This stuff should actually
@@ -71,10 +71,11 @@ typedef int IpcMemoryId;
 
 
 /* ipc.c */
-extern void exitpg(int code);
-extern void quasi_exitpg(void);
-extern int on_exitpg(void (*function) (), caddr_t arg);
-extern void clear_exitpg(void);
+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 void clear_proc_exit(void);
 
 extern IpcSemaphoreId
 IpcSemaphoreCreate(IpcSemaphoreKey semKey,