cdc:nos2.source:nam5871:hwlp
Table of Contents
HWLP
Table Of Contents
- [00015] PROC HWLP
- [00069] PROC HPAWL
- [00070] PROC HPGET
- [00071] PROC HPGETMM
- [00072] PROC HPGETSM
- [00073] PROC HPPUT
- [00074] PROC HPWAIT
- [00075] PROC HPXFR
- [00076] PROC HPPUTQ
- [00077] PROC HRELWWL
- [00078] PROC MRELS
- [00079] PROC OTIME
- [00080] PROC OVLCALL
- [00081] PROC XTRACE
Source Code
- HWLP.txt
- *DECK HWLP
- USETEXT NIPDEF
- USETEXT APPSTAT
- USETEXT AWLNTRY
- USETEXT DRHDR
- USETEXT FREETAB
- USETEXT NWLHEAD
- USETEXT NWLNTRY
- USETEXT OVERLAY
- USETEXT PARAMP
- USETEXT PT
- USETEXT AT
- USETEXT ACB
- USETEXT STATTAB
- PROC HWLP; # PROCESS WORKLIST #
- STARTIMS;
- #
- *1DC HWLP
- *
- * 1. PROC NAME AUTHOR DATE
- * HWLP E. GEE 78/01/25
- *
- * 2. FUNCTIONAL DESCRIPTION.
- * PROCESS NETWORK WORKLIST
- *
- * 3. METHOD USED.
- * PROCESS WORKLIST ENTRIES UNTIL NONE LEFT OR LAST WORKLIST
- * FUNCTION NOT COMPLETED
- * CHECK FOR VALID AIP HEADER WORD
- * CALL APPROPRIATE ROUTINE TO PROCESS NETWORK WORKLIST ENTRY
- * FUNCTION
- * IF ENTIRE WORKLIST PROCESSED, THEN PROCESS AWL (IF ONE TO
- * PROCESS) AND RELEASE REST OF NWL
- *
- * 4. ENTRY PARAMETERS.
- * ACBADDR ACB ADDRESS
- *
- * 5. EXIT PARAMETERS.
- * ABTAPPF ABORT FLG SET IF AIP SENT US BAD WORKLIST
- * ENTRY
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
- * APPSTAT BUFFTAB DRHDR
- * NIPDEF NWLHEAD NWLNTRY
- * ACB
- * STATTAB STATISTICS TABLE
- *
- * 7. ROUTINES AND OVERLAYS CALLED.
- * HPAWL PROCESS AWL
- * HPGET PROCESS *NETGET*
- * HPGETMM PROCESS *NETGMM*
- * HPGETSM PROCESS *NETGSM*
- * HPPUT PROCESS *NETPUT*
- * HPWAIT PROCESS *NETWAIT*
- * HRELWWL RELEASE WHOLE WORKLIST
- * OTIME GET SYSTEM RTIME
- * XTRACE RECORD PROCEDURE CALLS
- *
- * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION.
- * THIS PROCEDURE IS CALLED BY HHIR,HPFL, AND XSACB.
- *
- #
- STOPIMS;
- #
- EXTERNAL VARIABLES
- #
- XREF BEGIN
- PROC HPAWL; # PROCESS APPLICATION WORKLIST #
- PROC HPGET; # PROCESS NETGET, NETGETL, NEGETF, NETGTFL#
- PROC HPGETMM ; # PROCESS GETMM WORKLIST #
- PROC HPGETSM; # PROCESS NETGETSM #
- PROC HPPUT; # PROCESS NETPUT, NETPUTF #
- PROC HPWAIT; # PROCESS NETWAIT #
- PROC HPXFR ;
- PROC HPPUTQ ;
- PROC HRELWWL; # RELEASE WHOLE NWL #
- PROC MRELS; # RELEASE BUFFER SAPCE #
- PROC OTIME; # GET SYSTEM RTIME #
- PROC OVLCALL; # LOAD AND EXECUTE OVERLAY #
- PROC XTRACE; # TRACE CALL #
- END
- #
- INTERNAL VARIABLES
- #
- #
- NWL OP-CODE JUMP TABLE
- #
- SWITCH NWLOPJT ,OP1,OP2,OP3,OP4,OP5,OP6,OP7,OP8,OP9,
- OP10,OP11,OP12,OP13,OP14,OP15,OP16,OP17,OP18;
- ITEM TEMP;
- CONTROL IFEQ STAT,1;
- ARRAY STIME P(1); # RTIME BUFFER FOR STARTING TIME #
- BEGIN
- ITEM SMILS U(0,24,36); # STARTING TIME IN MILLESECONDS #
- END
- ARRAY ETIME P(1); # RTIME BUFFER FOR ENDING TIME #
- BEGIN
- ITEM EMILS U(0,24,36); # ENDING TIME IN MILLESECONDS #
- END
- ITEM STTEMP; # TEMPORARY STATISTICS VARIABLE #
- CONTROL FI;
- #**********************************************************************#
- BEGIN
- CONTROL IFEQ DEBUG,1;
- XTRACE("HWLP ") ;
- CONTROL FI;
- #
- STEP 1 INITIALIZE FUNCTION-COMPLETE FLAG AND SEE IF ANYTHING
- TO DO
- #
- ABTADDR = ACBADDR;
- DONE = TRUE;
- P<ACB> = ACBADDR;
- WLADDR = ACBWLADR[0];
- FOR TEMP=TEMP WHILE DONE # PREVIOUS WORKLIST ENTRY COMPLETED #
- AND ACBNWLE[0] NQ 0 # MORE NWL ENTRY TO PROCESS #
- AND HRL NQ 0 # NAM BUFFER LEVEL NOT ZERO #
- DO
- BEGIN # THERE IS WORK FOR HWLP TO DO #
- #
- STEP 2 CHECK FOR VALID AIP HEADER WORD
- #
- P<NWLENTRY> = WLADDR;
- TEMP = NWLEBS[0];
- NEXTWLA = WLADDR + TEMP;
- IF NEXTWLA GR ACBWLLWA[0] OR TEMP LS LENGTHMIN
- THEN
- BEGIN
- ABTAPPF = XBADWCNE; # SET ABORT-APPLICATION FLAG #
- DONE = FALSE;
- END
- ELSE
- BEGIN
- IF NWLOP LS WLOPMIN OR NWLOP GR WLOPMAX
- THEN
- BEGIN
- ABTAPPF = XBADOP;
- DONE = FALSE;
- END
- ELSE
- BEGIN
- #
- STEP 3 PROCESS OP-CODE FUNCTION
- #
- #
- ********** BEGINNING OF CASE STATEMENT **********
- #
- GOTO NWLOPJT[NWLOP[0]];
- OP1: # PROCESS *NETPUT* #
- OP9: # PROCESS *NETPUTF* #
- CONTROL IFEQ STAT,1;
- OTIME(STIME); # GET SYSTEM TIME BEFORE PROCESSING PUT #
- CONTROL FI;
- HPPUT;
- CONTROL IFEQ STAT,1;
- OTIME(ETIME); # GET SYSTEM TIME AFTER PROCESSING PUT #
- ST$NPU = ST$NPU + 1; # INCREMENT NUMBER OF PUT TYPE CALLS#
- STTEMP = EMILS[0] - SMILS[0]; # TIME SPENT IN HPPUT #
- ST$TPU = ST$TPU + STTEMP; # TOTAL TIME SPENT IN HPPUT #
- IF ST$LPU LS STTEMP
- THEN # FOUND LARGER TIME INTERVAL IN HPPUT #
- BEGIN
- ST$LPU = STTEMP; # NEW LARGEST TIME INTERVAL #
- END
- CONTROL FI;
- GOTO CHECKFC;
- OP2: # PROCESS *NETGET* #
- OP3: # PROCESS *NETGETL* #
- OP8: # PROCESS *NETGETF* #
- OP10: # PROCESS *NETGTFL* #
- CONTROL IFEQ STAT,1;
- OTIME(STIME); # GET SYSTEM TIME BEFORE PROCESSING GET #
- CONTROL FI;
- HPGET;
- CONTROL IFEQ STAT,1;
- OTIME(ETIME); # GET SYSTEM TIME AFTER PRCESSING GET #
- ST$NGE = ST$NGE + 1; # INCRE NUMBER OF GET TYPE CALLS #
- STTEMP = EMILS[0] - SMILS[0]; # TIME SPENT IN HPGET #
- ST$TGE = ST$TGE + STTEMP; # TOTAL TIME SPENT IN HPGET #
- IF ST$LGE LS STTEMP
- THEN # FOUND LARGER TIME INTERVAL IN HPGET #
- BEGIN
- ST$LGE = STTEMP; # NEW LARGEST TIME INTERVAL #
- END
- CONTROL FI;
- GOTO CHECKFC;
- OP4: # PROCESS *NETGETSM* #
- CONTROL IFEQ STAT,1;
- OTIME(STIME); # GET SYSTEM TIME BEFORE PROCESSING GETSM #
- CONTROL FI;
- HPGETSM;
- CONTROL IFEQ STAT,1;
- OTIME(ETIME); # GET SYSTEM TIME AFTER PROCESSING GETSM #
- ST$NGS = ST$NGS + 1; # INCRE NUMBER OF NETGETSM CALLS #
- STTEMP = EMILS[0] - SMILS[0]; # TIME SPENT IN HPGETSM #
- ST$TGS = ST$TGS + STTEMP; # TOTAL TIME SPENT IN HPGETSM #
- IF ST$LGS LS STTEMP
- THEN # FOUND LARGER TIME INTERVAL IN HPGETSM #
- BEGIN
- ST$LGS = STTEMP; # NEW LARGEST TIME INTERVAL #
- END
- CONTROL FI;
- GOTO CHECKFC;
- OP5: # PROCESS *NETWAIT* #
- CONTROL IFEQ STAT,1;
- OTIME(STIME); # GET SYS TIME BEFORE PROCESSING NETWAIT #
- CONTROL FI;
- HPWAIT;
- CONTROL IFEQ STAT,1;
- OTIME(ETIME); # GET SYSTEM TIME AFTER PROCESSING NETWAIT#
- ST$NWA = ST$NWA + 1; # INCRE NUMBER OF NETWAIT CALLS #
- STTEMP = EMILS[0] - SMILS[0]; # TIME SPENT IN HPWAIT #
- ST$TWA = ST$TWA + STTEMP; # TATAL TIME SPENT IN HPWAIT #
- IF ST$LWA LS STTEMP
- THEN # FOUND LARGER TIME INTERVAL IN HPWAIT #
- BEGIN
- ST$LWA = STTEMP; # NEW LARGEST TIME INTERVAL #
- END
- CONTROL FI;
- GOTO CHECKFC;
- OP6: # NETON NOT ALLOWED HERE #
- OP7: # NETOFF NOT ALLOWED HERE #
- OP13: # BAD OPCODE RECEIVED FOR WORKLIST #
- OP15:
- OP16:
- OP17:
- DONE = FALSE;
- ABTAPPF = XBADOP;
- GOTO CHECKFC ;
- OP11:
- HPXFR ;
- GOTO CHECKFC ;
- OP12:
- GOTO CHECKFC ;
- OP14: # PROCESS GETMM WORKLIST #
- HPGETMM ;
- GOTO CHECKFC ;
- OP18: # PROCESS NETPUTQ OPCODE #
- HPPUTQ(NWLTLW[0],NWLPQN[0]) ;
- GOTO CHECKFC ;
- CHECKFC:
- #
- ********** END OF CASE STATEMENT **********
- #
- #
- STEP 4 CHECK IF LAST FUNCTION COMPLETED
- #
- P<ACB> = ACBADDR;# ACB MAY HAVE MOVED #
- IF DONE
- THEN # FUNCTION COMPLETED #
- BEGIN
- ACBNWLE[0] = ACBNWLE[0] - 1;
- WLADDR = NEXTWLA;
- ACBWLADR[0] = NEXTWLA;
- END
- END
- END
- END
- IF HRL EQ 0 # NAM REACHED MAX FL #
- AND DONE # PREVIOUS NWL ENTRY PROCESSED #
- AND ACBNWLE[0] NQ 0 # MORE NWL ENTRY TO PROCESS #
- THEN
- BEGIN # SUSPEND NWL WORKLIST PROCESSING #
- TEMP = ACBAN[0]; # APPLICATION NUMBER #
- ATHRL0[TEMP] = TRUE; # SET NWL SUSPENDED AT HRL=0 #
- END
- IF ATU[ACBAN[0]]
- THEN # DATA AVAIL WORD IN AIP NEEDS UPDATING #
- BEGIN # SUSPEND WORKLIST PROCESSING COMPLETION #
- DONE = FALSE; # TILL UPDATED #
- IF ATASBI[ACBAN[0]]
- THEN # APP SWAPPED OUT BY OS - SWAPIN ISSUED #
- BEGIN
- ATASBS[ACBAN[0]] = TRUE; # SET APP SWAPPED OUT BY OS FLAG #
- END
- END
- IF DONE # NWL PROCESSING COMPLETE #
- AND ACBNWLE[0] EQ 0
- THEN
- BEGIN
- IF ACBAWLADDR[0] NQ 0
- THEN # RETURN AWL/ CLEAR SHORT TERM CONNECTIONS #
- HPAWL;
- ELSE # CLEAN UP ACB #
- BEGIN
- HRELWWL;
- END
- IF (ACBAN[0] NQ 1) AND (ACBSMQ[0] GR MAXSUPMSG)
- THEN # IF A NON-NVF APP IS NOT PICKING UP QUEUED SUP MSGS #
- BEGIN
- ABTAPPF = X2MANYSM; # SET ABORT APPLICATION FLAG #
- END
- END
- RETURN;
- END
- TERM
cdc/nos2.source/nam5871/hwlp.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator