cdc:nos2.source:nam5871:nvfcups
Table of Contents
NVFCUPS
Table Of Contents
- [00008] PROC NVFCUPS
- [00009] NVFCUPS - UPDATE PID STATUS
- [00013] UPDATE PID STATUS.
- [00036] PROC NVFUMQE
- [00057] PIDMSG - PID NHP LOG FILE MESSAGE ARRAY.
- [00070] LLEPID - LOGICAL LINK ENTRY FROM PATHPID TABLE.
Source Code
- NVFCUPS.txt
- *DECK NVFCUPS
- USETEXT TEXTNVF
- USETEXT TXSMNVF
- USETEXT TEXTSS
- USETEXT TXTANVF
- USETEXT TXTAPSS
- USETEXT TXTSUSS
- PROC NVFCUPS;
- # TITLE - NVFCUPS - UPDATE PID STATUS #
- BEGIN # NVFCUPS #
- #
- ** NVFCUPS - UPDATE PID STATUS.
- *
- * C. BRION 83/04/21,83/10/19.
- *
- * THIS PROCEDURE IS RESPONSIBLE FOR PROCESSING THE LOGICAL LINK
- * STATUS SM FROM NIP. (CR/SLL/U SM ).
- *
- * PROC NVFCUPS
- *
- * ENTRY
- * CR/SLL/U SM IN MSGBUF.
- *
- * EXIT
- * 1) SETPIDA FUNCTION REQUEST MAY BE SENT TO THE CPMRQ.
- * 2) A HOP/LG SM MAY BE ISSUED TO REPORT PID STATUS CHANGE IN NHP LOGFILE.
- * 3) THE LLPID TABLE IS UPDATED.
- #
- #
- **** PROC NVFCUPS XREF LIST.
- #
- XREF
- BEGIN
- PROC NVFUMQE; # MAKE QUEUE ENTRY #
- END
- #
- ****
- #
- #
- * DEF, ITEM AND ARRAY DEFINITIONS.
- #
- DEF ACTIVE$ # 1 #; # ACTIVE LLINK STATUS #
- DEF INACTIVE$ # 0 #; # INACTIVE LLINK STATUS #
- ITEM NUMLL I; # NUMBER OF LLINKS FOR A PID #
- ITEM PORD I; # LOCAL PID ENTRY RWD #
- ITEM SAVACLL I; # SAVED NUMBER ACTIVE LLINKS #
- ITEM LLORD I; # LOCAL PATH RWD #
- #
- ** PIDMSG - PID NHP LOG FILE MESSAGE ARRAY.
- #
- ARRAY PIDMSG [00:00] S(5);
- BEGIN
- ITEM PUM$PFCSFC U(00,00,16) = [HOPLG];
- ITEM PUM$MSG1 C(01,00,05) = ["PID: "];
- ITEM PUM$PID C(01,30,03);
- ITEM PUM$MSG2 C(01,48,02) = [", "];
- ITEM PUM$MSG3 C(02,00,10) = ["NHP PATH -"];
- ITEM PUM$MSG4 C(03,00,11) = ["UNAVAILABLE"];
- ITEM PUM$ZBYT U(04,06,54) = [0];
- END
- #
- ** LLEPID - LOGICAL LINK ENTRY FROM PATHPID TABLE.
- #
- BASED ARRAY LLEPID [00:00] S(1);
- BEGIN
- ITEM LLE$WORD U(00,00,60); # WORD REFERENCE #
- ITEM LLE$DN U(00,00,08); # DESTINATION NODE OF LLINK #
- ITEM LLE$SN U(00,08,08); # SOURCE NODE OF LLINK #
- ITEM LLE$LLSTAT B(00,59,01); # LLINK STATUS #
- END
- CONTROL EJECT;
- #
- * SEARCH THE LLPID TABLE FOR A MATCH ON LOGICAL LINK.
- * NOTE THAT TABLE ONLY SEARCHED IF LLPID TABLE EXISTS.
- #
- IF LLPIDL NQ 0
- THEN
- BEGIN
- FOR PORD = 0 STEP ((LLP$LLCNT[PORD] * PIDLLSIZ$) + 1) WHILE
- PORD LS LLPIDL
- DO
- BEGIN
- NUMLL = LLP$LLCNT[PORD] * PIDLLSIZ$;
- SAVACLL = LLP$ACLL[PORD];
- FOR LLORD = 1 STEP PIDLLSIZ$ UNTIL NUMLL
- DO
- BEGIN
- P<LLEPID> = P<LLPID> + PORD + LLORD;
- #
- * CHECK IF LLINK ENTRY ACTIVE AND INCOMING STATUS INACTIVE.
- * IF SO, MARK LLINK ENTRY INACTIVE AND DECREMENT NUMBER OF
- * LLINKS ACTIVE FOR THIS PID ENTRY.
- #
- IF CRSLDN[0] EQ LLE$DN[0] AND
- CRSLSN[0] EQ LLE$SN[0]
- THEN
- BEGIN
- IF LLE$LLSTAT[0] AND CRSLST[0] EQ INACTIVE$
- THEN
- BEGIN
- LLE$LLSTAT[0] = FALSE;
- LLP$ACLL[PORD] = LLP$ACLL[PORD] - 1;
- END
- #
- * OTHERWISE CHECK IF LLINK ENTRY IS INACTIVE AND INCOMING
- * STATUS IS ACTIVE.
- * IF SO, SET LLINK ENTRY ACTIVE AND INCREMENT NUMBER OF
- * AVAILABLE LLINKS FOR THIS PID.
- #
- ELSE IF NOT LLE$LLSTAT[0] AND
- CRSLST[0] EQ ACTIVE$
- THEN
- BEGIN
- LLE$LLSTAT[0] = TRUE;
- LLP$ACLL[PORD] = LLP$ACLL[PORD] + 1;
- END
- END
- END
- #
- * ISSUE SETPIDA FUNCTION REQUEST TO THE CPMRQ.
- * THIS DONE BY SETTING THE PARAMETER BLOCK AND MAKING
- * QUEUE ENTRY FOR THE CPMRQ.
- * ALSO SET UP HOP/LG MESSAGE.
- #
- P<LPIDBUF> = LOC(MSGBUF[1]);
- LPI$WORD0[0] = 0;
- LPI$WORD1[0] = 0;
- LPI$FC[0] = SPIDAFC$;
- LPI$SIZE[0] = SPIDBUFS$;
- LPI$PID[0] = LLP$PNAME[PORD];
- PUM$PID[0] = LLP$PNAME[PORD];
- #
- * IF (NO LLINKS ACTIVE FOR PID PRIOR TO CURRENT STATUS SM AND
- * /AT LEAST 1 LLINK NOW ACTIVE) OR
- * (AT LEAST 1 LLINK ACTIVE PRIOR TO CURRENT STATUS SM AND
- * NO LLINKS NOW ACTIVE)
- *
- * ISSUE APPROPRIATE SETPIDA FUNCTION REQUEST TO CPMRQ
- #
- IF ((SAVACLL EQ 0 AND LLP$ACLL[PORD] NQ 0) OR
- (SAVACLL NQ 0 AND LLP$ACLL[PORD] EQ 0))
- THEN
- BEGIN
- IF SAVACLL EQ 0 AND LLP$ACLL[PORD] NQ 0
- THEN
- BEGIN
- #
- * AT LEAST 1 LLINK NOW ACTIVE MAKING PID AVAILABLE.
- * SET AVAILABLE STATUS IN FUNCTION REQUEST AND SET HOP/LG MSG.
- #
- LPI$NWST[0] = PIDOPST$;
- PUM$MSG4[0] = "AVAILABLE";
- END
- ELSE
- BEGIN
- #
- * THE LAST ACTIVE LLINK FOR A PID HAS GONE INACTIVE MAKING
- * THE PID UNAVAILABLE.
- * SET UNAVAIALABLE STATUS IN FUNCTION REQUEST AND SET HOP/LG MSG.
- #
- LPI$NWST[0] = PIDINOP$;
- PUM$MSG4[0] = "UNAVAILABLE";
- END
- #
- * GENERATE SETPIDA FUNCTION REQUEST Q ENTRY TO CPMRQ.
- * SEND HOP/LG SM MESSAGE TO OTQ.
- #
- NVFUMQE(P<CPMRQ>,LPIDBUF[0],APPTTX$,0,LPIDLEN$);
- NVFUMQE(P<OTQ>,PIDMSG[0],APPCMD,0,5);
- END
- END
- END
- END # NVFCUPS #
- TERM
cdc/nos2.source/nam5871/nvfcups.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator