From: SMTP%"DSJ@WKUVX1.WKU.EDU" 9-APR-1994 15:22:17.61 To: EVERHART CC: Subj: FEBRUARY94.ALPHAB X-FileServer: Digital Systems Journal File Server Date: Sat, 09 Apr 1994 14:22:04 CDT Sender: DSJ-Mgr@WKUVX1.WKU.EDU Errors-To: DSJ-Mgr@WKUVX1.WKU.EDU Warnings-To: <> From: DSJ-Mgr@WKUVX1.WKU.EDU Reply-To: DSJ@WKUVX1.WKU.EDU Subject: FEBRUARY94.ALPHAB To: EVERHART@arisia.gce.com Link file to link and create the UEI $ LINK /ALPHA /USERLIB=PROC - /NATIVE_ONLY /BPAGE=14 /SECTION /REPLACE /VMS_EXEC /NODEMAND_ZERO - /NOTRACEBACK /SHARE=SYS$AST_ROUTINE /MAP /FULL /CROSS /SYSEXE=SELECT - SYS$INPUT/OPTION AST_ROUTINE_UEI_AXP.OBJ PSECT_ATTR=$CODE$,PIC,USR,CON,REL,GBL,NOSHR,EXE,RD,NOWRT,NOVEC PSECT_ATTR=$LINK$,PIC,USR,CON,REL,GBL,NOSHR,NOEXE,RD,WRT,NOVEC PSECT_ATTR=$PLIT$,PIC,USR,CON,REL,GBL,NOSHR,NOEXE,RD,WRT,NOVEC PSECT_ATTR=EXEC$INIT_LINKAGE,PIC,USR,CON,REL,GBL,NOSHR,EXE,RD,WRT,NOVE PSECT_ATTR=EXEC$NONPAGED_LINKAGE,PIC,USR,CON,REL,GBL,NOSHR,NOEXE,RD,WR PSECT_ATTR=_AMAC$CODE,PIC,USR,CON,REL,GBL,NOSHR,EXE,RD,NOWRT,NOVEC PSECT_ATTR=_AMAC$LINKAGE,PIC,USR,CON,REL,GBL,NOSHR,NOEXE,RD,WRT,NOVEC PSECT_ATTR=EXEC$HI_USE_PAGEABLE_LINKAGE,PIC,USR,CON,REL,GBL,NOSHR,NOEX PSECT_ATTR=EXEC$PAGED_LINKAGE,PIC,USR,CON,REL,GBL,NOSHR,NOEXE,RD,WRT,N ! SYS$LIBRARY:STARLET/INCLUDE:(SYS$DOINIT) SYS$LIBRARY:STARLET/lib COLLECT=NONPAGED_READONLY_PSECTS/ATTRIBUTES=RESIDENT,- EXEC$NONPAGED_CODE,- _AMAC$CODE,- EXEC$HI_USE_PAGEABLE_CODE,- $CODE$ COLLECT=NONPAGED_READWRITE_PSECTS/ATTRIBUTES=RESIDENT,- _AMAC$LINKAGE,- EXEC$HI_USE_PAGEABLE_DATA,- EXEC$HI_USE_PAGEABLE_LINKAGE,- EXEC$NONPAGED_DATA,- EXEC$NONPAGED_LINKAGE,- $PLIT$,- $LINK$ COLLECT=PAGED_READONLY_PSECTS,- EXEC$PAGED_CODE COLLECT=PAGED_READWRITE_PSECTS,- EXEC$PAGED_DATA,- EXEC$PAGED_LINKAGE COLLECT=INITIALIZATION_PSECTS/ATTRIBUTES=INITIALIZATION_CODE,- EXEC$INIT_LINKAGE,- EXEC$INIT_CODE,- EXEC$INIT_000,- EXEC$INIT_001,- EXEC$INIT_002,- EXEC$INIT_SSTBL_000,- EXEC$INIT_SSTBL_001,- EXEC$INIT_SSTBL_002 SYS$LIBRARY:VMS$VOLATILE_PRIVATE_INTERFACES/lib Changes for the AST routine declare_psect EXEC$NONPAGED_CODE ; the code section .ENTRY AST_routine,^M ... declare_psect EXEC$NONPAGED_DATA ; ; Since the data is now part of a User Executive Image, ; the data is protected in memory as kernel write only. ; Changes to the driver routine ; ; if you wish to debug (ie set value for currentsize and aftersize ; in pool), then change psl$c_super to psl$c_kernel. ; movb #psl$c_super,acb$b_rmod(r2) ;queue a super Link file needed to link and create the UEI $ LINK /NOSYSSHR/NOTRACEBACK - /SHARE=SYS$AST_ROUTINE - /MAP=SYS$AST_ROUTINE /FULL /CROSS - /SYMBOL=SYS$AST_ROUTINE - SYS$INPUT/OPTION AST_ROUTINE_UEI, - SYS$LIBRARY:STARLET/INCLUDE:(SYS$DOINIT),- SYS$SYSTEM:SYS.STB/SELECTIVE VECTOR_TABLE=SYS$SYSTEM:SYS.STB COLLECT=NONPAGED_READONLY_PSECTS/ATTRIBUTES=RESIDENT,- EXEC$NONPAGED_CODE COLLECT=NONPAGED_READWRITE_PSECTS/ATTRIBUTES=RESIDENT,- EXEC$NONPAGED_DATA COLLECT=PAGED_READONLY_PSECTS,- EXEC$PAGED_CODE COLLECT=PAGED_READWRITE_PSECTS,- EXEC$PAGED_DATA COLLECT=INITIALIZATION_PSECTS/ATTRIBUTES=INITIALIZATION_CODE,- EXEC$INIT_CODE,- EXEC$INIT_000,- EXEC$INIT_001,- EXEC$INIT_002,- EXEC$INIT_PFNTBL_000,- EXEC$INIT_PFNTBL_001,- EXEC$INIT_PFNTBL_002,- EXEC$INIT_SSTBL_000,- EXEC$INIT_SSTBL_001,- EXEC$INIT_SSTBL_002 Command needed to add or remove the UEI $! $! Move your image in the system exec area. $! $ copy SYS$AST_ROUTINE.exe sys$COMMON:[SYS$LDR]/LOG $ sysman :== mcr sysman $ set noon $! $! remove the older version. $! Ignore any errors about old versions not existing $! $ sysman sys_loadable remove _local_ SYS$AST_ROUTINE $ set on $ sysman sys_loadable add _local_ SYS$AST_ROUTINE - /load_step = SYSINIT - /severity = Warning - /message = "Failure to load image specific file - AST_ROUTINE service" $! $! Update system database for loadable images. $! $ @sys$update:vms$system_images $set noon $exit $quit: $set noon $write sys$output "SYS$AST_ROUTINE Failed to Load!!" Initialization routine added to executive image code declare_psect EXEC$NONPAGED_CODE ; the code section AST_routine: .CALL_ENTRY PRESERVE=<>,MAX_ARGS=1,HOME_ARGS=FALSE,- OUTPUT= ... DECLARE_PSECT EXEC$INIT_CODE INITIALIZATION_ROUTINE TEST_INIT TEST_INIT: .CALL_ENTRY PRESERVE=<>,MAX_ARGS=0,HOME_ARGS=FALSE,- OUTPUT= moval AST_routine,g^sgn$gl_userd2 movl #SS$_NORMAL, R0 To convert the .entry macros to the AXP .call_entry macros .PSECT $CODE,pic, shr, nowrt, long Driver_routine:: .CALL_ENTRY PRESERVE=,MAX_ARGS=2, - HOME_ARGS=FALSE,OUTPUT= To test the AST code /* ** Quick and dirty program to test AST_code. */ main() { int AST_routine( int ); int Load_routine( void ); int Driver_routine( int, int ); int j, ipid; j = AST_routine ( 1 ); sys$cmkrnl( Load_routine, 0); printf( " enter IPID( in hex ) " ); scanf ("%x", &ipid ); while (ipid != 0) { j = Driver_routine( 1, ipid ); printf( " enter IPID( in hex ) " ); scanf ("%x", &ipid ); } } To test the VAX/AXP UEI code /* ** Quick and dirty program to test AST_code. */ main() { int Driver_routine( int, int ); int j, ipid; printf( " enter IPID( in hex ) " ); scanf ("%x", &ipid ); while (ipid != 0) { j = Driver_routine( 1, ipid ); printf( " enter IPID( in hex ) " ); scanf ("%x", &ipid ); } }