.TITLE SYS$JPI ;----------------------------------------------------------------------; ; SUBROUTINE: SYS$JPI ; ;----------------------------------------------------------------------; ; LANGUAGE: VAX-11 MACRO ASSEMBLY LANGUAGE ; ; SYSTEM: VAX-11/780 ; ; MOSTEK CORPORATION ; ; COMPUTER AIDS TO DESIGN DIVISION ; ; 1215 WEST CROSBY ROAD ; ; CARROLLTON, TEXAS 75006 ; ; (214) 323-8813 ; ;----------------------------------------------------------------------; ; PROGRAMMER: KEVIN KLUGHART ; ;----------------------------------------------------------------------; ; DATE: 12-31-80 @ 15:00 CDST ; ;----------------------------------------------------------------------; ; PURPOSE: THIS FUNCTION IS DESIGNED TO PROVIDE EASY ACCESS ; ; TO CURRENT INFORMATION ABOUT JOBS AND PROCESSES ; ; PRESENT IN THE VAX/VMS OPERATING SYSTEM. ACCESS ; ; TO THE JOB/PROCESS INFORMATION IS OBTAINED VIA ; ; A SIMPLIFIED INTERFACE TO THE SYS$GETJPI VMS ; ; SYSTEM SERVICE. ; ;----------------------------------------------------------------------; ; REFERENCES: VAX-11/780 SYSTEM SERVICES REFERENCE MANUAL ; ;----------------------------------------------------------------------; ; VARIABLE MAP ; ;----------------------------------------------------------------------; ; STATUS=SYS$JPI(PID,PRCNAM,ITEM_CODE,BUFFER,BUFFER_LEN) ; ; ; ; ; ; PID: LONGWORD CONTAINING THE PROCESS ; ; IDENTIFICATION OF THE PROCESS FOR WHICH ; ; INFORMATION IS REQUESTED. ; ; ; ; PRCNAM: CHARACTER STRING (1-15 CHARACTERS) CONTAINING ; ; THE PROCESS NAME FOR WHICH INFORMATION IS ; ; REQUESTED. THE PROCESS NAME IS IMPLICITLY ; ; QUALIFIED BY THE GROUP NUMBER OF THE PROCESS ; ; ISSUING THE REQUEST. ; ; ; ; ITEM_CODE: SYMBOLIC NAME DEFINING THE INFORMATION TO BE ; ; RETURNED. THE SYMBOLIC NAMES HAVE THE FORM: ; ; ; ; JPI$_code ; ; ; ; THESE SYMBOLIC NAMES ARE DEFINED IN THE ; ; SYSTEM LIBRARY AND MUST BE REFERENCED AS ; ; 'EXTERNALS' WITHIN THE USER'S PROGRAM. THE ; ; VALUE OF THE CODE CAN THEN BE OBTAINED BY ; ; DETERMINING THE LOCATION OF THE SYMBOL: ; ; ; ; EXTERNAL JPI$_code ; ; INTEGER*4 CODE_VALUE ; ; CODE_VALUE=%LOC(JPI$_code) ; ; ; ; BUFFER: OUTPUT BUFFER TO RECEIVE THE SPECIFIED ; ; INFORMATION. IF THE BUFFER IS TOO SMALL ; ; FOR THE REQUESTED INFORMATION, THE DATA IS ; ; TRUNCATED SO AS TO FIT WITHIN THE BUFFER. ; ; ; ; BUFFER_LEN: OPTIONAL LONGWORD TO RECEIVE THE LENGTH OF THE ; ; BUFFER RETURNED BY THE SYS$GETJPI SYSTEM SERVICE.; ; THIS RETURNED LENGTH IS IN BYTES. ; ;----------------------------------------------------------------------; .PAGE .SBTTL DATA: $GETJPI SYSTEM SERVICE ITEM LIST ;----------------------------------------------------------------------; ; ; ; DATA AREA ; ; ; ;----------------------------------------------------------------------; ; DEFINE THE OFFSETS FOR THE ARGUMENT LIST ; ;----------------------------------------------------------------------; PID = 04 ; PID ADDRESS PRCNAM = 08 ; PROCESS NAME ADDRESS ITEM_CODE = 12 ; JPI ITEM CODE BUFFER = 16 ; OUTPUT BUFFER ADDRESS BUFFER_LEN = 20 ; OUTPUT BUFFER LENGTH (RETURNED) ;----------------------------------------------------------------------; ; DEFINE THE FORMAT FOR THE $GETJPI SYSTEM SERVICE ITEM LIST ; ;----------------------------------------------------------------------; .PSECT DATA,LONG .ALIGN LONG ITMLST: BUFLEN: .BLKW 1 ; BUFFER LENGTH ITMCOD: .BLKW 1 ; ITEM CODE BUFADR: .BLKL 1 ; BUFFER ADDRESS OUTLEN: .BLKL 1 ; RETURN LENGTH ADDRESS .LONG JPI$C_LISTEND ; END OF LIST .PAGE .SBTTL CODE: REQUEST JOB/PROCESS INFORMATION ;----------------------------------------------------------------------; ; ; ; SYS$JPI: REQUEST JOB/PROCESS INFORMATION ; ; ; ;----------------------------------------------------------------------; ; DETERMINE TYPE AND LENGTH OF INFORMATION REQUESTED ; ;----------------------------------------------------------------------; .PSECT CODE .ENTRY SYS$JPI,^M ;----------------------------------------------------------------------; ; ; ; LOAD FUNCTION PARAMETERS ; ; ; ;----------------------------------------------------------------------; MOVW #4,BUFLEN ; LOAD LENGTH OF OUTPUT BUFFER MOVW @ITEM_CODE(AP),ITMCOD ; LOAD INFORMATION ITEM CODE MOVL BUFFER(AP),BUFADR ; LOAD ADDRESS OF OUTPUT BUFFER MOVL BUFFER_LEN(AP),OUTLEN ; LOAD ADDR OF OUTPUT LENGTH ;----------------------------------------------------------------------; ; ; ; CHECK FOR CHARACTER STRING REQUESTS ; ; ; ;----------------------------------------------------------------------; ; CHECK FOR ACCOUNT NAME STRING ; ;----------------------------------------------------------------------; MOVL @ITEM_CODE(AP),R0 ; GET ITEM CODE VALUE CMPL #JPI$_ACCOUNT,R0 ; ACCOUNT NAME STRING? BEQL 10$ ; YES, ASSUME STRING ;----------------------------------------------------------------------; ; CHECK FOR IMAGE NAME STRING ; ;----------------------------------------------------------------------; CMPL #JPI$_IMAGNAME,R0 ; IMAGE NAME STRING? BEQL 10$ ; YES, ASSUME STRING ;----------------------------------------------------------------------; ; CHECK FOR PROCESS NAME STRING ; ;----------------------------------------------------------------------; CMPL #JPI$_PRCNAM,R0 ; PROCESS NAME STRING? BEQL 10$ ; YES, ASSUME STRING ;----------------------------------------------------------------------; ; CHECK FOR TERMINAL NAME STRING ; ;----------------------------------------------------------------------; CMPL #JPI$_TERMINAL,R0 ; TERMINAL NAME STRING? BEQL 10$ ; YES, ASSUME STRING ;----------------------------------------------------------------------; ; CHECK FOR USERNAME STRING ; ;----------------------------------------------------------------------; CMPL #JPI$_USERNAME,R0 ; USERNAME STRING? BNEQ 20$ ; NO, ASSUME NUMERIC ;----------------------------------------------------------------------; ; ; ; REQUESTED INFORMATION IS CHARACTER - SPECIAL PROCESSING ; ; ; ;----------------------------------------------------------------------; 10$: MOVL BUFFER(AP),R0 ; GET ADDRESS OF STRING DESCRIPTOR MOVB (R0),BUFLEN ; GET LENGTH OF OUTPUT BUFFER MOVL 4(R0),BUFADR ; GET ADDRESS OF OUTPUT BUFFER BRB 40$ ; REQUEST JOB INFORMATION ;----------------------------------------------------------------------; ; ; ; REQUESTED INFORMATION IS NUMERIC ; ; ; ;----------------------------------------------------------------------; ; PROCESS SPECIAL CASES OF QUADWORD REQUESTS ; ;----------------------------------------------------------------------; ; AUTHORIZED PRIVILEGE QUADWORD MASK ; ;----------------------------------------------------------------------; 20$: CMPL #JPI$_AUTHPRIV,R0 ; AUTHORIZED PRIVILEGE MASK? BEQL 30$ ; YES, ASSUME QUADWORD ;----------------------------------------------------------------------; ; CURRENT PRIVILEGE QUADWORD MASK ; ;----------------------------------------------------------------------; CMPL #JPI$_CURPRIV,R0 ; CURRENT PRIVILEGE MASK? BEQL 30$ ; YES, ASSUME QUADWORD ;----------------------------------------------------------------------; ; INSTALLED PRIVILEGE QUADWORD MASK ; ;----------------------------------------------------------------------; CMPL #JPI$_IMAGPRIV,R0 ; INSTALLED PRIVILEGE MASK? BEQL 30$ ; YES, ASSUME QUADWORD ;----------------------------------------------------------------------; ; PROCESS CREATION TIME QUADWORD ; ;----------------------------------------------------------------------; CMPL #JPI$_LOGINTIM,R0 ; PROCESS CREATION TIME? BEQL 30$ ; YES, ASSUME QUADWORD ;----------------------------------------------------------------------; ; DEFAULT PRIVILEGE QUADWORD MASK ; ;----------------------------------------------------------------------; CMPL #JPI$_PROCPRIV,R0 ; DEFAULT PRIVILEGE MASK? BNEQ 40$ ; NO, ASSUME LONGWORD ;----------------------------------------------------------------------; ; ; ; SPECIAL PROCESSING FOR QUADWORD NUMERIC VALUES ; ; ; ;----------------------------------------------------------------------; 30$: MOVW #8,BUFLEN ; ADJUST OUTPUT BUFFER LENGTH ;----------------------------------------------------------------------; ; ; ; ; ; ISSUE REQUEST FOR JOB/PROCESS INFORMATION ; ; ; ; ; ;----------------------------------------------------------------------; 40$: $GETJPI_S EFN=#0, - ; EVENT FLAG WAIT PIDADR=@PID(AP), - ; ADDRESS OF PID PRCNAM=@PRCNAM(AP), - ; ADDRESS OF PROCESS NAME STRING ITMLST=ITMLST ; ADDRESS OF ITEM LIST BLBC R0,EXIT $WAITFR_S EFN=#0 ; WAIT FOR COMPLETION ;----------------------------------------------------------------------; ; END OF SUBROUTINE SYS$JPI ; ;----------------------------------------------------------------------; EXIT: RET .END