.TITLE UPDOVR .IDENT /V7.02/ ;**************************************************************** ; ; PROCESS AN UPDATE STATISTICS REQUEST FROM UPD... ; ; THIS OVERLAY IS LOADED AND CALLED WHEN THE LOGGING TASK ; DISPATCHER RECEIVES A REQUEST FROM UPD... TO UPDATE ; THE "SHORT" USAGE STATISTICS. THE STATISTICS ARE OBTAINED ; FROM THE DYNAMIC STORAGE REGION PACKET MAINTAINED BY THE ; ACCOUNTING SYSTEM. ; ; VERSION: V6 OCTOBER 1979 ; VERSION: V7 JANUARY 1981 ; ; STEVE THOMPSON SCHOOL OF CHEMICAL ENGINEERING ; OLIN HALL ; CORNELL UNIVERSITY ; ITHACA NY 14853 ; ; ; *** W A R N I N G *** ; ; THE SUCCESSFUL OPERATION OF THIS ROUTINE DEPENDS ON THE ; ACCOUNTING SYSTEM'S DATA BASE IN POOL BEING IN ORDER. ; DON'T EDIT ACNODE.MAC WITHOUT BEING AWARE OF THE GLOBAL ; EFFECTS OF ANY CHANGES YOU MAY MAKE! ; ; REVISION HISTORY ; ---------------- ; ; SMT753 7-OCT-81 CHANGED NAMES OF CONDITIONAL ASSEMBLY ; PARAMETERS; SEE THE FILES MODIFY.TXT AND ; CONDEF.MAC FOR DETAILS. ; ; SMT762 9-OCT-81 ADDED SUPPORT FOR BATCH V3 CALLS TO THE ; "USE" COMMAND AND SUPPORT FOR THE BATCH/ ; INTERACTIVE LOAD FEATURE. ; ; SMT769 12-OCT-81 CHANGED TO CENTRALISED BATCH DEVICE NAME ; ;************************************************************** .MCALL GTIM$S,HWDDF$ HWDDF$ ; DEFINE HARDWARE PARAMETERS ; ; MACRO TO TRANSFER USAGE STATISTICS FROM POOL TO LOGGING TASK ROOT ; .MACRO UPDATE COUNT,TOTAL MOV (R1),COUNT MOV 2(R1),COUNT+2 SUB TOTAL+2,COUNT+2 SBC COUNT SUB TOTAL,COUNT MOV (R1)+,TOTAL MOV (R1)+,TOTAL+2 .ENDM $UPDEP:: ; OVERLAY TRANSFER ADDRESS .IF DF AA$USE ! AA$BAT MOV $ACCHD,R1 ; GET ACCOUNTING LISTHEAD ADDRESS BNE 2$ ; IF NE OK JMP 40$ ; ELSE RETURN 2$: ADD #6,R1 ; POINT TO BEGINNING OF DATA CALL $SWSTK,30$ ; SWITCH STACKS MTPS #PR7 ;; LOCK OUT INTERRUPTS UPDATE TIME,ELAPST ;;; UPDATE ELAPSED TIME STATISTICS UPDATE KERNEL,KRNTOT ;;; UPDATE EXECUTIVE USE STATISTICS UPDATE NULL,NULTOT ;;; UPDATE NULL TIME STATISTICS MTPS #0 ;;; ENABLE INTERRUPTS .IF DF AA$LDR UPDATE LOADER,LDRTOT ;; UPDATE LOADER STATISTICS .ENDC ; DF AA$LDR .IF DF AA$QIO UPDATE QIOCNT,QIOTOT ;; UPDATE SYSTEM WIDE QIO STATISTICS .ENDC ; DF AA$QIO .IF DF AA$CSW UPDATE SWTCNT,SWTTOT ;; UPDATE CONTEXT SWITCHING STATISTICS .ENDC ; DF AA$CSW .IF DF AA$BAT MOV #BATNOW,R4 ;; SET ADDRESS OF TOTAL BATCH CPU COUNTER MOV BATTOT,(R4)+ ;; COPY IN EXITED BATCH CPU TOTAL MOV BATTOT+2,(R4) ;; MOV $ACCHD,R2 ;; GET ACCOUNTING LISTHEAD ADDRESS (WE KNOW ;; THAT IT'S NON-ZERO) 10$: MOV (R2),R2 ;; GET ADDRESS OF NEXT TASK ACCOUNTING BLOCK BEQ 20$ ;; IF EQ, END OF ACCOUNTING LIST MOV B.UCB(R2),R1 ;; GET TI: UCB FOR THIS TASK MOV U.DCB(R1),R1 ;; THEN POINT TO THE DCB CMP D.NAM(R1),BATDEV ;; TASK IN BATCH SYSTEM? BNE 10$ ;; IF NE NO MTPS #PR7 ;; YES, LOCK OUT INTERRUPTS ADD B.CPU+2(R2),(R4) ;; ADD IN THE CPU TIME ADC -(R4) ;; ADD B.CPU(R2),(R4)+ ;; MTPS #0 ;; ENABLE INTERRUPTS BR 10$ ;; KEEP LOOKING .IFTF 20$: RETURN ;; RETURN TO USER STATE 30$: ; REF. LABEL .IFT MOV #BATNOW,R0 ; SET ADDRESS OF CURRENT BATCH CPU TOTAL MOV #BATCPU,R1 ; SET ADDRESS OF BATCH CPU "USE" FIELD MOV #BATLST+2,R2 ; SET ADDRESS+2 OF PREVIOUS TOTAL BATCH CPU FIELD MOV (R0)+,(R1)+ ; COPY CURRENT BATCH CPU TOTAL TO "USE" FIELD MOV (R0),(R1) ; SUB (R2),(R1) ; SUBTRACT PREVIOUS USE SBC -(R1) ; SUB -(R2),(R1) ; MOV (R0),2(R2) ; SET PREVIOUS TO CURRENT TOTAL BATCH CPU MOV -(R0),(R2) ; .ENDC ; DF AA$BAT ADD #1,UPNUM+2 ; ADD 1 TO UPDATE COUNT ADC UPNUM ; DON'T FORGET THE CARRY GTIM$S #UPTIM ; SET NEW UPDATE TIME MOV #B.LUPD,R1 ; SET LENGTH OF PACKET TO DEALLOCATE CALLR $DEALL ; DEALLOCATE THE PACKET AND RETURN .ENDC ; DF AA$USE ! AA$BAT 40$: RETURN ; RETURN TO CALLER .END