.TITLE CKP .IDENT /1/ ; EDIT # 0001 21 Jan 1981 12:05:22 DR0:[344,43]CKP.MAC;3 ; PREVIOUS EDIT 21 Jan 1981 11:55:00 DR0:[344,43]CKP.MAC;2 ;+ ; ; COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION, 1980 ; ; WRITTEN BY: ; ; M. S. HARVEY 4/9/80 ; ; THIS PRIVILEGED PROGRAM IS INTENDED TO RUN ON RSX-11M BL27 ONLY. ; IT WILL CHECKPOINT ALL CHECKPOINTABLE TASKS THAT ARE STOPPED AND ; HAVE NO OUTSTANDING I/O. THE PURPOSE OF THIS PROGRAM IS TO CLEAR ; OUT THE 'DEADWOOD' THAT MIGHT BE SITTING AROUND IN MEMORY AND USING UP ; NEEDLESS POOL. WHEN THIS PROGRAM RUNS ON A PERIODIC SCHEDULE (SUCH AS ; ONCE PER MINUTE) POOL FRAGMENTATION SEEMS TO BE MINIMIZED. ; ; TO ASSEMBLE ; ; MAC CKP=[1,1]EXEMC/ML,[11,10]RSXMC/PA:1,[X,X]CKP ; ; TO TASK BUILD ; ; TKB CKP/PR=CKP,[1,54]RSX11M.STB/SS,[1,1]EXELIB/LB ; ;- .MCALL EXIT$S START: CALL $SWSTK,USER ;; MOV @#$ACTHD,R1 ;; BEGIN WITH THE LOADER + 1 LOOP: MOV T.ACTL(R1),R1 ;; GET THE NEXT ACTIVE TASK BEQ RET ;; IF EQ, WE'RE ALL DONE SEARCHING TST T.STAT(R1) ;; IS TASK ALREADY BLOCKED? BNE LOOP ;; IF NE, YES, SKIP IT ; BIT TS.CKR,T.STAT(R1);; TASK ALREADY BEING CKECKPOINTED OUT? ; BEQ LOOP ;; BIT NOT SET, NO, LOOK SOME MORE BIT #T2.CHK,T.ST2(R1) ;; IS TASK CHECKPOINTING DISABLED? BNE LOOP ;; IF NE, YES, SKIP IT BIT #T2.STP,T.ST2(R1) ;; IS TASK STOPPED? BEQ LOOP ;; IF NE, NO, SKIP IT TSTB T.IOC(R1) ;; IS THERE ANY OUTSTANDING I/O? BNE LOOP ;; IF NE, YES, SKIP THIS TASK ALSO ; BIT T2.TIO,T.ST2(R1);; ANY BUFFERED TERMINAL I/O? ; BNE LOOP ;; IF NE, BIT SET, SKIP MOV T.PCB(R1),R2 ;; GET PCB FOR TASK CMP P.NAM(R2),#^RGEN;; IS THE PARTITION NAME 'GEN' BNE LOOP ;; IF NE, NO, LOOK AGAIN MOV R1,-(SP) ;; FOUND A VICTEM CALL $ICHKP ;; FLUSH THIS TASK NOW MOV (SP)+,R1 ;; RESTORE TCB ADDRESS BR LOOP ;; WHO ELSE GETS THE AX RET: RETURN ;; EXIT SYSTEM STATE USER: EXIT$S ; THE END .END START