;<135-TENEX>STORAG.MAC;5    13-NOV-75 11:16:21    EDIT BY CALVIN
; Added GDSKAL (Group DiSK ALlocation)
;<134-TENEX>STORAG.MAC;4    28-APR-75 13:54:03    EDIT BY CLEMENTS
;<134-TENEX>STORAG.MAC;3    28-APR-75 11:24:40    EDIT BY CLEMENTS
;<134-TENEX>STORAG.MAC;2    24-APR-75 12:26:38    EDIT BY CLEMENTS
;<134-TENEX>STORAG.MAC;1    23-APR-75 13:52:42    EDIT BY CLEMENTS
;NEW FILE STORAG.MAC WHICH WILL CONTAIN ALL LS, GS, ETC AREAS OF
; THE SYSTEM, TO REDUCE THE NUMBER OF CONFIGURATION-DEPENDENT FILES.

	SEARCH PROLOG
	TITLE STORAGE

;THIS MODULE CONTAINS LS, GS, NGS, NGSP, ETC MACROS, PARTICULARLY
;THOSE WHICH ARE CONFIGURATION-DEPENDENT IN SIZE OR
;IN EXISTENCE.


IFN PIESLC,<

;STORAGE FOR PIE-SLICE GROUP DATA FILE
NGSP GRPFIL,NGRPPG			;PLACE TO MAP THE FILE

TOTSHR=:GRPFIL				;TOTAL NUMBER OF SHARES

;EACH PIE-SLICE GROUP ENTRY CONTAINS THE FOLLOWING FIELDS
BEGDAT=:GRPFIL+1			;START DATE OF GROUP
CPUSED=:GRPFIL+2			;CPU TIME USED BY GROUP
SSHARE=:GRPFIL+3			;NUMBER OF SHARES OWNED BY GROUP
GRPNM=:GRPFIL+4				;GROUP NAME (SIXBIT)
GDSKAL=:GRPFIL+5			; # disk pages allocated slice
;NOTE THAT THERE ARE 2 UNUSED WORDS PER GROUP ENTRY

;OTHER SWAPPABLE STORAGE FOR PIE-SLICE SCHEDULER
NGS NJBGRP,NGRPS		;NUMBER OF JOBS PER GROUP
NGS KFACT,1			;MULTIPLICATIVE FACTOR FOR WINDFALL
NGS PIEFLG,1			;NON-ZERO MEANS PIE SLICE DATA FILE
				;SUCCESSFULLY MAPPED
NGS GRPLOK,1			;PIE-SLICE DATA LOCK

>;END PIE-SLICE SCHEDULER CONDITIONAL

SSTSIZ==:34000		;MAX SIZE OF SWP SYM TAB
DDTSYM=:MDDT+1		;PTR TO DDT SYMTAB PTR

NGSP BUGTAB,SBUGTF/1000			;BUG TABLE AND STRINGS
NGSP SWPST,SSTSIZ/1000		;SWP SYM TAB

; STUFF FOR NON-JOB0 AUTOJOB STARTUP FROM FILE

GS AUTONX,1		; STATE OF NON-JOB0 STARTUP
			; + CHARACTER POINTER TO STARTUP FILE
			; -1 DONE

LS SWPSTP,1			;POINTER TO SWAPPABLE SYMTAB
LS GOTDDT,1			;REMEMBERS IF WE HAVE MAPPED DDT

LS HSYST2,1			; LINEAR TAD OF SHUTDOWN
LS HSYST3,1			; LINEARTAD FOR NEXT MSG TYPEOUT
LS HSYST5,1			; REASON CODE FOR SHUTDOWN (A LA 1822)

NGS JOBNM2,NJOBS		;THE REAL JOB NAME, EVEN IF .OTHER

; LOGGING TTY VARIABLES

LS(LOGLCK,1)		; INTERLOCK TO PREVENT INTERMIXING MSGS
LS(LLGLCK,1)		; PC OF LAST LOCKER
LS(FLGLCK,1)		; FORKX OF LAST LOCKER

;STORAGE FOR CRJOB
;
NGS JOBONT,NJOBS	;JOB NUMBER WHICH OWNS ANOTHER JOB (IE CREATED 
			; IT), OR -1 IF NOT OWNED.
NGS CRJONJ,1		;DURING THE JSYS, JOB NUMBER CREATING NEW JOB
NGS CRJAC1,1		;AC1 FROM CREATOR TO CREATEE FOR EXEC0
NGS CRJOJC,1		;CAPABILITIES WORD OF CREATOR AT TIME OF JSYS
NGS CRJUSR,10		;NAME STRING WHICH NEW JOB WILL BE LOGGED IN AS.
NGS CRJPSW,10		;PASSWORD FOR LOGIN OF NEW JOB
NGS CRJACT,11		;ACCOUNT FOR LOGIN. AND STRING SPACE FOR IT
NGS CRJFIL,40		;FILE NAME STRING TO RUN IN NEW JOB.
NGS CRJEVO,1		;OFFSET IN ENT VEC FOR FILE TO RUN
NGS CRJFAC,20		;AC'S TO PUT INTO FORK BEING RUN
NGS CRJTTY,1		;TTY NUMBER FOR NEW JOB, OR -1 IF TO BE DETACHED
NGS CRJEXF,1		;EXEC FLAG WORD REQUESTED
NGS CRJPJF,1		;PRIMARY JFN'S FOR NEW JOB

; Resident storage for file system

LS(DIOFN,NDSKS)		; Ofn for directory index file
LS(FDOFN,NFDIB*NDSKS)	; Table of ofns for fd
LS(FDLOFN,NDSKS)	; Long file ofn for fd


; Variables in psb associated with files

PS(CAPMSK)
PS(CAPENB)
PS(PRIMRY)		; Primary io indirection pointers
PS(LSTERR)		; Last error number
PS(ERRSAV,10)		; Block of error parameters

; Variables in jsb associated with files

DEFINE JFS(SYM)<ASSIGN SYM,JFNPC,1>
ASSIGN JFN0,JFNPC,0
JFS(FILBYT)		; Byte pointers to current window
JFS(FILBYN)		; Byte number of current byte
JFS(FILLEN)		; Total length of file in bytes
JFS(FILCNT)		; Bytes remaining in current buffer
JFS(FILLCK)		; File lock word
JFS(FILWND)		; Lh ==> current page number
			; Rh ==> location of current window
JFS(FILSTS)		; Lh ==> file status bits
			; Rh ==> device dependent dispatch address
JFS(FILDEV)		; Device dependent  information
JFS(FILOFN)		; Lh ==> ofn for this file
			; Rh ==> ofn of long file pt table
JFS(FILLFW)		; Lh ==> current page table number
			; Rh ==> location of page table table
JFS(FILDDN)		; Lh ==> pointer to device string block
			; Rh ==> directory number
JFS(FILNEN)		; Lh ==> pointer to file name string block
			; Rh ==> pointer to extension string block
JFS(FILVER)		; Lh ==> fork number of originator of this jfn
			; Rh ==> version number

; The following variables overlay the space in the above definitions
; This is possible since they are used only during gtjfn

ASSIGN	FILTMP,FILBYT,0	; Lh ==>0 ptr to temp string block for default
			; Rh ==>0 point to temp string block
ASSIGN	FILPRT,FILBYN,0	; Pointer to protection string or protection #
ASSIGN	FILACT,FILLEN,0	; Pointer to account string or account number
ASSIGN	FILOPT,FILWND,0	; Byte pointer to store string in gtjfn

JS(JFNLCK)		; Lock to prevent tampering with jfn's
JS(MAXJFN)
JS(JOBUNT)		; CONNECTED DSK UNIT
JS(JBCLCK)		; LOCK FOR ASGPAG
JS(JBCOR,4)		; Page allocation bit table
JS(JSBFRE,7)		; Job area free storage header
JS(JSFREE,IJSFRE)	; Free storage area in job block

	END ; OF STORAG.MAC

