|
|
1.1 ! root 1: /* ! 2: ** Lockdriver moved to user process 7/19/82 ! 3: */ ! 4: ! 5: /* Only the parameters NLOCKS, PLOCKS, RLOCKS and DLOCKS ! 6: * may be changed by an INGRES installation. See ! 7: * 'HOW TO INSTALL CONCURRENCY DEVICE' for details. ! 8: * The file can be printed by "nroff .../doc/other/lockdev.nr" ! 9: */ ! 10: ! 11: # define DLOCKS 10 /* max number of data base locks (limits # of ingreses */ ! 12: # define RLOCKS (2*DLOCKS + 6) ! 13: # define PLOCKS (RLOCKS + 3) ! 14: # define NLOCKS (PLOCKS + 1) ! 15: # define KEYSIZE 12 ! 16: ! 17: # define M_EMTY 0 ! 18: # define M_SHARE 2 ! 19: # define M_EXCL 1 ! 20: ! 21: # define T_CS 0 ! 22: # define T_PAGE 1 ! 23: # define T_REL 2 ! 24: # define T_DB 3 ! 25: ! 26: # define A_RTN 1 ! 27: # define A_SLP 2 ! 28: # define A_RLS1 3 ! 29: # define A_RLSA 4 ! 30: # define A_ABT 5 ! 31: ! 32: # define W_ON 1 ! 33: # define W_OFF 0 ! 34: ! 35: struct Lockreq ! 36: /* Lock Request */ ! 37: { ! 38: char lr_act; /* requested action: ! 39: * =1 request lock, err return ! 40: * =2 request lock, sleep ! 41: * =3 release lock ! 42: * =4 release all locks for pid ! 43: */ ! 44: char lr_type; /* same as Locktab l_type */ ! 45: char lr_mod; /* same as Locktab l_mod */ ! 46: char lr_key[KEYSIZE];/* requested key */ ! 47: }; ! 48: ! 49: ! 50: # define LOCKPRI (PZERO+1) /* sleep priority */ ! 51: ! 52: /* ! 53: * data structure for Lock table ! 54: */ ! 55: struct Lockform ! 56: { ! 57: int l_pid; ! 58: char l_wflag; /* wait flag: = 1 a process is waiting*/ ! 59: char l_type; /* type of lock: ! 60: = 0 for critical section ! 61: = 1 for page ! 62: = 2 for logical ! 63: = 3 for data base ! 64: */ ! 65: char l_mod; /* mod of Lock or lock action requested ! 66: * = 0 slot empty ! 67: * = 1 exclusive lock ! 68: * = 2 shared lock ! 69: */ ! 70: char l_key[KEYSIZE]; ! 71: } Locktab[NLOCKS]; ! 72: ! 73: int Lockset[] = ! 74: /* array of number of locks which can be ! 75: * set for each lock. ! 76: */ ! 77: { ! 78: NLOCKS, ! 79: PLOCKS, ! 80: RLOCKS, ! 81: DLOCKS ! 82: }; ! 83:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.