TEST CSECT
TEST AMODE 64
TEST RMODE 31
BSM R14,0 Save caller's AMODE indication
BAKR R14,0 Save regs on linkage stack
SAM64 Into AMODE 64
SYSSTATE AMODE64=YES
*
* Establish addressability to static data. We use relative
* branching to avoid needing addressability to the code
*
CNOP 0,4
BRAS R12,PAST1
DC A(STATIC_DATA)
PAST1 DS 0H
LLGT R12,0(R12,0)
USING STATIC_DATA,R12
*
* Get space for the cell pool in primary, above 2G
*
IARV64 REQUEST=GETSTOR,SEGMENTS=STORSEGS,ORIGIN=STORORIG
*
* Since the space is in primary, an ALET of 0 is needed
*
XC ANCHALET(4),ANCHALET
*
* Set address and size of the anchor
*
LG R4,STORORIG
STG R4,ANCHADDR
*
* Call the build service
*
CALL CSRC4BLD,(ANCHALET,ANCHADDR,USERNAME,CELLSIZE,RTNCODE)
*
* Set address and size of the extent and connect extent to cells
*
LG R4,STORORIG
AGF R4,ANCHSIZE
STG R4,XTNTADDR
AG R4,XTNTSIZE Sets size of extent
STG R4,CELLSTAD
AG R4,CELLSTLN Sets size of cell storage
CALL CSRC4EXP,(ANCHALET,ANCHADDR,XTNTADDR,XTNTSIZE, X
CELLSTAD,CELLSTLN,EXTENT,RTNCODE)
*
* Get a cell. CELLADDR receives the address of the cell.
*
CALL CSRC4GET,(ANCHALET,ANCHADDR,CELLADDR,RTNCODE)
*
* The program uses the cells.
*
* Query the pool, the extent, and the cell. *
*
CALL CSRC4QPL,(ANCHALET,ANCHADDR,QNAME,QCELLSZ,QTOT_CELLS, X
QAVAIL_CELLS,QNUMEXT,QRTNCODE)
CALL CSRC4QEX,(ANCHALET,ANCHADDR,EXTENT,QEXSTAT,QXTNT_ADDR, X
QXTNT_LEN,QCELL_ADDR,QCELL_LEN,QTOT_CELLS, X
QAVAIL_CELLS,QRTNCODE)
CALL CSRC4QCL,(ANCHALET,ANCHADDR,CELLADDR,QCLAVL,QCLEXT, X
QRTNCODE)
*
* Free the cell.
*
CALL CSRC4FRE,(ANCHALET,ANCHADDR,CELLADDR,RTNCODE)
*
* Deactivate the extent.
*
CALL CSRC4DAC,(ANCHALET,ANCHADDR,EXTENT,RTNCODE)
*
* Disconnect the extent.
*
CALL CSRC4DIS,(ANCHALET,ANCHADDR,EXTENT,QCELL_ADDR,QCELL_LEN, X
QRTNCODE)
*
* Free the storage
*
IARV64 REQUEST=DETACH,MEMOBJSTART=STORORIG
*
* Return to caller.
*
PR
*****************************************************************
* Constants and data areas used by cell pool services *
*****************************************************************
*
STATIC_DATA DS 0D
*
CELLS_PER_EXTENT EQU 512
EXTENTS_PER_POOL EQU 10
CELLSIZE_EQU EQU 256
CELLS_PER_POOL EQU CELLS_PER_EXTENT*EXTENTS_PER_POOL
XTNTSIZE_EQU EQU CSRC4_EXTENT_BASE+(((CELLS_PER_EXTENT+63)/64)*8)
STORSIZE_EQU EQU CELLS_PER_EXTENT*CELLSIZE_EQU
CELLS_IN_POOL DC AD(CELLS_PER_POOL)
ANCHADDR DS AD
CELLSIZE DC AD(CELLSIZE_EQU)
USERNAME DC CL(CSRC4_POOL_NAME_LEN)'MYCELLPL'
ANCHALET DS F
ANCHSIZE DC A(CSRC4_ANCHOR_LENGTH)
XTNTSIZE DC AD(XTNTSIZE_EQU)
XTNTADDR DS AD
CELLSTAD DS AD
CELLSTLN DC AD(STORSIZE_EQU)
CELLADDR DS AD
STATUS DS D
EXTENT DS F
RTNCODE DS F
*
*****************************************************************
* Constant data and areas
*****************************************************************
*
DS 0D
STORORIG DS AD Storage Origin
STORSIZE EQU STORSIZE_EQU*EXTENTS_PER_POOL
STORSEGS DC AD((STORSIZE+1024*1024-1)/(1024*1024)) 1M Segments needed
*
*****************************************************************
* VALUES RETURNED BY QUERIES
*****************************************************************
*
QNAME DS CL(CSRC4_POOL_NAME_LEN)
QCELLSZ DS D
QNUMEXT DS D
QEXSTAT DS D
QXTNT_ADDR DS D
QXTNT_LEN DS D
QCELL_ADDR DS D
QCELL_LEN DS D
QTOT_CELLS DS D
QAVAIL_CELLS DS D
QCLADDR DS D
QCLAVL DS D
QCLEXT DS F
QRTNCODE DS F
*****************************************************************
* Registers
*****************************************************************
R4 EQU 4
R12 EQU 12
R14 EQU 14
*****************************************************************
* Declares for CSRC4xxx services
*****************************************************************
CSRC4ASM Assembler declares for AMODE 64
END TEST