perm filename RSLV.FAI[S,NET] blob sn#824074
filedate 1986-09-03 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00002 00002 TITLE RSLV A P PDLEN PDL RSLV READ MAIN CHKHST FLSHST HSTTAB
TITLE RSLV ;⊗ A P PDLEN PDL RSLV READ MAIN CHKHST FLSHST HSTTAB
;Interim resolver program. This program holds the host table in an
;upper segment so that other programs can attach to it. Eventually
;it will communicate with jobs using the domain resolver interface,
;in preparation for having a real resolver.
PRINTS/Save as ↓[RSLV]↓.DMP[NET,SYS]
PDL: BLOCK PDLEN
MOVE P,[IOWD PDLEN,PDL]
IRUMSK  ;No I-level code, interrupts just wake up main program
READ: PUSHJ P,ATTHST ;Read host table into upper segment
MAIN: CLKINT =60*=60 ;Sleep for 60 seconds
PUSHJ P,CHKHST ;See if the host table changed
JRST MAIN ;No change
PUSHJ P,FLSHST ;Yes, flush our upper segment
JRST READ ;And get a new one
;An obsolete host table is indicated by some other job changing the name of
;our high segment.
CHKHST: SEGNAM A, ;Get name of upper segment
CAME A,HSGNAM ;Is it what we expect?
AOS (P) ;No
POPJ P, ;Yes
;The host table is flushed by releaseing our high segment. We can't just
;read the new table into the same segment, because someone might be in the
;midst of using the current one.
FLSHST: SETZB A,HSTADR
CORE2 A, ;Get rid of our upper segment
JFCL ;Impossible error