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