Google
 

Trailing-Edge - PDP-10 Archives - BB-M081Z-SM - monitor-sources/cfspar.mac
There are 13 other files named cfspar.mac in the archive. Click here to see a list.
; UPD ID= 8487, RIP:<7.MONITOR>CFSPAR.MAC.3,   9-Feb-88 12:17:27 by GSCOTT
;TCO 7.1218 - Insert copyright notice.
; UPD ID= 8359, RIP:<7.MONITOR>CFSPAR.MAC.2,  20-Jan-88 11:41:42 by RASPUZZI
;TCO 7.1190 - Move CFS universal stuff out of CFSSRV into CFSPAR.

;	COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1988.
;	ALL RIGHTS RESERVED.
;
;	THIS SOFTWARE IS FURNISHED UNDER A  LICENSE AND MAY BE USED AND  COPIED
;	ONLY IN  ACCORDANCE  WITH  THE  TERMS OF  SUCH  LICENSE  AND  WITH  THE
;	INCLUSION OF THE ABOVE  COPYRIGHT NOTICE.  THIS  SOFTWARE OR ANY  OTHER
;	COPIES THEREOF MAY NOT BE PROVIDED  OR OTHERWISE MADE AVAILABLE TO  ANY
;	OTHER PERSON.  NO  TITLE TO  AND OWNERSHIP  OF THE  SOFTWARE IS  HEREBY
;	TRANSFERRED.
;
;	THE INFORMATION IN THIS  SOFTWARE IS SUBJECT  TO CHANGE WITHOUT  NOTICE
;	AND SHOULD  NOT  BE CONSTRUED  AS  A COMMITMENT  BY  DIGITAL  EQUIPMENT
;	CORPORATION.
;
;	DIGITAL ASSUMES NO  RESPONSIBILITY FOR  THE USE OR  RELIABILITY OF  ITS
;	SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.
	SUBTTL CFSPAR - Parameters for CFS

	SEARCH MONSYM,MACSYM,PROLOG,SCAPAR
;	M. Raspuzzi January 88

	SALL
	UNIVERSAL CFSPAR

	IFE CFSSCA,<CFSDUM==0>	;If no SCA, define this as a dummy as well
	Subttl	Table of Contents

;		     Table of Contents for CFSPAR
;
;				  Section		      Page
;
;
;    1. CFSPAR - Parameters for CFS  . . . . . . . . . . . . .   2
;    2. Data definitions . . . . . . . . . . . . . . . . . . .   4
;    3. Macros . . . . . . . . . . . . . . . . . . . . . . . .  11
;    4. End of CFSPAR  . . . . . . . . . . . . . . . . . . . .  12
	SUBTTL Data definitions

;Special defs

WRTTIM==^D200			;Minimum hold time for token
DIRTIM==^D200			;Minimum hold time for a directory
EQFTIM==^D200			;[7.1072] Minimum hold time for ENQ Lock
MAXHLT==^D3000			;Max time to hold token under demand

RCRDIT==2			;MIN RECEIVE CREDIT
SCRDIT==2			;MIN SEND CREDIT
MAXVWT==5			;MAX TIME (MS) TO WAIT FOR VOTE RESULTS

   IFN CLEQIN,<			;[7.1072] If cluster ENQ code present
ENQQMT==^D10			;[7.1072] Number of extra buffers for ENQSRV
   >				;[7.1072]
   IFE CLEQIN,<			;[7.1072] If cluster ENQ code not present
ENQQMT==0			;[7.1072] No extra buffers for ENQSRV
   >				;[7.1072]
BUFSCT==5+ENQQMT		;[7.1072] # of receive buffers per CFS circuit

   IFN CFSSCA,<
	HSHLEN==^D509		;SIZE OF HASH TABLE (should be prime)
   >	;IFN CFSSCA
   IFE CFSSCA,<
	HSHLEN==^D251
   >	;IFE CFSSCA
   IFN CFSSCA,<			;If SCA present
CFSSLN==^D100			;Size of CFS stack
   >	;IFN CFSSCA
   IFE CFSSCA,<			;If no SCA
CFSSLN==20			; then small private stack needed
   >	;IFE CFSSCA

DMPSLN==^D100			;[7.1021] Size of the dump stack
CFNBC==OFNBC
CFNBSZ==OFNBSZ			;Defs in OFNLEN
;Bits in SCAFLG

	DEFSTR SCRSV,SCAFLG,0,1	;RESTART VOTE BIT
	DEFSTR SCDIS,SCAFLG,1,1 ;Disconnect pending
	DEFSTR SCDDP,SCAFLG,2,1	;Need DDMP soon
	DEFSTR SCCNC,SCAFLG,3,1	;We got connected flag
	DEFSTR SCWKP,SCAFLG,2,3	;Bits to cause a scheduler pass
	DEFSTR SCVER,SCAFLG,4,1	;Set if structure verify needed


;Optional data in connect_request or accept_request

OPDSER==0			;serial number in optional data
OPDTYP==1			;type in optional data,,net number
OPDNAM==2			;first word of name
OPDNEW==3			;last 2 chars of name,,old/new flag
 DEFSTR ONFLG,,31,8		;Old/new byte in optional data
  OF%NEW==0			;Unknown host
  OF%DLY==1			;In dealy for this host
  OF%OLD==2			;It is old

CLCCNT==^D350			;Number to collect when we are desparate
SKDCNT==^D200			;Number to collect in the background
CFSCTM==^D10000
;Definitions for hash table
;Description of a resource block.  Offsets HSHROT and HSHQAL are hashed to
;provide offset into HSHTBL.  Entries that conflict are chained together via
;offsets HSHLNK and HSHBKP.

HSHLNK==0			;OFFSET FOR LINK WORD
HSHROT==1			;ROOT NUMBER
HSHQAL==2			;QUALIFIER
HSHTIM==3			;TIME STAMP OF GRANT
HSFLAG==4			;Offset for the flags
DEFSTR	HSHWVT,4,0,1		;IF ON, WE ARE VOTING
DEFSTR	HSHYES,4,1,1		;YES/NO VOTE (1 if anyone said no)
DEFSTR	HSHTYP,4,5,4		;TYPE OF ENTRY
	.HTPLH==0		;Place-holder entry
	.HTOAD==1		;OWNED FOR FULL SHARING
	.HTOSH==2		;OWNED READ-ONLY SHARED
	.HTOEX==3		;OWNED EXCLUSIVELY
	.HTOPM==4		;OWNED FOR PROMISCOUS READ
DEFSTR	HSHTWF,4,6,1		;"token" wait flag (see CFSUGW)
DEFSTR	HSHRTY,4,7,1		;RETRY NOW BIT
DEFSTR	HSHLSG,4,8,1		;ENTRY BEING RELEASED
DEFSTR	HSHVRS,4,9,1		;VOTE RESTART FLAG
DEFSTR	HSHLOS,4,10,1		;LONG/SHORT FLAG (1 if block is long)
DEFSTR 	HSHUGD,4,11,1		;VOTING FOR AN UPGRADE
DEFSTR	HSHODA,4,12,1		;OPtional data valid
DEFSTR	HSHKPH,4,13,1		;Don't pruge this entry
DEFSTR	HSHVTP,4,17,4		;TYPE WE ARE VOTING ON
DEFSTR	HSHDWT,4,18,1		;If here, waiting for delay to be up
DEFSTR	HSVUC,4,19,1		;Bit to indicate vote must include HSHCOD
DEFSTR	HSHLCL,4,20,1		;Local exclusive
DEFSTR	HSHRFF,4,21,1		;For tokens only
DEFSTR	HSHAVT,4,22,1		;Vote on all nodes, even reduced CFS nodes
DEFSTR 	HSHBTF,4,23,1		;If set, this is a bit-table file
DEFSTR  HSHTAM,4,24,1		;[7247] Cached file access token (cached OFN)
DEFSTR	HSHCNT,4,35,11		;[7247] Count of sharers
HSHCOD==5			;UNIQUE CODE USED FOR ID
HSHPST==6			;POST ADDRESS WHEN RESOURCE IS WITHDRAWN
HSHVWD==7			;Word used by voter
 DEFSTR	HSHLKF,HSHVWD,11,12	;Lock field
 DEFSTR	HSHVCT,HSHVWD,17,6	;VOTE COUNT
 DEFSTR	HSHUNQ,HSHVWD,35,18	;VOTE CODE
HSHVRW==10			;Vote reply word
 DEFSTR HSHDRC,HSHVRW,35,18	;Reason code for denial on NO return to vote
HSHNBT==11			;NODE BIT TABLE
HSHRET==12			;RETURN ADDRESS ON DEASSIGN
HSHDVD==13			;RELEASE VOTE DATA ("Deferred vote data")
 DEFSTR HSHRHN,HSHDVD,17,18	;DEST PORT I.D.
 DEFSTR HSHVVL,HSHDVD,35,18	;VOTE CODE
HSHMSK==14			;Delay mask and fork word
 DEFSTR HSHDLY,HSHMSK,17,18	;Delay mask
 DEFSTR HSHFRK,HSHMSK,35,18	;Owning fork
HSHOPT==HSHMSK+1		;Optional data from vote
HSHOP1==HSHOPT+1		; Second opt data word
HSHOKV==HSHOP1+1		;Call-back when a vote is OKed
HSHCDA==HSHOKV+1		;Call-back when optional data is present in vote
HSHFCT==HSHCDA+1		;Fairness timer
HSHWTM==HSHFCT+1		;revote wait time
HSHBKP==HSHWTM+1		;Back pointer
HSHSIZ==HSHBKP+1		;SIZE OF A HASH ENTRY
HSHBTT==HSHSIZ+1		;FIRST WORD OF BIT TABLE
;Defs for CFS block

NVOTQ==^D4			;# OF VOTE PACKETS TO STOCK FROM FREE SPACE
   IFNDEF CFSDUM,<		;If a real CFS
 NVOTQ0==^D75			;# of packet to get from private stock
   >	;IFNDEF CFSDUM
   IFDEF CFSDUM,<		;If a reduced CFS
 NVOTQ0==^D10			;Just get a few
   >	;IFNDEF CFSDUM


;Contents of a packet sent via SCA.

SCALEN==.MHSTS+1		;First word past SCA header

DEFSTR CFFLG,SCALEN,11,12	;Flags
 DEFSTR CFODA,SCALEN,0,1	;Opt data present
 DEFSTR CFVUC,SCALEN,1,1	;Vote to include HSHCOD
DEFSTR CFCOD,SCALEN,17,6	;OPCODE FOR VOTING
	.CFVOT==1		;VOTER
	.CFREP==2		;REPLY TO VOTE
	.CFRFR==3		;RESOURCE FREED
	.CFCEZ==4		;SEIZE RESOURCE
	.CFBOW==5		;Broadcast OFN change
	.CFBEF==6		;Broadcast EOF
	.CFTAD==7		;Time and date arrived
	.CFSHT==10		;Shutdown of system is pending
   IFN CLEQIN,<			;[7.1072] If cluster ENQ code present
	.CFENQ==:11		;[7.1072] Cluster ENQ message
.CFMAX==11			;[7.1072] Maximum function code when ENQ present
   >				;[7.1072]
   IFE CLEQIN,<			;[7.1072] If no cluster ENQ code present
.CFMAX==10			;[7.1072] Maximum function code without ENQ code
   >				;[7.1072]
DEFSTR CFUNQ,SCALEN,35,18	;NUMBER OF THIS VOTE OR REQ UNIQUE CODE
CFROT==SCALEN+1			;ROOT CODE FOR THIS VOTE
CFQAL==SCALEN+2			;QUALIFIER CODE FOR THIS VOTE
CFTYP==SCALEN+3			;Access required, or answer
CFDAT==SCALEN+4			;Optional data, it present
CFDT1==SCALEN+5
CFDST0==CFDT1+1			;STR free count in bit table
CFDST1==CFDST0+1		;Transaction count of CFDST0
CFVGRD==CFDST1+1		;Guard word,,Denial reason code
 DEFSTR CFGWD,CFVGRD,17,18	;Unique value - used for debugging
 DEFSTR CFDRC,CFVGRD,35,18	;Field for reason code returned with a NO
	.CDDWT==1		;Denied - we are in VOTDWT
	.CDVUC==2		;Denied - HSHCODs are unequal
	.CDYUX==3		;Denied - voting, HSHYES, we have .HTOEX
	.CDYUN==4		;Denied - voting, HSHYES, unequal access
	.CDVDL==5		;Denied - voting, HSHDLY set
	.CDVLN==6		;Denied - voting, tie, our serial # bigger
	.CDVUX==7		;Denied - voting, tie, HSHUGD, he wants .HTOEX
	.CDVUN==10		;Denied - voting, tie, HSHUGD, unequal access
	.CDOCT==11		;Denied - we own, conflicting access, HSHCNT
	.CDOFC==12		;Denied - we own, conflicting access, HSHFCT

;Values in CFTYP reply:
;	0	OK
;	-1	OK with delay (see call to CFSRMX in CFSRTV)
;	-2	Conditional OK (set when DDMP finishes with delayed yes in CFSFOD)
;	1	NO

VOTSIZ==CFVGRD+1		;Actual size of a packet
VOTSZB==VOTSIZ-1		;SIZE OF BUFFER IN BYTES
 VOTLEN==NVOTQ0*VOTSIZ		;words on all vote packets
;Definitions of "resource names"
;These values are used as qualifiers in numbered resources

DRBASE==<17777,,0>		;DIR BASE OFFSET for DIRECTORY locks
DRBAS0==<37777,,0>		;Allocation table offset for allocation
FILEWL==DSKAB_1			;File write lock (frozen writer)
FILEWT==DSKAB_3			;Access token bias
STRCTK==5B2			;Structure designator
STRCTN==<-2,,0>-DSKAB		;Name register
FILEEQ==DSKAB_2			;File enqueue token
EQLROT==<57777,,0>		;[7.1072] Root for ENQ Database Lock
EQLQAL==<67777,,0>		;[7.1072] Qualifier for ENQ Database Lock
CFJBAS==<47777,,0>		;Base for job number assignment

;Random definitions

DEFSTR STCRA,CFHSTS,17,1	;Bit to control "credit available"
	SUBTTL	Macros

;CFS interlock macros

;The CFS interlock exists to insure that the CFS hash table
;does not change.

   DEFINE CFSINO <
	CALL SCAPOL
   >

;MACRO to test if the structure is part of CFS or is local to this machine.
;	T1/	Structure number

   DEFINE TSTRMT <
	CALL RMT.TS
   >


;macro to save P1-P5

   DEFINE SAVEP5,<
	JSP CX,SAVP5>
	SUBTTL End of CFSPAR

	END