Ê $VCRPDEF @+@( VCRP - VAX Communication Request Packet@@F The VCRP is the data structure used to pass requests between VCMs. A@E single VCRP may traverse more than two VCMs. Only the common fields@I within the VCRP are defined here. All layer-specific fields are defined@B elsewhere. The common VCRP function codes are also defined here.@@C THE FORMAT OF A VCRP DATA REQUEST PACKET SHOULD NOT CHANGE WITHOUT@- CORRESPONDING CHANGES BEING MAY TO THE DCBE.@-@F Function codes used in the VCRP$L_FUNCTION field. The function codes@/ are separated numerically by layer as follows:@@H 0000-01FF Common function codes from the VCI functional specification@) 0200-02FF DLL Data Link function codes@/ 0300-03FF NRL Network Routing function codes@) 0400-04FF TPL Transport function codes@' 0500-05FF SCL Session function codes@+ 0600-06FF APP Application function codes˜VCRP$K_FC_ENABLE_PORTVCRP$FC_ENABLE_PORT˜VCRP$K_FC_ DISABLE_PORTVCRP$FC_DISABLE_PORT˜ VCRP$K_FC_GETVCRP$FC_GET˜ VCRP$K_FC_SETVCRP$FC_SET˜VCRP$K_FC_TRANSMITVCRP$ FC_TRANSMIT˜VCRP$K_FC_RECEIVEVCRP$ FC_RECEIVE@: Define the fields used within the STACK area of the VCRP.È STACK$k_STACK_HEADERk STACK_HEADER@ Size of Stack HeaderˆPHSTACK$K_STACK_SIZE STACK_SIZE Size of Stack in bytes˜T€ VCRPSTACKDEFSTACK$ VCRPSTACKDEF ØN STACK$L_LASTUSEDSTACK$LLASTUSED! S tack Last Used position pointerØO  STACK$L_BTMSTACK$LBTM Stack BottomØO  STACK$L_TOPSTACK$LTOP Stack TopØ HH STACK$T_STACKSTACK$TSTACK@ Context stack@ Size of entire stack area @ VCRP data structure@@H The common fields within the VCRP are defined now. The VCRP is created@I such that it can be used as an ACB, a DCBE, or a VCRP. So the fields at@D the beginning of the VCRP mimic the fields in the ACB and the DCBE.Ø VCRP$M_PKASTVCRP$MPKASTØ VCRP$M_NODELETEVCRP$MNODELETEØ@ VCRP$M_QUOTAVCRP$MQUOTAØ€ VCRP$M_KASTVCRP$MKASTÈPVCRP$K_ACB_LENGTHK ACB_LENGTH Length of VCRP ACB BlockØVCRP$M_CMN_LOCKEDVCRP$M CMN_LOCKEDØVCRP$M_CMN_RETBUFVCRP$M CMN_RETBUFØVCRP$M_CMN_CACHEVCRP$M CMN_CACHEØVCRP$M_CMN_MGMTVCRP$MCMN_MGMTˆ<VCRP$K_DATA_INFORMATION_OFFSETDATA_INFORMATION_OFF SETˆVCRP$K_DATA_INFORMATION_LENGTHDATA_INFORMATION_LENGTHˆ0VCRP$K_MGMT_INFORMATION_OFFSETMGMT_INFORMATION_OFFSETˆVCRP$K_MGMT_INFORMATION_LENGTHMGMT_INFORMATION_LENGTHˆ\VCRP$K_CREATOR_DATA_OFFSETCREATOR_DATA_OFFSETˆVCRP$K_CREATOR_DATA_LENGTHCREATOR_DATA_LENGTHˆpVCRP$K_INTERNAL_STACK_OFFSETINTERNAL_STACK_OFFSETˆTVCRP$K_INTERNAL_STACK_LENGTHINTERNAL_STACK_LENGTHˆÄVCRP$K_SCRATCH_AREA_OFFSETSCRATCH_AREA_OFFSETˆ@VCRP$K_SCRATCH_AR EA_LENGTHSCRATCH_AREA_LENGTHˆPVCRP$K_FIXED_LENGTH FIXED_LENGTH Length of fixed part of VCRP@= If this VCM contains data, it will start here or after here.ÈP VCRP$C_DATACDATA Offset into start of data˜€VCRPDEFVCRP$VCRPDEF ØN  VCRP$L_FLINKVCRP$LFLINK Forward Queue linkØO  VCRP$L_BLINKVCRP$LBLINK Backward Queue linkØO VCRP$W_SIZEVCRP$WSIZE Size of structureØO  VCRP$B_TYPEVCRP$B TYPE Type of structure - DYN$C_VCRPØ €VCRP$R_RMOD_OVERLAYVCRP$R RMOD_OVERLAY ØO  VCRP$B_RMODVCRP$BRMOD Request Modifier for ACBØ €VCRP$R_RMOD_BITSVCRP$R RMOD_BITS ØW   VCRP$V_MODEVCRP$VMODE Mode for final deliveryØ?  €VCRPDEF$$_FILL_1VCRPDEF$$FILL_1Ø   VCRP$V_PKASTVCRP$VPKAST Piggy back special kernel ASTØ  VCRP$V_NODELETEVCRP$ VNODELETE Don't delete ACB on deliveryØ   VCRP$V_QUOTAVCRP$VQUOTA Account for quotaØ   VCRP$V_KASTVCRP$VKAST Special kernel AST ØO   VCRP$L_PIDVCRP$LPID Process IdentifierØG VCRP$A_ASTADRVCRP$AASTADR Address of user AST routineØO  VCRP$L_ASTPRMVCRP$LASTPRM User AST input parameterØG VCRP$A_KASTVCRP$AKAST Special kernel mode AST routineØ VCRP$R_COMMON_FLAGS_OVERLAYVCRP$RCOMMON_FLAGS_OVERLAY ØOVCRP$W_COMMON_FLAGSVCRP$W COMMON_FLAGS Common flagsØ€VCRP$R_COMMON_FLAGS_BITVCRP$RCOMMON_FLAGS_BIT Ø_ VCRP$V_CMN_LOCKEDVCRP$V CMN_LOCKED Buffer is locked downØ VCRP$V_CMN_RETBUFVCRP$V CMN_RETBUF Return buffer immediatelyØ VCRP$V_CMN_CACHEVCRP$V CMN_CACHE Owner's cache bufferØ VCR P$V_CMN_MGMTVCRP$VCMN_MGMT Mgmt VCRP; not data VCRPØ? € VCRP$V_fill_0VCRP$Vfill_0 ØO VCRP$B_FLAGSVCRP$BFLAGS User controlled VCRP flagsØO VCRP$B_MODEVCRP$BMODE ØG VCRP$A_DEALLOC_RTNVCRP$A DEALLOC_RTN% Address of VCRP deallocation routine@@A This part of the VCRP contains the request specific information.@F VCRPs can contain either a Management request or a Data request. The@E type of V CRP request is determined by the VCRP$W_COMMON_FLAGS field.@A If VCRP$V_CMN_MGMT is set, then the VCRP is using the Management@A request format. IF VCRP$V_CMN_MGMT is NOT set, then the VCRP is@ using the Data request format.@Ø$ VCRP$R_VCRP_REQUESTVCRP$R VCRP_REQUEST Ø$VCRP$R_REQUEST_OVERLAYVCRP$RREQUEST_OVERLAY @@E Data Request Format. The position of these field are to be the same@$ as the DCB fields of the same name.@Ø$V CRP$R_DATA_REQUESTVCRP$R DATA_REQUEST ØG$VCRP$A_DCB_LINKVCRP$ADCB_LINK Address of next DCB in chainØO(  VCRP$L_SVAPTEVCRP$LSVAPTE& Address of System Virtual Address PTEØO, VCRP$L_BUFFER_ADDRESSVCRP$LBUFFER_ADDRESS) VM Address of buffer specified in SVAPTEØO0  VCRP$L_BOFFVCRP$LBOFF" Offset to start of data in bufferØO4  VCRP$L_BCNTVCRP$LBCNT Byte count of data in buffer@@N All fields pre ceeding this comment should be similar in layout,name and size @G to a DCB. A programmer should verify that these fields are similar by@3 adding the appropriate ASSUMES to his or her code.@ØO8 VCRP$L_TOTAL_PDU_SIZEVCRP$LTOTAL_PDU_SIZE Total PDU Size@A This 7 byte portion of the data request area can be used by each@C layer to allow its client to pass more information in the request.Û<VCRP$T_DATA_INFORMATIONVCRP$TDATA_INFORMATION @ @ Management Request Format. @ Ø$VCRP$R_MGMT_REQUESTVCRP$R MGMT_REQUEST ØG$VCRP$A_INPUT_LISTVCRP$A INPUT_LIST Address of Input item listØG(VCRP$A_TEMPLATE_LISTVCRP$A TEMPLATE_LIST Address of Template item listØG,VCRP$A_OUTPUT_LISTVCRP$A OUTPUT_LIST Address of Output item list@B This 19 byte portion of the mgmt request area can be used by each@C layer to allow its client to pass more information in the reques t.Û0VCRP$T_MGMT_INFORMATIONVCRP$TMGMT_INFORMATION ØOCVCRP$B_LES_FLAGSVCRP$B LES_FLAGS LES flags ØOD VCRP$L_FUNCTIONVCRP$LFUNCTION Function for this requestØH VCRP$L_ASSOCIATION_IDVCRP$LASSOCIATION_IDØL VCRP$L_CONNECTION_IDVCRP$L CONNECTION_IDØGPVCRP$R_STATUS_OVERLAYVCRP$RSTATUS_OVERLAY" Status of request upon completion ØPVCRP$R_QUAD_REQUESTVCR P$R QUAD_REQUEST ØP VCRP$Q_REQUEST_STATUSVCRP$QREQUEST_STATUS ØPVCRP$R_LONG_REQUESTVCRP$R LONG_REQUEST ØP VCRP$L_REQUEST_STATUSVCRP$LREQUEST_STATUSØT VCRP$L_REQUEST_STATUS_QUALVCRP$LREQUEST_STATUS_QUAL ØGXVCRP$A_CREATORVCRP$ACREATOR VCIB address of creator of VCRP@D The creator data section is a section that is used privately by the@ creator of the VCRP.Ø\€@ VCRP$r_fi ll_1VCRP$rfill_1 Ø\€VCRP$T_CREATOR_DATA_STRUCTUREVCRP$TCREATOR_DATA_STRUCTUREØ\€€ VCRP$r_fill_2VCRP$rfill_2 Ø\VCRP$R_CREATOR_DATA_OVERLAYVCRP$RCREATOR_DATA_OVERLAY Ø\VCRP$R_QUAD_CREATOR_DATAVCRP$RQUAD_CREATOR_DATA Ø\ VCRP$Q_CREATOR_DATAVCRP$Q CREATOR_DATA Ø\VCRP$R_LONG_CREATOR_DATAVCRP$RLONG_CREATOR_DATA Ø\ VCRP$L_CREATOR_DATA1VCRP$L CREATOR_DA TA1Ø` VCRP$L_CREATOR_DATA2VCRP$L CREATOR_DATA2 ØOd  VCRP$Q_LESVCRP$QLES LES information@G The following fields describe the VCRP context stack, which is used by@D by VCM's to preserve request context. The use of the fields is as @ follows:@@E STACK - contains an address which will point to a stack block. The@A stack block will contain the last used stack pointer@G (LASTUSED), the address of the end of the stack (BTM), the@B address of the top of the stack, and the stack itself@C (STACK). This is layout is used to insure that if the@F context stack is removed from the VCRP and allocated in a@E buffer pointed to by VCRP$A_STACK, that no VCM's will be@ adversely affected.@; LASTUSED - pointer to the last used location in the stack.@* BTM - pointer to the bottom of the stack@' TOP - pointer to the top of the stack@# STACK - Start of context stack.@ @H Saving on and restoring from the context stack can be done by using the@ VCRP_PUSH and VCRP_POP macros.ØGl VCRP$A_STACKVCRP$ASTACK Pointer stack blockØpTTVCRP$T_INTERNAL_STACKVCRP$TINTERNAL_STACK@G VCRP scratch area. This area is not guaranteed to be preserved across@9 VCM's. It is intended to be used as VCM temporary data.ØÄ@@VCRP$T_SCRATCHVCRP$TSCRATCHØM VCRP$T_DAT AVCRP$TDATA( Start of data (if embedded in the VCRP)