|
In the following example, an SRB routine creates a data space,
assigning ownership to the scheduling TCB (that is, the TCB that represents
the program that schedules the SRB). The example includes the deletion
of the data space. To assign the ownership, the routine must know
the TTOKEN of the TCB. For this example, assume that the scheduling
program has passed the address of the scheduling TCB through the user
field in the SRB, SRBPARM. (The system loads the address of this
field into GPR 1 when the system dispatches the SRB.) Before it creates
the data space, the routine uses the scheduling TCB address as input
to the TCBTOKEN macro to obtain the TTOKEN of the TCB.
* EXAMPLE ASSUMES CALLER RUNNING WITH PASN=HASN AND THE
* DATA SPACE WILL BE OWNED BY THE TCB THAT SCHEDULED THE SRB
.
BAKR 14,0 SAVE CALLER'S STATUS ON STACK
LAE 10,0 SET BASE REGISTER AR
BASR 10,0 SET BASE REGISTER GR
USING *,10
SAC 0 ENSURE IN PRIMARY MODE
SYSSTATE ASCENV=P SET THE GLOBAL BIT
.
* GET HOME ADDRESS SPACE LOCAL LOCK FOR THE TCBTOKEN SERVICE
.
SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND,REGS=USE
.
USING PSA,0
L 2,PSAAOLD GET HOME ASCB ADDRESS
.
* GET ADDRESS OF SCHEDULING TCB (CONTENTS OF SRBPARM) FROM REGISTER 1
.
LR 3,1 GET ADDRESS OF SCHEDULING TCB
.
TCBTOKEN TYPE=TOTTOKEN,TTOKEN=TCBTTOKN,ASCB=(2),TCB=(3)
.
* RELEASE LOCAL LOCK
SETLOCK RELEASE,TYPE=LOCAL,REGS=USE
.
DSPSERV CREATE,NAME=DSPCNAME,STOKEN=DSPCSTKN,BLOCKS=DSPBLCKS, X
ORIGIN=DSPCORG,SCOPE=ALL,TTOKEN=TCBTTOKN
.
ALESERV ADD,STOKEN=DSPCSTKN,ALET=DSPCALET,AL=WORKUNIT
.
* ESTABLISH ADDRESSABILITY TO THE DATA SPACE
.
SAC 512 SWITCH INTO AR ADDRESSING MODE
SYSSTATE ASCENV=AR SET GLOBAL BIT FOR AR MODE
.
* USE DATA SPACE
.
* DELETE DATA SPACE
.
ALESERV DELETE,ALET=DSPCALET REMOVE DS FROM AL
DSPSERV DELETE,STOKEN=DSPCSTKN DELETE THE DS
.
PR RETURN TO CALLER
.
DSPCNAME DC CL8'TEMP ' DATA SPACE NAME
DSPCSTKN DS CL8 DATA SPACE STOKEN
DSPCALET DS F DATA SPACE ALET
DSPCORG DS F DATA SPACE ORIGIN RETURNED
DSPCSIZE EQU 10000000 10 MILLION BYTES OF SPACE
DSPBLCKS DC A((DSPCSIZE+4095)/4096) NUMBER OF BLOCKS NEEDED FOR
* A 10 MILLION BYTE DATA SPACE
TCBTTOKN DS CL16 16 BYTE FIELD FOR TCBTOKEN
In the following example, a TCB routine creates a data space and
then schedules an SRB which can immediately address the data space.
* THE SCHEDULING ROUTINE
.
DSPSERV CREATE,NAME=DSPCNAME,STOKEN=DSPCSTKN,BLOCKS=DSPBLCKS, X
ORIGIN=DSPCORG,SCOPE=ALL,TTOKEN=TCBTTOKN
.
ALESERV ADD,STOKEN=DSPCSTKN,ALET=DSPCALET,AL=WORKUNIT
.
* ESTABLISH ADDRESSABILITY TO THE DATA SPACE
.
SAC 512 SWITCH INTO AR ADDRESSING MODE
SYSSTATE ASCENV=AR SET GLOBAL BIT FOR AR MODE
.
* INITIALIZE DATA SPACE
.
* USE DATA SPACE
.
* GET INTO PRIMARY ADDRESSING MODE TO ISSUE GETMAIN AND SCHEDULE
.
SAC 0 SWITCH INTO PRIMARY ADDRESSING
* MODE
SYSSTATE ASCENV=PRIMARY SET GLOBAL BIT FOR PRIMARY MODE
.
* OBTAIN AND INITIALIZE AN SRB AND AN SRB PARAMETER AREA
.
GETMAIN RU,SP=213,LV=PSRBSIZE GET THE STORAGE
.
USING SRB,1
XC SRB,SRB CLEAR THE SRB
MVC SRBPTCB,PSATOLD SET PURGE TCB ADDRESS TO CURRENT
* TCB ADDRESS
L 8,PSAAOLD LOCATE CURRENT ASCB
USING ASCB,8
MVC SRBPASID,ASCBASID SET PURGE ASID TO CURRENT ASID
MVC SRBRMTR,RMTRADDR SET RMTR ADDRESS
OI SRBRMTR,X'80000000' SET ADDRESS TO 31-BIT MODE
LA 7,ENTSRB GET ENTRY POINT ADDRESS
ST 7,SRBEP SET ENTRY POINT ADDRESS
OI SRBEP,X'80000000' SET ADDRESS TO 31-BIT MODE
LA 2,SRBEND PARAMETERS FOLLOW SRB
ST 2,SRBPARM SET PARAMETER ADDRESS
USING PARMS,2
MVC DALET,DSPCALET SAVE DATASPACE ALET IN PARAMETERS
XC ECB1,ECB1 CLEAR THE ECB
DROP 2
.
* SCHEDULE SRB WHICH USES THE DATASPACE
.
SCHEDULE SRB=(1),MODE=FULLXM
.
* FREE ONLY THE SRB STORAGE
.
FREEMAIN RU,LV=SRBSIZE,SP=213
.
* WAIT FOR SRB TO COMPLETE
.
WAIT ECB=ECB1
.
* FREE THE PARAMETER STORAGE
.
FREEMAIN RU,LV=8,SP=213
.
* DELETE DATA SPACE
.
ALESERV DELETE,ALET=DSPCALET REMOVE DS FROM AL
DSPSERV DELETE,STOKEN=DSPCSTKN DELETE THE DS
.
.
DSPCNAME DC CL8'TEMP ' DATA SPACE NAME
DSPCSTKN DS CL8 DATA SPACE STOKEN
DSPCALET DS F DATA SPACE ALET
DSPCORG DS F DATA SPACE ORIGIN RETURNED
DSPCSIZE EQU 10000000 10 MILLION BYTES OF SPACE
DSPBLCKS DC A((DSPCSIZE+4095)/4096) NUMBER OF BLOCKS NEEDED FOR
* A 10 MILLION BYTE DATA SPACE
PSRBSIZE DC A(SRBSIZE+8) SIZE OF AN SRB PLUS AN 8 BYTE
* PARAMETER AREA
RMTRADDR DC A(RMTRXX)
*
PARMS DSECT SRB PARAMETER AREA
DALET DS F DATASPACE ALET FOR SRB
ECB1 DS F ECB FOR SRB TO POST
.
* THE SRB ROUTINE
.
SRBENT DS 0H
.
LR 4,14 SAVE RETURN ADDRESS
.
* ESTABLISH ADDRESSABILITY TO THE DATA SPACE
.
USING PARMS,1
LAM 5,5,DALET USE REGISTER 5 TO ADDRESS DATA
SPACE
.
SAC 512 SWITCH INTO AR ADDRESSING MODE
SYSSTATE ASCENV=AR SET GLOBAL BIT FOR AR MODE
.
* USE DATA SPACE
.
* POST THE WAITING TASK
.
SAC 0 SWITCH INTO PRIMARY ADDRESSING
* MODE
SYSSTATE ASCENV=PRIMARY SET GLOBAL BIT FOR PRIMARY MODE
.
POST ECB1,LINKAGE=SYSTEM
.
* EXIT
.
BR 4
|