Annotation of 42BSD/ingres/source/iutil/pglocks.c, revision 1.1.1.1

1.1       root        1: # include      <ingres.h>
                      2: # include      <access.h>
                      3: # include      <lock.h>
                      4: # include      <sccs.h>
                      5: 
                      6: SCCSID(@(#)pglocks.c   7.2     5/30/83)
                      7: 
                      8: struct lockreq Lock;
                      9: /*
                     10:  *     setpgl- sets a lock for the access buffer
                     11:  */
                     12: setpgl(buf)
                     13: struct accbuf  *buf;
                     14: {
                     15:        register struct accbuf  *b;
                     16:        register int            i;
                     17:        auto    int     ret_val;
                     18: 
                     19: #      ifdef xATR1
                     20:        if ( tTf(28,2) )
                     21:        {
                     22:                printf(" setpgl pg=%ld rel", buf->thispage);
                     23:                dumptid(&buf->rel_tupid);
                     24:        }
                     25: #      endif
                     26:        if (Alockdes < 0)
                     27:                return(1);
                     28:        b = buf;
                     29:        Lock.lract = A_SLP;     /* wait for lock */
                     30:        Lock.lrtype = T_PAGE;   /* page lock */
                     31:        Lock.lrmod = M_EXCL;    /* exclusive lock */
                     32:        bmove(&b->rel_tupid, Lock.lrel, 4);     /* copy relation id */
                     33:        bmove(&b->thispage, Lock.lpage, 4);     /* copy page id */
                     34:        i = write(Alockdes,  &Lock,  KEYSIZE + 3);
                     35:        read(Alockdes, &ret_val, sizeof (int));
                     36:        b->bufstatus |= BUF_LOCKED;
                     37:        return (ret_val);
                     38: }
                     39: /*
                     40:  *     unlpg- releases a page lock
                     41:  */
                     42: unlpg(buf)
                     43: struct accbuf  *buf;
                     44: {
                     45:        register struct accbuf  *b;
                     46:        register int            i;
                     47:        auto    int     ret_val;
                     48: 
                     49: #      ifdef xATR1
                     50:        if (tTf(28, 3))
                     51:        {
                     52:                printf(" unlpg page %ld rel", buf->thispage);
                     53:                dumptid(&buf->rel_tupid);
                     54:        }
                     55: #      endif
                     56:        if (Alockdes < 0)
                     57:                return(1);
                     58:        b = buf;
                     59:        Lock.lract = A_RLS1;
                     60:        bmove(&b->rel_tupid, Lock.lrel, 4);     /* copy relation id */
                     61:        Lock.lrtype = T_PAGE;   /* page lock */
                     62:        bmove(&b->thispage, Lock.lpage, 4);     /* copy page id */
                     63:        b->bufstatus &= ~BUF_LOCKED;
                     64:        i = write(Alockdes,  &Lock,  KEYSIZE + 3);
                     65:        read(Alockdes, &ret_val, sizeof (int));
                     66:        return (ret_val);
                     67: }
                     68: /*
                     69:  *     unlall - release all locks held by this process
                     70:  */
                     71: unlall()
                     72: {
                     73:        register int    i;
                     74:        auto    int     ret_val;
                     75: 
                     76: 
                     77: #      ifdef xATR1
                     78:        if (tTf(28, 6))
                     79:                printf(" unlall\n");
                     80: #      endif
                     81: 
                     82:        Acclock = TRUE; /* reset page lock flag just in case */
                     83:        if (Alockdes < 0)
                     84:                return(1);
                     85:        Lock.lract = A_RLSA;
                     86:        i = write(Alockdes, &Lock, KEYSIZE + 3);
                     87:        read(Alockdes, &ret_val, sizeof (int));
                     88:        return (ret_val);
                     89: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.