]> granicus.if.org Git - postgresql/blobdiff - src/backend/storage/lmgr/proc.c
Banish caddr_t (mostly), use Datum where appropriate.
[postgresql] / src / backend / storage / lmgr / proc.c
index ed41e43727cbd3d09480105e42c7831775b8e4cd..e68d96d772951f89f4aaf1093e92b152ca0eed26 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.75 2000/06/15 04:10:07 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.80 2000/10/02 19:42:48 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
  *             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.75 2000/06/15 04:10:07 momjian 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"
 
 
@@ -119,7 +120,7 @@ InitProcGlobal(IPCKey key, int maxBackends)
 
        /* attach to the free list */
        ProcGlobal = (PROC_HDR *)
-               ShmemInitStruct("Proc Header", (unsigned) sizeof(PROC_HDR), &found);
+               ShmemInitStruct("Proc Header", sizeof(PROC_HDR), &found);
 
        /* --------------------
         * We're the first - initialize.
@@ -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,
@@ -185,7 +186,7 @@ InitProcess(IPCKey key)
 
        /* attach to the free list */
        ProcGlobal = (PROC_HDR *)
-               ShmemInitStruct("Proc Header", (unsigned) sizeof(PROC_HDR), &found);
+               ShmemInitStruct("Proc Header", sizeof(PROC_HDR), &found);
        if (!found)
        {
                /* this should not happen. InitProcGlobal() is called before this. */
@@ -218,7 +219,7 @@ InitProcess(IPCKey key)
                 * cleanup dead processes).
                 */
 
-               MyProc = (PROC *) ShmemAlloc((unsigned) sizeof(PROC));
+               MyProc = (PROC *) ShmemAlloc(sizeof(PROC));
                if (!MyProc)
                {
                        SpinRelease(ProcStructLock);
@@ -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);
 }
 
 /* -----------------------
@@ -322,18 +323,20 @@ GetOffWaitqueue(PROC *proc)
        if (proc->links.next != INVALID_OFFSET)
        {
                int                     lockmode = proc->token;
+               LOCK    *waitLock = proc->waitLock;
 
-               Assert(proc->waitLock->waitProcs.size > 0);
+               Assert(waitLock);
+               Assert(waitLock->waitProcs.size > 0);
                SHMQueueDelete(&(proc->links));
-               --proc->waitLock->waitProcs.size;
-               Assert(proc->waitLock->nHolding > 0);
-               Assert(proc->waitLock->nHolding > proc->waitLock->nActive);
-               --proc->waitLock->nHolding;
-               Assert(proc->waitLock->holders[lockmode] > 0);
-               --proc->waitLock->holders[lockmode];
-               if (proc->waitLock->activeHolders[lockmode] ==
-                       proc->waitLock->holders[lockmode])
-                       proc->waitLock->waitMask &= ~(1 << lockmode);
+               --waitLock->waitProcs.size;
+               Assert(waitLock->nHolding > 0);
+               Assert(waitLock->nHolding > proc->waitLock->nActive);
+               --waitLock->nHolding;
+               Assert(waitLock->holders[lockmode] > 0);
+               --waitLock->holders[lockmode];
+               if (waitLock->activeHolders[lockmode] == waitLock->holders[lockmode])
+                       waitLock->waitMask &= ~(1 << lockmode);
+               ProcLockWakeup(&(waitLock->waitProcs), LOCK_LOCKMETHOD(*waitLock), waitLock);
                getoffed = true;
        }
        SHMQueueElemInit(&(proc->links));
@@ -458,7 +461,7 @@ ProcQueueAlloc(char *name)
 {
        bool            found;
        PROC_QUEUE *queue = (PROC_QUEUE *)
-       ShmemInitStruct(name, (unsigned) sizeof(PROC_QUEUE), &found);
+               ShmemInitStruct(name, sizeof(PROC_QUEUE), &found);
 
        if (!queue)
                return NULL;