|
The numbers of file blocks read and written, along with
the number of directory blocks processed, are returned in the OssReadIBC,
OssWriteIBC and OssDirIBC, fields of the OSS. On return from the VFS
Callable Service API, the block counts present initially in the OSS
have been incremented to reflect the counts for this call to the service.
Thus, to obtain the numbers of blocks processed on a particular
call to a VFS Callable Service API, set the block count fields to
zero before calling the service. To accumulate the block counts across
a series of calls, pass the same OSS to each, without modifying the
count fields
The following OSS fields must be provided by the
caller: - OssId
- Contains 'OSS '
- OssLen
- Specifies the length of the OSS structure, OSS#LENGTH.
- OSSReadIBC
- Contains number of blocks read.
- OSSWriteIBC
- Contains number of blocks written.
- OSSDirIBC
- Contains number of directory blocks processed.
* %GOTO OSSPRO ; /* Bilingual header
MACRO
BPXYOSS &DSECT=YES,&LIST=YES
GBLB &OSS411
AIF (&OSS411 EQ 1).E411
&OSS411 SETB 1
AIF ('&LIST' EQ 'YES').A411
PUSH PRINT BPXYOSS: Operating System Specific Information
PRINT OFF
AGO .A411
* */
*%OSSPRO : ;
*/****START OF SPECIFICATIONS******************************************
*
* $MAC (BPXYOSS) COMP(SCPX1) PROD(BPX):
*
*01* MACRO NAME: BPXYOSS
*
*01* DSECT NAME: OSS
*
*01* DESCRIPTIVE NAME: Operating System Specific Information
*
*02* ACRONYM: OSS
**/
*/*01* PROPRIETARY STATEMENT= */
*/***PROPRIETARY_STATEMENT********************************************/
*/* */
*/* */
*/* LICENSED MATERIALS - PROPERTY OF IBM */
*/* THIS MACRO IS "RESTRICTED MATERIALS OF IBM" */
*/* 5650-ZOS (C) COPYRIGHT IBM CORP. 1993, 2005 */
*/* */
*/* STATUS= HBB7720 */
*/* */
*/***END_OF_PROPRIETARY_STATEMENT*************************************/
*/*
*
*01* EXTERNAL CLASSIFICATION: GUPI
*01* END OF EXTERNAL CLASSIFICATION:
*
*01* FUNCTION:
*
* To pass information specific to the z/OS UNIX implemenation
* of the VFS/VNODE interface.
*
*01* METHOD OF ACCESS:
*
*02* PL/X:
*
* %INCLUDE SYSLIB(BPXYOSS)
* By default, the OSS is based on OssPtr. If
* other basing is desired, use %OSSBASE='BASED(XXXXXX)'.
* If %OSSBASE='BASED(OssPtr)' is coded, a Declare for
* OssPtr is also generated.
*
* Typical Syscall usage: %OSSBASE = 'Based(Addr(InputOss))'
*
*02* ASM:
* With DSECT=NO, storage is allocated in line
* and addressability is provided thru that DSECT or CSECT.
* With DSECT=YES, a DSECT is produced and "USING OSS,reg"
* is required for addressability. Here "reg" contains the
* address of OSS#LENGTH bytes of storage.
* The default is DSECT=YES.
*
*01* SIZE: OSS#LENGTH
*
*01* POINTED TO BY: OssPtr
*
*01* CREATED BY: Storage obtained by caller of system call
*
*01* DELETED BY: Caller of system call
*
*01* STORAGE ATTRIBUTES:
*02* SUBPOOL/DATASPACE: N/A
*02* KEY: N/A
*02* RESIDENCY: N/A
*
*01* FREQUENCY: 1 per syscall of a vnode op
*
*01* SERIALIZATION: N/A
*
*01* DEPENDENCIES: None
*
*01* NOTES:
* BPXYVFSI is a C program interface for the BPX1V (v_)
* services. The OSS structure in BPXYVFSI matches
* the BPXYOSS structure.
*
*01* COMPONENT: z/OS UNIX (SCPX1)
*
*01* DISTRIBUTION LIBRARY: AMACLIB
*
*01* EYE-CATCHER: OSS
*02* OFFSET: 0
*02* LENGTH: 4
*
****END OF SPECIFICATIONS*********************************************/
* %GOTO OSSPLS ; /* Bilingual header
.A411 ANOP ,
** BPXYOSS: OSS - Operating System Specific Information
** Used By: v_ callable services
AIF ('&DSECT' EQ 'NO').B411
OSS DSECT ,
AGO .C411
.B411 ANOP ,
DS 0D Clear storage
OSS DC XL(OSS#LENGTH)'00'
ORG OSS
.C411 ANOP ,
OSSBEGIN DS 0D
*
OSSID DC C'OSS ' Eye catcher
OSSLEN DC AL4(OSS#LENGTH) Length of the structure
OSSDIRIBC DS F Directory I/O block cnt
OSSREADIBC DS F Read I/O block cnt
OSSWRITEIBC DS F Write I/O block cnt
OSSOPENFLAGS DS F Reserved for internal
* use - open flags
ORG OSSOPENFLAGS @P2C@P1A
OSSFLAGS1 DS B @P1A
OSSXMTPT EQU X'80' Cross Mount Points @P1A
DS CL3 @P1A
OSSOPENTOKEN DS CL8 V_Open Token @D4A
*
* Constants
*
OSS#LENGTH EQU *-OSSBEGIN Length of OSS
** BPXYOSS End
SPACE 3
AIF ('&LIST' EQ 'YES').E411 6@D1A
POP PRINT
.E411 ANOP ,
MEND , Terminating PL/X comment */
*
*%OSSPLS : ;
*
*%Dcl OSSBASE2 Char Ext; /* Settable by other macros @D2A*/
*
*%IF OSSBASE = '' %THEN
* %IF OSSBASE2 = '' %THEN /*@D2A*/
* %DO;
* %OSSBASE = 'BASED(OssPtr)';
* %END;
* %ELSE %OSSBASE = OSSBASE2; /*@D2A*/
*
*%IF Translate(OSSBASE) = 'BASED(OSSPTR)' %THEN
* %DO;
* DCL OssPtr Ptr(31); /* Pointer to the OSS */
* %END;
*
*
*DCL
* 1 OSS OSSBASE , /* Operating System Specific Info */
*
* 3 OssId Char(4), /* Eye catcher - 'OSS ' */
* 3 OssLen Fixed(31), /* Length of structure */
*
* 3 OssAcctIBC, /* I/O Block Counts */
* 7 OssDirIBC Fixed(32), /* Directory I/O block cnt @01C*/
* 7 OssReadIBC Fixed(32), /* Read I/O block cnt @01C*/
* 7 OssWriteIBC Fixed(32), /* Write I/O block cnt @01C*/
*
* 3 OssOpenFlags Bit(32), /* Reserved for internal use -
* open flags for internal v_rdwr
* callers @P2M@D3A*/
* 5 OssXmtpt Bit(1), /* Cross Mount Points @P1A*/
* 3 OssOpenToken Char(8), /* V_Open Token @D4A@P2D*/
* 5 OssOpenTokSpec Char(4); /* Special Token Values @D4A@P2D*/
*
*
*DCL
* Oss#ID Char(4) Constant('OSS '), /* Eye catcher */
* Oss#Len Fixed(31) Constant(Length(Oss));/* Length of Oss */
*
*Dcl /* Special Values for OssOpenTokSpec @D4A*/
* (Oss#NoTokAdvChk Constant(0), /* Advisory Check, vs. V4 @D4A*/
* Oss#NoTokMandChk Constant(2), /* Mandatory Check, vs. all @D4A*/
* Oss#NoTokOverride Constant(1) ) /* No Checks, for Reads only @D4A*/
* Fixed(32); /*@D4A*/
*
|