#ifndef __BPXYPFSI BPX00010
#define __BPXYPFSI BPX00020
/*****START OF SPECIFICATIONS**************************************** BPX00030
* BPX00040
* $MAC (BPXYPFSI) COMP(SCPX4) PROD(FOM): BPX00050
* BPX00060
*01* MACRO NAME: BPXYPFSI BPX00070
* BPX00080
*01* DSECT NAME: N/A BPX00090
* BPX00100
*01* DESCRIPTIVE NAME: Physical File System Interface Definition for C BPX00110
* BPX00120
*02* ACRONYM: N/A BPX00130
* */ BPX00140
/*01* PROPRIETARY STATEMENT= */ BPX00150
/****PROPRIETARY_STATEMENT********************************************/ BPX00160
/* */ BPX00170
/* */ BPX00180
/* LICENSED MATERIALS - PROPERTY OF IBM */ BPX00190
/* 5650-ZOS COPYRIGHT IBM CORP. 1993, 2013 */ BPX00200
/* */ BPX00210
/* STATUS= HBB7790 */ BPX00220
/* */ BPX00230
/****END_OF_PROPRIETARY_STATEMENT*************************************/ BPX00240
/* BPX00250
*01* EXTERNAL CLASSIFICATION: GUPI BPX00260
*01* END OF EXTERNAL CLASSIFICATION: BPX00270
* BPX00280
*01* FUNCTION: Provide a C language header file for the PFS Interface. BPX00290
* BPX00300
* Defines C structures for the control blocks and tokens that BPX00310
* are used by the vfs_ and vn_ operations. BPX00320
* BPX00330
* Defines C prototypes for the PFS entry points BPX00340
* of the vfs_ and vn_ operations. BPX00350
* BPX00360
* Defines C structures and prototypes for the osi_ services BPX00370
* and the macros used to implement the calling linkages. BPX00380
* BPX00390
* Defines C structures and prototypes for the File Exporter Exit. BPX00400
* BPX00410
* The definition of the following can be suppressed, see below. BPX00420
* Defines C functions for the following Kernel Extension services BPX00430
* bcopy() - copy data from source to destination BPX00440
* bzero() - zero out bytes starting at a destination BPX00450
* BPX00460
* Defines C functions for the following internal services BPX00470
* _memmove() - copy characters from one data object to another BPX00480
* with checks for data overlap. This is invoked BPX00490
* from the bcopy() function BPX00500
* BPX00510
* The following structures are defined here: BPX00520
* BPX00530
* O_VNTOK - Output Vnode Token BPX00540
* WPTOK - Wait/Post Token for osi_post BPX00550
* SELTOK - Vn_select Token for osi_selpost BPX00560
* TOKSTR - First Parameter of a Vnode or VFS Operation BPX00570
* OSI - Operating System Information - Second Parameter BPX00580
* CRED - Security Auditing Information - Third Parameter BPX00590
* PFSPARM - Text from PARM operand of FILESYSTYPE and MOUNT. BPX00600
* MTAB - vfs_mount parameter BPX00610
* NETW - vfs_network parameter BPX00620
* PFSI - PFS Initialization Block and related structures, BPX00630
* including the vnode and vfs operations tables. BPX00640
* PFSNAME - Name of the PFS from TYPE operand of FILESYSTYPE. BPX00650
* OSIT - Operating System Interface Table with related BPX00660
* structures, macros, and OSI function prototypes. BPX00670
* GXPL - File Exporter Exit parameter structure BPX00680
* OTHDPRM - osi_thread parameter BPX00690
* OTHDCRCV- osi_thread called routine recovery block BPX00700
* OGCDPRM - osi_getcred input structure BPX00710
* BSIC - vfs_batsel input array BPX00720
* vncanflags - vn_cancel input flags BPX00730
* BPX00740
* BPX00750
* The following structures are automatically included from BPXYVFSI: BPX00760
* BPX00770
* GTOK - General Eight Byte Token BPX00780
* FID - File Identifier BPX00790
* CBHDR - General Control Block Header BPX00800
* ATTR - File Attribute Structure BPX00810
* UIO - User I/O Structure BPX00820
* DIRENT - Directory Entries for v_readdir/vn_readdir. BPX00830
* FSATTR - File System Attributes of v_fstatfs/vfs_statfs BPX00840
* BPX00850
* The following parts of the interface are defined in other BPX00860
* headers as specified: BPX00870
* BPX00880
* open_flags for vn_open, vn_rdwr, etc. are in fcntl.h, BPX00890
* except for O_EXEC which is defined here. BPX00900
* access_intent for vn_access is in unistd.h BPX00910
* unmount_options for vfs_umount are in stat.h BPX00920
* pathconf_option for vn_pathconf is in unistd.h BPX00930
* Except for PC_CASE and its return values @DHA BPX00940
* which are defined in this header. @DHA BPX00950
* sigval for osi_signal is in signal.h BPX00960
* BPX00970
* socket structures are in the various standard headers as used BPX00980
* by the sockets applications. BPX00990
* BPX01000
* ioctl commands for vn_ioctl are usually in ioctl.h. BPX01010
* Those used with Common Inet for initialization BPX01020
* and route changes are also included here. BPX01030
* BPX01040
* The following symbols provide for replaceable features: BPX01050
* BPX01060
* _SOCKADDR - defines the socket address structure used in BPX01070
* the prototypes of the socket oriented vnode ops. BPX01080
* BPX01090
* Default: #define _SOCKADDR char BPX01100
* Example: #define _SOCKADDR struct mysocketaddr BPX01110
* BPX01120
* BPX01130
* _OSIT_PTR - defines the name of the variable or structure member BPX01140
* that holds the OSIT table address that was saved BPX01150
* during PFS initialization. This is used to call BPX01160
* the OSI services. BPX01170
* BPX01180
* Default: #define _OSIT_PTR osit_ptr BPX01190
* BPX01200
* Examples: There are two ways this can be used: BPX01210
* BPX01220
* (1) Declare and set osit_ptr to the saved value: BPX01230
* BPX01240
* OSIT *osit_ptr; BPX01250
* osit_ptr = saved_address; BPX01260
* or BPX01270
* (2) Change the #define for _OSIT_PTR: BPX01280
* BPX01290
* #undef _OSIT_PTR BPX01300
* #define _OSIT_PTR saved_address BPX01310
* BPX01320
* _OSICALL - internal macro for invoking the OSI_ services. BPX01330
* This macro is not normally replaced, refer to BPX01340
* its definition for details on how it works. BPX01350
* BPX01360
* __ADDR64 - Controls definition of the ADDR64 data type. BPX01370
* ADDR64 is an 8-byte data type used to deal with BPX01380
* 64-Bit user pointers. If __ADDR64 is #defined BPX01390
* then ADDR64 may be defined by the PFS else it will BPX01400
* be defined here based on _LP64. BPX01410
* BPX01420
* __FSPL - Exposes the Fast Socket Parameter List. BPX01430
* This requires inclusion of socket.h. BPX01440
* BPX01450
* BPX01460
* Conditional Processing is controlled by the following symbol: BPX01470
* BPX01480
* _NO_PFS_KES - suppresses the Kernel Extension Services. BPX01490
* Default: Include the service definitions. BPX01500
* Example use: #define _NO_PFS_KES BPX01510
* BPX01520
******************************************************************* BPX01530
* BPX01540
*01* METHOD OF ACCESS: BPX01550
* BPX01560
*02* C/370: BPX01570
* BPX01580
* #include string.h BPX01590
* #include bpxypfsi.h BPX01600
* BPX01610
*02* PL/X: BPX01620
* BPX01630
* None BPX01640
* BPX01650
*02* ASM: BPX01660
* BPX01670
* None BPX01680
* BPX01690
* BPX01700
*01* DEPENDENCIES: Changes to the macros listed below must be reflected BPX01710
* in the corresponding structures of this header. BPX01720
* BPX01730
*01* NOTES: BPX01740
* BPX01750
* This header file is consistent with the following mappings: BPX01760
* BPX01770
* BPXZBSIC BPX01780
* BPXYSEL BPX01790
* BPXZCJAR BPX01800
* BPXZGXPL BPX01810
* BPXZMTAB BPX01820
* BPXZNETW BPX01830
* BPXZOSI BPX01840
* BPXZOSIT BPX01850
* BPXZPFSI BPX01860
* BPXZTPRM BPX01870
* BPXZCPRM BPX01880
* BPXZVFSO BPX01890
* BPXZVNOP BPX01900
* BPXZFSPL BPX01910
* IRRPCRED BPX01920
* BPX01930
*01* COMPONENT: OpenMVS (SCPX4) BPX01940
* BPX01950
*01* DISTRIBUTION LIBRARY: AFOMHDR1 BPX01960
* BPX01970
****END OF SPECIFICATIONS*********************************************/ BPX03010
BPX03020
/*------------------------------------------------------------------*/ BPX03030
/* Include the common data areas */ BPX03040
/*------------------------------------------------------------------*/ BPX03050
#define __BPXYVFSI_Common_Only BPX03060
#include bpxyvfsi.h BPX03070
#undef __BPXYVFSI_Common_Only BPX03080
BPX03090
/*------------------------------------------------------------------*/ BPX03100
/* Pack structures for 64-bit compiles 3@E5A*/ BPX03110
/*------------------------------------------------------------------*/ BPX03120
#ifdef _LP64 BPX03130
#pragma pack(1) BPX03140
#endif BPX03150
BPX03160
#pragma page() BPX03170
/*------------------------------------------------------------------*/ BPX03180
/* Opaque Tokens */ BPX03190
/*------------------------------------------------------------------*/ BPX03200
typedef struct s_o_vntok { /* Output Vnode Token */ BPX03210
char o_vntok[8]; BPX03220
} O_VNTOK ; BPX03230
BPX03240
typedef struct s_wptok { /* Wait/Post Token for osi_post */ BPX03250
char wptok[24]; BPX03260
} WPTOK ; BPX03270
BPX03280
typedef struct s_seltok { /* vn_select Token for osi_selpost */ BPX03290
char seltok[16]; BPX03300
} SELTOK ; BPX03310
BPX03320
BPX03330
/*------------------------------------------------------------------*/ BPX03340
/* TOKSTR - Token Structure (BPXZCJAR)*/ BPX03350
/* This is the first parameter on all Vnode/VFS Operations */ BPX03360
/*------------------------------------------------------------------*/ BPX03370
typedef struct s_tokstr { BPX03380
CBHDR ts_hdr; /*+00 Id & Length */ BPX03390
/* PFS's Tokens: */ BPX03400
GTOK ts_init; /*+08 Init Token (Vnode & VFS) */ BPX03410
GTOK ts_mount; /*+10 Mount Token (Vnode & VFS) */ BPX03420
GTOK ts_file; /*+18 File Token (Vnode Only) */ BPX03430
BPX03440
char ts_LFS[24]; /*+20 LFS specific fields */ BPX03450
int ts_sysd1; /*+38 System Data 1 */ BPX03460
int ts_sysd2; /*+3C System Data 2 */ BPX03470
BPX03480
} TOKSTR ; BPX03490
BPX03500
/*----------------------------------------------------------------*/ BPX03510
/* Constants for ts_sysd1 field */ BPX03520
/*----------------------------------------------------------------*/ BPX03530
#define ts_unbind 1 /* Unbind from CInet @EIA*/ BPX03540
#define ts_bind2addrsel 2 /* bind2addrsel() @EIA*/ BPX03550
BPX03560
/*------------------------------------------------------------------*/ BPX03570
/* 64-Bit User Buffer Address Considerations @POA*/ BPX03580
/*------------------------------------------------------------------*/ BPX03590
/* An attempt is being made to accommodate C PFSes that are compiled BPX03600
* with LP64, those that are not, and those that aren't even compiled BPX03610
* with the 2.6 level of Language Extended (for long long). BPX03620
* A non-exploiting PFS mostly needs to be able to copy the 64-bit BPX03630
* u_buff64vaddr field and its own 31-bit buffer address into the BPX03640
* 64-bit fields of the copy64_struct. BPX03650
* BPX03660
* The PFS may typedef ADDR64 to an 8-byte data type of its own BPX03670
* choice and #define __ADDR64 to bypass the default typedef. */ BPX03680
BPX03690
#ifndef __ADDR64 /*@POM*/ BPX03700
#ifdef _LP64 /* Compiler Flag */ BPX03710
typedef char * ADDR64; /* 64-bit pointer */ BPX03720
#else BPX03730
typedef struct { /* 64-bit area */ BPX03740
int HW; /* High Word */ BPX03750
char *LW; /* Low Word 31-bit ptr */ BPX03760
} ADDR64; BPX03770
#endif BPX03780
#endif BPX03790
BPX03800
/*------------------------------------------------------------------*/ BPX03810
/* OSI - Operating System Information - Second Parameter (BPXZOSI)*/ BPX03820
/*------------------------------------------------------------------*/ BPX03830
typedef struct s_osi { BPX03840
CBHDR osi_hdr; /*+00 Id & Length */ BPX03850
BPX03860
char * _PTR32 osi_ascb; /*+08 ASCB ptr(set by osi_wait)@E5C*/ BPX03870
BPXL32 * _PTR32 osi_ecb; /*+0C ECB ptr(set by osi_wait)@E5C*/ BPX03880
int osi_pid; /*+10 Caller's PID for osi_signal*/ BPX03890
char osi_lfs[8]; /*+14 LFS data */ BPX03900
/* SMF I/O Counts Set by PFS: */ BPX03910
int osi_diribc; /*+1C Directory I/O block cnt */ BPX03920
int osi_readibc; /*+20 Read I/O block cnt */ BPX03930
int osi_writeibc; /*+24 Write I/O block cnt */ BPX03940
/*+28 Read Bytes (double word) */ BPX03950
int osi_bytesrd_h; /* */ BPX03960
int osi_bytesrd; /*+2C Read bytes (single wd) */ BPX03970
/*+30 Write Bytes (double word)*/ BPX03980
int osi_byteswr_h; /* */ BPX03990
int osi_byteswr; /*+34 Written bytes (one wd) */ BPX04000
BPX04010
char * _PTR32 osi_fsp; /*+38 Opt ptr to output FSP @E5C*/ BPX04020
int osi_pfsid; /*+3C PFS identifier @D6A*/ BPX04030
struct osirtoken /*+40 Ptr to Recovery Token */ BPX04040
* _PTR32 osi_rtokptr; /* @E5C*/ BPX04050
/*+44 Flags */ BPX04060
BIT osi_LFSrsvd :2; /* Reserved by LFS @PMA*/ BPX04070
BIT osi_extcaller :1; /* External Caller @PMA*/ BPX04080
BIT :1; /* Reserved for LFS Use @E0A*/ BPX04090
BIT osi_qnowait :1; /* No wait on quiesce @E0A*/ BPX04100
BIT osi_proctrm :1; /* In process termination @PKA*/ BPX04110
BIT osi_quiesce :1; /* On behalf of quiesce @PKA*/ BPX04120
BIT osi_sharedread :1; /* Shared read @DJC*/ BPX04130
BIT osi_asy1 :1; /* AsyncIO Part 1 @DGA*/ BPX04140
BIT osi_asy2 :1; /* AsyncIO Part 2 @DGA*/ BPX04150
BIT osi_ok2compimd :1; /* May Complete Immed @DGA*/ BPX04160
BIT osi_compimd :1; /* Did Complete Immed @DGA*/ BPX04170
BIT osi_timedwait :1; /* Timed Wait Requested @DJC*/ BPX04180
BIT osi_usersync :1; /* sync requested by user @DJC*/ BPX04190
BIT osi_remount :1; /* Call is for remount @D9A*/ BPX04200
BIT osi_privileged :1; /* User is Privileged @D9A*/ BPX04210
short osi_workarealen; /*+46 Work Area Length */ BPX04220
char * _PTR32 osi_workarea; /*+48 Work Area for PFS Usage@E5C*/ BPX04230
ATTR * _PTR32 osi_attr; /*+4C Optional Ptr to Output Attr@E5C*/ BPX04240
WPTOK osi_token; /*+50 Token for osi_post */ BPX04250
char osi_rsvd2[8]; /*+68 reserved for LFS @P7C*/ BPX04260
GTOK osi_asytok; /*+70 AsyncIO LFS/PFS Token @DGA*/ BPX04270
char osi_rsvd3[4]; /*+78 reserved for LFS @P7C*/ BPX04280
char * _PTR32 osi_xmib; /*+7C Ptr to XMIB @E5C*/ BPX04290
/*+80 Original End of OSI @PFA*/ BPX04300
/*+80 Flags2 */ BPX04310
BIT osi_vfsexcl :1; /* VFS Latch is held EXCL @PMA*/ BPX04320
BIT osi_onktask :1; /* Running on Kernel Task @PMA*/ BPX04330
BIT :6; /* Reserved, see BPXZOSI @E5C*/ BPX04340
BIT osi_commbuff :1; /* Buffers in Common @DWA*/ BPX04350
BIT osi_fsmoving :1; /* File System is moving @E0A*/ BPX04360
BIT :1; /* osi_notsigreg @E5C*/ BPX04370
BIT osi_indirect64 :1; /* Buffer address is a pointer BPX04380
to a 64-bit buffer address BPX04390
for uio_move @E5A*/ BPX04400
BIT :4; BPX04410
char osi_rsvd4[6]; /*+82 unused yet @PMA*/ BPX04420
ADDR64 osi_uaiocb64; /*+88 User's Aiocb Addr @DWA*/ BPX04430
int osi_LFSrsvd5; /*+90 reserved for LFS @PMA*/ BPX04440
char osi_rsvd5[4]; /*+94 unused yet @PMA*/ BPX04450
union { /*+98 Open Token @E7A*/ BPX04460
char osi_OpenToken[8]; /* Basic token @E7A*/ BPX04470
struct { BIT :31; /*@E7A*/ BPX04480
BIT osi_OTStateless :1; /* Stateless vn_open @E7A*/ BPX04490
char osi_OTRsvd[3]; /*@E7A*/ BPX04500
char osi_OTSysid; /* Remote open's sysid @E7A*/ BPX04510
} osi_OTStruct; /*@E7A*/ BPX04520
FID osi_OTok; /* Dual word format @E7A*/ BPX04530
} osi_OT; /*@E7A*/ BPX04540
char osi_rsvd6[32]; /*+A0 Available for expansion@ECA*/ BPX04550
/*+C0 End of OSI @PFA*/ BPX04560
} OSI ; BPX04570
BPX04580
#define osi_opentoken osi_OT.osi_OpenToken /*5@E7A*/ BPX04590
#define osi_otstateless osi_OT.osi_OTStruct.osi_OTStateless BPX04600
#define osi_otsysid osi_OT.osi_OTStruct.osi_OTSysid BPX04610
#define osi_otint0 osi_OT.osi_OTok.fid[0] BPX04620
#define osi_otint1 osi_OT.osi_OTok.fid[1] BPX04630
BPX04640
#define osi_uaiocb osi_uaiocb64.LW /* User's Aiocb Addr @DWA*/ BPX04650
BPX04660
BPX04670
BPX04680
/*-------------------------------------------------------------*/ BPX04690
/* PFS Recovery Token */ BPX04700
/* Set and Cleared by the PFS during a VNODE/VFS operation. */ BPX04710
/* If this is non-zero when an abend in the PFS is percolated*/ BPX04720
/* to the LFS's ESTAE the PFS will be invoked for */ BPX04730
/* VN_RECOVERY to clean up its resources. @D5A*/ BPX04740
/* If this is non-zero during user EOM processing the */ BPX04750
/* PFS will be invoked for VFS_RECOVERY to clean up */ BPX04760
/* whatever was recorded with the token. */ BPX04770
/*-------------------------------------------------------------*/ BPX04780
struct osirtoken { BPX04790
void * _PTR32 osirt_ptr[2]; /*@E5C*/ BPX04800
} ; BPX04810
BPX04820
/* Extended recovery token area passed to vn_recovery @PCA*/ BPX04830
struct osirtokenx { /*@PCA*/ BPX04840
struct osirtoken osirtx_rtoken; /* Original osirtoken */ BPX04850
char osirtx_rsv[16];/* Reserved */ BPX04860
void * _PTR32 osirtx_sdwa; /* Ptr to SDWA or 0 @E5C*/ BPX04870
struct vnrcvydumplist * _PTR32 osirtx_dumplist; /*@E5C*/ BPX04880
} ; /*@PCA*/ BPX04890
/* The fourth parameter to vn_recovery may be considered BPX04900
as either osirtoken or osirtokenx. For migration BPX04910
purposes the prototype is not being changed. @PCA*/ BPX04920
BPX04930
/* vn_recovery output dumplist @PKA*/ BPX04940
struct vnrcvydumplist { /*@PKA*/ BPX04950
int vnrcvydumpcount; /*@PKA*/ BPX04960
struct vnrcvydumparea { /*@PKA*/ BPX04970
char vnrcvydumpstoken[8]; /*@PKA*/ BPX04980
void * _PTR32 vnrcvydumpaddr; /*@E5C*/ BPX04990
int vnrcvydumplength; /*@PKA*/ BPX05000
BIT vnrcvydumpsumm :1; /*@PKA*/ BPX05010
BIT :31; /*@PKA*/ BPX05020
} vnrcvydumpareas[1]; /*@PKA*/ BPX05030
}; /*@PKA*/ BPX05040
BPX05050
/*----------------------------------------------------------------*/ BPX05060
/* vn_recovery retval flags */ BPX05070
/*----------------------------------------------------------------*/ BPX05080
#define VNR_RETERRNO 1 /* Return -1 with retcode and rsncode */ BPX05090
#define VNR_RETSUCCESS 2 /* Return retcode as retval to user */ BPX05100
#define VNR_NODUMP 4 /* Suppress the SDUMP for this abend */ BPX05110
BPX05120
BPX05130
/*------------------------------------------------------------------*/ BPX05140
/* CRED - Security Auditing Information - Third Parameter (IRRPCRED)*/ BPX05150
/* This parameter is generally just passed to SAF. */ BPX05160
/* */ BPX05170
/* Refer to SAF documentation for details on security */ BPX05180
/* related interfaces and structures. */ BPX05190
/*------------------------------------------------------------------*/ BPX05200
/* length, alet, ptr set used by CREDACLINFO 6@DSA*/ BPX05210
typedef struct s_credacl { BPX05220
int len; /* cred_aclinfo[].len */ BPX05230
int alet; /* cred_aclinfo[].alet */ BPX05240
int rsv; BPX05250
int ptr; /* cred_aclinfo[].ptr */ BPX05260
} CREDACL; BPX05270
BPX05280
/* aclinfo area pointed to from cred 3@DSA*/ BPX05290
typedef struct s_credaclinfo { BPX05300
CREDACL cred_aclinfo[5]; BPX05310
} CREDACLINFO; BPX05320
BPX05330
/* constants used to access an aclinfo slot for an acl type 6@DSA*/BPX05340
#define CREDACCESSACL 0 BPX05350
#define CREDFMODELACL 1 BPX05360
#define CREDDMODELACL 2 BPX05370
#define CREDPFMODELACL 3 BPX05380
#define CREDPDMODELACL 4 BPX05390
BPX05400
/* Constants for cred_utype: */ BPX05410
#define CRED_UREGULAR 1 /* Regular User */ BPX05420
#define CRED_USYSTEM 2 /* System User, like a superuser */ BPX05430
BPX05440
/* Constants for cred_function: */ BPX05450
#define AFC_ACCESS 1 /* Use Real UID/GID on checks */ BPX05460
BPX05470
typedef struct s_cred { BPX05480
CBHDR cred_hdr; /*+00 Id & Length */ BPX05490
char cred_ver; /*+08 Version */ BPX05500
char cred_utype; /*+09 User Type */ BPX05510
short cred_function; /*+0A User Function */ BPX05520
char rsv4; /*+0C Reserved @DYA*/ BPX05530
BIT cred_rsv_bit8 :1; /*+0D reserved bit #8 @DYC*/ BPX05540
BIT cred_seclablactive :1; /* seclabel class active @DYA*/ BPX05550
BIT cred_SeclRequired :1; /* mlfsobj option active @DZA*/ BPX05560
BIT :5; /* reserved bits @DZC*/ BPX05570
char cred_info[50]; /*+0E Security Audit Info @DYC*/ BPX05580
int rsv1; /*+40 6@DSA*/ BPX05590
int cred_aclalet; /*+44 */ BPX05600
int rsv2; /*+48 */ BPX05610
void * _PTR32 cred_aclptr; /*+4C points to an ACL for access BPX05620
@E5C*/ BPX05630
#define cred_aclinfoptr cred_aclptr /* for makefsp and setfacl*/ BPX05640
char cred_seclabel[8]; /*+50 security label @DYA*/ BPX05650
void * _PTR32 cred_aceeptr; /*+58 ACEE for SRB requests @E5C*/ BPX05660
char cred_ROSeclabel[8]; /*+5C Seclabel for RO Files @DYA*/ BPX05670
char rsv5[28]; /*+64 */ BPX05680
} CRED ; BPX05690
BPX05700
#pragma page() BPX05710
/*------------------------------------------------------------------*/ BPX05720
/* PFSPARM - Text from PARM operand of FILESYSTYPE and MOUNT. */ BPX05730
/* */ BPX05740
/* The parmtext field is of variable length, from 0 to 1024 bytes, */ BPX05750
/* with the actual length passed in the parmlen field. */ BPX05760
/*------------------------------------------------------------------*/ BPX05770
typedef struct s_pfsparm { BPX05780
short parmlen; /* Length of the text */ BPX05790
char parmtext[1024]; /* Text, not null terminated.*/ BPX05800
} PFSPARM ; BPX05810
BPX05820
/*------------------------------------------------------------------*/ BPX05830
/* MTAB - vfs_mount parameter (BPXZMTAB)*/ BPX05840
/* */ BPX05850
/* This structure passes to the PFS the parameters that were */ BPX05860
/* specified on a ROOT or MOUNT command and provides for the */ BPX05870
/* exchange of information between the LFS and PFS. */ BPX05880
/* */ BPX05890
/* The PFS is expected to set the fields marked with an S, */ BPX05900
/* if appropriate. */ BPX05910
/* */ BPX05920
/*------------------------------------------------------------------*/ BPX05930
BPX05940
typedef char mt_aggname[45]; /* Aggregate Name @DUA*/ BPX05950
BPX05960
typedef struct s_mtab { BPX05970
CBHDR mt_hdr; /* +00 Id & Length */ BPX05980
int rsvd1; /* +08 Reserved */ BPX05990
char mt_filesys[44]; /* +0C Name of the file system */ BPX06000
char mt_ddname[8]; /*S+38 DD name of the file system if BPX06010
mt_filesys is an MVS DSN */ BPX06020
char mt_filesystype[8]; /* +40 Type name of the PFS that BPX06030
owns this file system. */ BPX06040
/* +48 Mount mode for this file sys*/ BPX06050
BIT mt_readonly :1; /* Read only specified */ BPX06060
BIT mt_readwrite :1; /* Read/Write specified */ BPX06070
BIT mt_nosuid :1; /* no setuid @D8A*/ BPX06080
BIT mt_nosec :1; /* no security @DNA*/ BPX06090
BIT mt_noauto :1; /* no automove @DPA*/ BPX06100
BIT mt_aunmount :1; /* Unmount during recovery@DTA*/ BPX06110
BIT :2; /* Reserved @DTC @DPC*/ BPX06120
/* +49 Lfs specific flags */ BPX06130
BIT mt_internalcall :1; /* Mount from an internal BPX06140
module - no authority check BPX06150
is needed. */ BPX06160
BIT mt_nowait :1; /*S If requests are made of this BPX06170
file system while it is BPX06180
quiesced, don't wait for the BPX06190
unquiesce, give error rc. */ BPX06200
BIT mt_remount :1; /* mount is a remount @DCA*/ BPX06210
BIT :5; /* Reserved @DCC*/ BPX06220
short mt_syncinterval; /*S+4A Interval to use for sync */ BPX06230
PFSPARM * _PTR32 mt_parmaddr; /* +4C Address of PARM specified BPX06240
on MOUNT or ROOT. @E5C*/ BPX06250
int mt_ccsid; /* +50 TAG Ccsid value @DRC*/ BPX06260
/* Mount Point: (for info only)*/ BPX06270
char * _PTR32 mt_mountptaddr; /* +54 Address of the pathname BPX06280
@E5C*/ BPX06290
int mt_pathlen; /* +58 Length of the pathname */ BPX06300
/* */ BPX06310
int mt_stdev; /* +5C The unique ID assigned to BPX06320
this filesystem. This value BPX06330
must be returned in at_dev. */ BPX06340
/* +60 Pathconf values for File Sys*/ BPX06350
int mt_linkmax; /*S+60 PFS: link_max */ BPX06360
int mt_namemax; /*S+64 LFS & PFS: name_max */ BPX06370
/* +68 Pathconf flags */ BPX06380
BIT mt_notrunc :1; /*S LFS & PFS: posix_No_trunc */ BPX06390
BIT mt_chownrstd :1; /*S Security: chown restricted*/ BPX06400
BIT mt_caseinsensitive :1; /*S 0=sensitive,1=not @DHA*/ BPX06410
BIT mt_casenonpreserving :1; /*S 0=perserving,1=not @DHA*/ BPX06420
BIT :4; /* Reserved */ BPX06430
char rsvd3[3]; /* +69 Reserved @DRC*/ BPX06440
BIT mt_nullFS :1; /* Null value for FILESYSTEM @DRC*/ BPX06450
BIT mt_nullMP :1; /* Null value for MOUNTPOINT @DRC*/ BPX06460
BIT mt_TagText :1; /* TAG TEXT value. Auto conversion */ BPX06470
/* is allowed for every untagged */ BPX06480
/* file & mt_ccsid is the implicit */ BPX06490
/* charset id. When off, auto */ BPX06500
/* conversion is precluded. @DRC*/ BPX06510
BIT :13; /* Reserved @DRA*/ BPX06520
/* +6E PFS communication flags */ BPX06530
BIT mt_asynchmount :1; /*S Asynchronous mount in BPX06540
progress. BPX06550
- Set by PFS to indicate BPX06560
to LFS that mount will BPX06570
complete asynchronously BPX06580
- Set by LFS to indicate BPX06590
to PFS that this call BPX06600
is to complete an BPX06610
asynchronous mount @DCC*/ BPX06620
BIT mt_synchonly :1; /* Mount must be completed BPX06630
synchronously. That is, BPX06640
vfs_mount must not return BPX06650
+1 @D7A*/ BPX06660
BIT mt_noclient :1; /*S Mount must not be completed BPX06670
by establishing a client - BPX06680
server relationship with BPX06690
owning system. Set by PFS BPX06700
@01C*/ BPX06710
BIT mt_ininit :1; /* Set by the LFS to allow PFS BPX06720
to know mount was done BPX06730
during initialization @PAA*/ BPX06740
BIT mt_nevermove :1; /*S Sysplex environment only: BPX06750
file system cannot be moved BPX06760
to another system @DPA*/ BPX06770
BIT mt_secacl :1; /*S Security product supports BPX06780
ACLS. @DSA*/ BPX06790
BPX06800
BIT mt_aggattachrw :1; /*S Agg is attached R/W @DUA*/ BPX06810
BIT mt_agghfscomp :1; /*S Agg is HFS Compatible @DUA*/ BPX06820
BIT :3; /* Reserved for HFS @04C @03A*/ BPX06830
BIT mt_catchup :1; /* Mount catchup @PQA*/ BPX06840
BIT mt_deadsystakeover :1; /* mount is for deadsys @PSA*/ BPX06850
BIT mt_bh :1; /* blackhole mount @PSA*/ BPX06860
BIT mt_restart :1; /* mount for recycle must BPX06870
be asynchronous @EAA*/ BPX06880
BIT mt_nolocking :1; /* Locking not supported @04C@EBC*/ BPX06890
char rsvd4[8]; /* Reserved @DPA*/ BPX06900
char mt_sysname[8]; /* system to be mounted BPX06910
on @DPA*/ BPX06920
/*+80 End of Ver1 Mtab --------------------- @DUA*/ BPX06930
char rsvd5[14]; /*@DUA*/ BPX06940
BIT mt_disablella :1; /* +8E Disable LLA @06A*/ BPX06950
BIT mt_rwmntclient :1; /* Mount as client if R/W @06A*/ BPX06960
BIT mt_samemode :1; /* samemode remount @06A*/ BPX06970
BIT :13; /* Reserved @06A*/ BPX06980
char rsvd6[16]; /*@06A*/ BPX06990
mt_aggname * _PTR32 mt_aggnameptr; /*+A0 Ptr to AggName Area @E5C*/ BPX07000
char rsvd7[12]; /*@DUA*/ BPX07010
/*+B0 End of Ver2 Mtab --------------------- @DUA*/ BPX07020
/* owner version and protocol are passed to the PFS on vfs_mount*/ BPX07030
char mt_ownerversion; /* owner version @PRA*/ BPX07040
char mt_ownerprotocol; /* owner protocol @PRA*/ BPX07050
char rsvd8[6]; BPX07060
/*+B8 End of Mtab --------------------- */ BPX07070
} MTAB ; BPX07080
BPX07090
/*------------------------------------------------------------------*/ BPX07100
/* NETW - vfs_network parameter (BPXZNETW)*/ BPX07110
/* */ BPX07120
/* This structure passes to the PFS the parameters that were */ BPX07130
/* specified on a NETWORK command and provides for the */ BPX07140
/* exchange of information between the LFS and PFS. */ BPX07150
/* */ BPX07160
/* The PFS is expected to set the fields marked with an S. */ BPX07170
/* */ BPX07180
/*------------------------------------------------------------------*/ BPX07190
typedef struct s_netw { BPX07200
CBHDR nt_hdr; /* +00 ID & Length */ BPX07210
int rsvd1; /* +08 Reserved */ BPX07220
int nt_domnum; /* +0C Numeric value of the domain */ BPX07230
char nt_domname[16]; /* +10 Name of the domain */ BPX07240
char nt_type[8]; /* +20 Filesystype of the PFS */ BPX07250
int nt_maxsockets; /* +28 Max number sockets */ BPX07260
int nt_stdev; /* +2C The unique ID assigned to BPX07270
this filesystem. This value BPX07280
must be returned in at_dev. */ BPX07290
/* +30 Parser Flags: */ BPX07300
BIT nt_havename :1; /* DOMAINNAME given */ BPX07310
BIT nt_havenum :1; /* DOMAINNUMBER given */ BPX07320
BIT nt_havesock :1; /* MAXSOCKETS given */ BPX07330
BIT nt_havetype :1; /* TYPE given */ BPX07340
BIT :4; BPX07350
BIT nt_invaname :1; /* DOMAINNAME invalid */ BPX07360
BIT nt_invanum :1; /* DOMAINNUMBER invalid */ BPX07370
BIT nt_invasock :1; /* MAXSOCKETS invalid */ BPX07380
BIT nt_invatype :1; /* TYPE invalid */ BPX07390
BIT :4; BPX07400
/* +32 Flags: */ BPX07410
BIT nt_localremote :1; /*S 0=Local, 1=Remote */ BPX07420
BIT nt_commoninet :1; /* running under Cinet @PGA*/ BPX07430
BIT :6; BPX07440
char rsvd2[1]; /* +33 Reserved */ BPX07450
short nt_iaaport; /* +34 Starting Reserved Port @PGA*/ BPX07460
short nt_iaacount; /* +36 Number of Reserved Ports@PGA*/ BPX07470
char nt_parmmem[8]; /* +38 Parmlib Member name @PGA*/ BPX07480
/* +40 */ BPX07490
} NETW ; BPX07500
BPX07510
/* nt_localremote values */ BPX07520
#define NETW_LOCAL 0 /* Local (intra-system) socket */ BPX07530
#define NETW_REMOTE 1 /* Remote (network) socket */ BPX07540
BPX07550
BPX07560
/*------------------------------------------------------------------*/ BPX07570
/* O_EXEC flag for the open_flags parameter of vn_open (BPXYOPNF)*/ BPX07580
/*------------------------------------------------------------------*/ BPX07590
#define O_EXEC 0x00800000 /* Do Open Access check for Exec */ BPX07600
#ifndef O_DENYRD BPX07610
#define O_DENYRD 0x00020000 /* v_open (deny_read) @E4A*/ BPX07620
#endif BPX07630
#ifndef O_DENYWRT BPX07640
#define O_DENYWRT 0x00010000 /* v_open (deny_write) @E4A*/ BPX07650
#endif BPX07660
BPX07670
/*------------------------------------------------------------------*/ BPX07680
/* _SOCKADDR Dummy Value (BPXYSOCK)*/ BPX07690
/*------------------------------------------------------------------*/ BPX07700
#ifndef _SOCKADDR /* This macro can be externally set @PIM*/ BPX07710
#define _SOCKADDR char /* to the desired sockaddr struct. @PIM*/ BPX07720
#endif /*@PIM*/ BPX07730
BPX07740
/*------------------------------------------------------------------*/ BPX07750
/* Select Parameters - vn_select and vfs_batsel (BPXYSEL)*/ BPX07760
/*------------------------------------------------------------------*/ BPX07770
BPX07780
/* sel_function values */ BPX07790
BPX07800
#define SEL_QUERY 1 /* SELECT Query */ BPX07810
#define SEL_CANCEL 2 /* SELECT Cancel */ BPX07820
#define SEL_BATSELQ 3 /* BATCH-SELECT Query */ BPX07830
#define SEL_BATSELC 4 /* BATCH-SELECT Cancel */ BPX07840
#define SEL_POLLQUERY 5 /* POLL Query @P9A*/ BPX07850
#define SEL_BATPOLLQ 6 /* BATCH-POLL Query @P9A*/ BPX07860
#define SEL_BATPOLLC 7 /* BATCH-POLL Cancel @P9A*/ BPX07870
#define SEL_POLLCANCEL 8 /* POLL Cancel @P9A*/ BPX07880
BPX07890
/* sel_options values */ BPX07900
BPX07910
#define SEL_READ 0x40000000 /* Read */ BPX07920
#define SEL_WRITE 0x20000000 /* Write */ BPX07930
#define SEL_XCEPT 0x10000000 /* Exception */ BPX07940
BPX07950
BPX07960
/* Batch Select Interface Control (BSIC) Block (BPXZBSIC)*/ BPX07970
BPX07980
typedef struct s_bsicent { /* Individual Entry: */ BPX07990
int bs_request; /* Status Request */ BPX08000
int bs_response; /* Status Response */ BPX08010
GTOK bs_file; /* File Token, same as ts_file */ BPX08020
char * _PTR32 bs_workptr; /* Work Area Ptr for use by PFS BPX08030
@E5C*/ BPX08040
SELTOK bs_seltok; /* Select Token for osi_selpost */ BPX08050
} BSICENT; BPX08060
BPX08070
typedef struct s_bsic { /* Main structure with array: */ BPX08080
char bsh_id[4]; /* Identifier */ BPX08090
int bsh_fdcount; /* Number of bsh_ents (files) */ BPX08100
char * _PTR32 bsh_workptr; /* Work Area Ptr for use by PFS BPX08110
@E5C*/ BPX08120
BSICENT bsh_ents[1]; /* Entry array (1 per fdcount) */ BPX08130
} BSIC ; BPX08140
BPX08150
BPX08160
/*------------------------------------------------------------------*/ BPX08170
/* Direction parameter for vn_sockopt @P8A*/ BPX08180
/*------------------------------------------------------------------*/ BPX08190
BPX08200
#define GET_SOCKOPT 1 /* Get socket options @P8A*/ BPX08210
#define SET_SOCKOPT 2 /* Set socket options @P8A*/ BPX08220
#define SET_IBMSOCKOPT 3 /* SetIBMsockopt options @PDA*/ BPX08230
BPX08240
/*----------------------------------------------------------------*/ BPX08250
/* vn_sockopt(SET_IBMSOCKOPT) Options (BPXYSOCK)*/ BPX08260
/*----------------------------------------------------------------*/ BPX08270
#define SOCK_SO_BULKMODE 0x8000 /*@DKA,@DMC*/ BPX08280
#define SOCK_SO_IGNOREINCOMINGPUSH 1 /*@DKA,@DMC*/ BPX08290
#define SOCK_SO_NONBLOCKLOCAL 0x8001 /*@DKA,@DMC*/ BPX08300
#define SOCK_SO_IGNORESOURCEVIPA 2 /*@DKA,@DMC*/ BPX08310
#define SOCK_SO_OPTMSS 0x8003 /*@DKA,@DMC*/ BPX08320
#define SOCK_SO_OPTACK 0x8004 /*@DKA,@DMC*/ BPX08330
BPX08340
/*------------------------------------------------------------------*/ BPX08350
/* vn_getname Name_type values @PHA*/ BPX08360
/*------------------------------------------------------------------*/ BPX08370
#define gnm_getpeername 1 /*@PHA*/ BPX08380
#define gnm_getsockname 2 /*@PHA*/ BPX08390
BPX08400
/*------------------------------------------------------------------*/ BPX08410
/* vn_cancel Flags @DGA*/ BPX08420
/*------------------------------------------------------------------*/ BPX08430
struct vncanflags { /* vn_cancel flags @DGA*/ BPX08440
BIT :8; /* Reserved */ BPX08450
BIT :23; /* Also reserved */ BPX08460
BIT vncanforce :1; /* Forced Cancel @DGA*/ BPX08470
} ; BPX08480
BPX08490
BPX08500
/*------------------------------------------------------------------*/ BPX08510
/* PathConf Extensions - vn_pathconf (BPXYPCF)*/ BPX08520
/*------------------------------------------------------------------*/ BPX08530
#define PC_CASE 100 /* pathconf_option value @DHA*/ BPX08540
BPX08550
#define CASE_INSENSITIVE 2 /* Ret if not sensitive @DHA*/ BPX08560
#define CASE_NONPRESERVING 1 /* Ret if not preserving @DHA*/ BPX08570
BPX08580
/*------------------------------------------------------------------*/ BPX08590
/* Accept_and_Receive structure - vn_anr (BPXZOSI)*/ BPX08600
/*------------------------------------------------------------------*/ BPX08610
struct anr_struct { /*@PHA*/ BPX08620
int remote_sockaddr_length; BPX08630
_SOCKADDR *remote_sockaddr_ptr; BPX08640
int local_sockaddr_length; BPX08650
_SOCKADDR *local_sockaddr_ptr; BPX08660
int msg_flags; BPX08670
} ; /*@PHA*/ BPX08680
BPX08690
/*------------------------------------------------------------------*/ BPX08700
/* 64-Bit Versions of the Iovec and MsgHdr (BPXYMSGH & BPXYIOV)*/ BPX08710
/*------------------------------------------------------------------*/ BPX08720
BPX08730
struct iov64 { /*@POA*/ BPX08740
ADDR64 iov64_base; /* 64-Bit Ptr */ BPX08750
int iov64_lenh; /* Required to be Zero */ BPX08760
signed int iov64_len; /* Length, < 2G */ BPX08770
}; BPX08780
BPX08790
BPX08800
struct msg64hdr { /*@POA*/ BPX08810
ADDR64 msg64_name; /* 64-Bit sockaddr ptr */ BPX08820
ADDR64 msg64_iov; /* 64-Bit iov ptr */ BPX08830
ADDR64 msg64_control; /* 64-Bit ancillary ptr */ BPX08840
int msg64_flags; /* MSG_ flags */ BPX08850
int msg64_namelen; /* 31-Bit sockaddr length */ BPX08860
int msg64_iovlen; /* 31-Bit number of iovecs */ BPX08870
int msg64_controllen; /* 31-Bit ancillary len */ BPX08880
}; BPX08890
BPX08900
BPX08910
/*------------------------------------------------------------------*/ BPX08920
/* Fast Sockets Parameter List - VN_FSR/FSRF/FSRM (BPXZFSPL)*/ BPX08930
/*------------------------------------------------------------------*/ BPX08940
#ifdef __FSPL BPX08950
struct fs_sr { /* FSP1 - vn_fsr @POA*/ BPX08960
/*+30*/ BPX08970
int sr_ibufflen; /* buffer length */ BPX08980
int sr_ibufferalet; /* buffer alet */ BPX08990
int sr_iflags; /* flags */ BPX09000
char * _PTR32 sr_ibufferptr; /* 31-bit ptr @E5C*/ BPX09010
/*+40*/ BPX09020
ADDR64 sr_ibufferptr64; /* 64-bit buff ptr */ BPX09030
} ; BPX09040
BPX09050
struct fs_srf { /* FSP2 - vn_fsrf @POA*/ BPX09060
/*+30*/ BPX09070
int srf_ibufflen; /* buffer length */ BPX09080
int srf_ibufferalet; /* buffer alet */ BPX09090
int srf_iflags; /* flags */ BPX09100
int srf_isockaddrlen; /* sockaddr length */ BPX09110
/*+40*/ BPX09120
char * _PTR32 srf_isockaddrptr; /* ptr to sockaddr in pri BPX09130
@E5C*/ BPX09140
char * _PTR32 srf_ibufferptr; /* ptr to buffer @E5C*/ BPX09150
ADDR64 srf_ibufferptr64; /* 64-bit buff ptr */ BPX09160
} ; BPX09170
BPX09180
struct fs_srm { /* FSP3 - vn_fsrm @POA*/ BPX09190
/*+30*/ BPX09200
int srm_iflags; /* flags */ BPX09210
int srm_iiovalet; /* iov structure alet */ BPX09220
int srm_iiovbufalet; /* alet for iov buffers */ BPX09230
union { BPX09240
struct msghdr srm_imsghdr; /* 31-bit msghdr */ BPX09250
struct { int rsvd; BPX09260
struct msg64hdr srm_imsghdr64; /* 64-bit msghdr */ BPX09270
} srm_imsghdr64u; BPX09280
} srm_imsgh; BPX09290
} ; BPX09300
BPX09310
struct s_fspl { /*@POA*/ BPX09320
CBHDR fs_hdr; /* ID & Length */ BPX09330
char rsvd1[3]; /* Reserved */ BPX09340
/* Flags: */ BPX09350
BIT fs_key :4; /* user's key */ BPX09360
BIT fs_addr64 :1; /* 64-bit buffer addrs */ BPX09370
BIT :1; /* */ BPX09380
BIT fs_shutd :1; /* send & shutdown (msg_eof) */ BPX09390
BIT fs_rwind :1; /* 0=read, 1=write */ BPX09400
CRED * _PTR32 fs_cred; /* ptr to cred @E5C*/ BPX09410
/*+10*/ BPX09420
GTOK fs_pfstok; /* pfs token from vnode (ts_file)*/ BPX09430
int fs_openflgs; /* open flags */ BPX09440
OSI * _PTR32 fs_osi; /* ptr to osi @E5C*/ BPX09450
/*+20*/ BPX09460
int fs_rv; /* return value */ BPX09470
int fs_rc; /* return code (errno) */ BPX09480
int fs_rsn; /* reason code (errnojr) */ BPX09490
int fs_sockdes; /* common socket descriptor */ BPX09500
/*+30*/ BPX09510
union { /* call specific parms */ BPX09520
struct fs_sr fs_isr; BPX09530
struct fs_srf fs_isrf; BPX09540
struct fs_srm fs_isrm; BPX09550
} fs_parms; BPX09560
int rsvd2; /* Adj to match BPXZFSPL @EKA*/ BPX09570
/*+6C*/ BPX09580
int fs_timeout; /* Timout in Milli-seconds @EKA*/ BPX09590
/*+70*/ BPX09600
char fs_threadtoken[8]; /* LFS Thread Token @EKA*/ BPX09610
} ; BPX09620
BPX09630
#endif BPX09640
BPX09650
BPX09660
/*------------------------------------------------------------------*/ BPX09670
/* Inactive buffer structure (IAB) - vfs_inactive (BPXZOSI) */ BPX09680
/*------------------------------------------------------------------*/ BPX09690
typedef struct s_iabent { /* Individual Entry */ BPX09700
char * _PTR32 iab_vnode; /* Vnode pointer @E5C*/ BPX09710
char iab_pfs[8]; /* Pfs token */ BPX09720
char * _PTR32 iab_server_vnode; /* Server's vnode ptr @E5C*/ BPX09730
FID iab_fid; /* Fid for validation @PPA*/ BPX09740
int iab_return_value; /* Return value */ BPX09750
} IABENT; /*@PLA*/ BPX09760
typedef struct s_iab { /* Main structure with array: */ BPX09770
int iab_devno; /* Device number */ BPX09780
IABENT iab_ents[1]; /* Entry array (1 per vnode) */ BPX09790
} IAB; /*@PLA*/ BPX09800
BPX09810
#ifndef SIOCSETRTTD BPX09820
/*---------------------------------------------------------------*/ BPX09830
/* Ioctl commands used during initialization of a PFS */ BPX09840
/* when using Common Inet @P8A*/ BPX09850
/* NOTE: Values of the form 000013xx can only be used */ BPX09860
/* with the w_ioctl() function, not with ioctl(). */ BPX09870
/*---------------------------------------------------------------*/ BPX09880
BPX09890
#define SIOCSETRTTD 0x8008C981 /* Set TD - Left bookend */ BPX09900
#define IOCC_TCCE 0x0000138e /* (5006) - Right bookend*/ BPX09910
BPX09920
/*---------------------------------------------------------------*/ BPX09930
/* Ioctl commands used during normal processing of route */ BPX09940
/* changes when using Common Inet @P8A*/ BPX09950
/*---------------------------------------------------------------*/ BPX09960
BPX09970
#define SIOCMSDELRT 0x0000138f /* (5007) - Delete Route */ BPX09980
#define SIOCMSADDRT 0x00001390 /* (5008) - Add Route */ BPX09990
#define SIOCMSSIFADDR 0x00001391 /* (5009) - Set Interface BPX10000
Address */ BPX10010
#define SIOCMSSIFFLAGS 0x00001392 /* (5010) - Set Interface BPX10020
Flags */ BPX10030
#define SIOCMSSIFDSTADDR 0x00001393 /* (5011) - Set pt-to-pt BPX10040
interface address*/ BPX10050
#define SIOCMSSIFBRDADDR 0x00001394 /* (5012) - Set broadcast BPX10060
Address */ BPX10070
#define SIOCMSSIFNETMASK 0x00001395 /* (5013) - Set Interface BPX10080
Network Mask */ BPX10090
#define SIOCMSSIFMETRIC 0x00001396 /* (5014) - Set Interface BPX10100
Routing Metric*/ BPX10110
#define SIOCMSRBRTTABLE 0x00001397 /* (5015) - Rebuild Routing BPX10120
Table */ BPX10130
#define SIOCMSMETRIC1RT 0x00001398 /* (5016) - Set Metric1 */ BPX10140
#define SIOCMSICMPREDIRECT 0x00001399 /* (5017) - ICMP Redirect*/ BPX10150
#endif BPX10160
BPX10170
#pragma page() BPX10180
/********************************************************************/ BPX10190
/* */ BPX10200
/* Physical File System Initialization Interface Structures */ BPX10210
/* */ BPX10220
/* These structures are used during the activation of a PFS. */ BPX10230
/* The pfsinit routine is invoked with the following parameters: */ BPX10240
/* */ BPX10250
/* pfsinit(PFSI *P, PFSNAME *N, PFSPARM *M, void *V, OSIT *O) */ BPX10260
/* */ BPX10270
/* The variable names, P,N,M,V, and O are used in the examples. */ BPX10280
/********************************************************************/ BPX10290
BPX10300
/*------------------------------------------------------------------*/ BPX10310
/* PFSI - PFS Initialization Block (BPXZPFSI)*/ BPX10320
/* */ BPX10330
/* This structure is used to exchange information between */ BPX10340
/* the LFS and PFS during initialization. */ BPX10350
/* */ BPX10360
/* The PFS is expected to set the fields marked with an S. */ BPX10370
/* */ BPX10380
/*------------------------------------------------------------------*/ BPX10390
typedef struct s_pfsi { BPX10400
CBHDR pfsi_hdr; /* +00 ID and Length */ BPX10410
short pfsi_ver; /* +08 Version number */ BPX10420
char pfsi_rsvd1; /* +0A Reserved */ BPX10430
char pfsi_tdindex; /* +0B Cinet Td Index passed to PFS @DVA*/ BPX10440
GTOK pfsi_pfsanchor; /*S+0C The PFS init token that will be BPX10450
passed to the PFS on all calls. */ BPX10460
struct vfsotab BPX10470
* _PTR32 pfsi_vfso; /*S+14 Address of the VFS ops table @E5C*/ BPX10480
/* +18 Flags */ BPX10490
BIT pfsi_ook :1; /* File system is running outside BPX10500
the kernel */ BPX10510
BIT pfsi_alone :1; /* File system is the only PFS in BPX10520
this A.S. outside the kernel */ BPX10530
BIT pfsi_new :1; /* File system is being intialized BPX10540
for the 1st time in this AS @P0C*/ BPX10550
BIT pfsi_estaeexits :1; /* osi_thread called routine BPX10560
permanent ESTAE supported @DMA*/ BPX10570
BIT pfsi_memcritical:1; /* LFS supports osi_memcritical BPX10580
in this release @02A*/ BPX10590
BIT pfsi_sysplex :1; /* USS started SYSPLEX(YES) @E0A*/ BPX10600
BIT pfsi_kernelready_supp :1; /* ot_kernelready supported @EEA*/ BPX10610
BIT :1; /* Reserved @E0C*/ BPX10620
/* +19 Flags2 */ BPX10630
BIT pfsi_commbuff :1; /*s Common Buffers Supported @DWA*/ BPX10640
BIT pfsi_modind :1; /*s Module Indirection for all routine BPX10650
addresses supplied @E1A*/ BPX10660
BIT pfsi_attrcreat :1; /*s Attr supported on create @E2A*/ BPX10670
BIT pfsi_stoppfs :1; /*s Stop PFS is supported @E3A*/ BPX10680
BIT pfsi_sharessupported :1; /*s shares supported @E4A*/ BPX10690
BIT pfsi_opentokens :1; /*s Open context used. @E7A*/ BPX10700
BIT pfsi_concurrentmount :1; /*S on when PFS supports concurrent BPX10710
mounts and unmounts. @E8A*/ BPX10720
BIT pfsi_amode64 :1; /*S PFS runs AMODE 64 @EKA*/ BPX10730
/* +1A Flags3 */ BPX10740
BIT pfsi_osync :1; /*S vn_open does fsync for O_SYNC @PMA*/ BPX10750
BIT pfsi_srb :1; /*S SRM Mode supported @DGA*/ BPX10760
BIT pfsi_asyio :1; /*S Async I/O supported @DGA*/ BPX10770
BIT pfsi_rddplus :1; /*S ReadDirPlus supported @DHA*/ BPX10780
BIT pfsi_64datoff :1; /*S 64-Bit Real Page Supported @PMA*/ BPX10790
BIT pfsi_nolgfile :1; /*S O_NOLARGEFILE size checking @PMA*/ BPX10800
BIT pfsi_addr64 :1; /*S 64-Bit User areas supported @PMA*/ BPX10810
BIT pfsi_ipv6 :1; /*S IPv6 Capable @DVA*/ BPX10820
/* +1B Flags4 */ BPX10830
BIT pfsi_romntclient :1; /*S=1: Read-only mounts on other than BPX10840
owner should be client BPX10850
(i.e. served) BPX10860
=0: Such mounts should be local BPX10870
(i.e. file system is sysplex BPX10880
aware) @PEC*/ BPX10890
BIT pfsi_rwmntclient:1; /*S=1: Read-write mounts on other than BPX10900
owner should be client BPX10910
=0: Such mounts should be local BPX10920
@DOC*/ BPX10930
BIT pfsi_usethreads :1; /*S File system requests support for BPX10940
the osi_thread function @D7A*/ BPX10950
BIT pfsi_disableLLA :1; /*S File system requests no lookup BPX10960
look aside support @D5A*/ BPX10970
BIT pfsi_stayalone :1; /*S File system requests no other PFS BPX10980
be started in this A.S. */ BPX10990
BIT pfsi_immeddel :1; /*S Removed files are deleted if, or BPX11000
when, their open count is 0 @D6A*/ BPX11010
BIT pfsi_cpfs :1; /*S File system is written in C. Invoke BPX11020
w/ a preinit. C environment */ BPX11030
BIT pfsi_datoffmove :1; /*S File system supports DATOFF move BPX11040
for page read operations */ BPX11050
struct vnoptab BPX11060
* _PTR32 pfsi_vnop; /*S+1C Address of the Vnode ops tbl @E5C*/ BPX11070
int pfsi_tcbaddr; /* +20 Address of the TCB for this PFS */ BPX11080
BPXL32 pfsi_initcompecb; /* +24 ECB that the PFS posts when BPX11090
initialization is complete. @E5C*/ BPX11100
char pfsi_pfstype; /*S+28 The type of the PFS */ BPX11110
/* +29 More PFS Input/Output FLAGS @EGA*/ BPX11120
BIT :8;/* +29 IN: Set by LFS as input @EGA*/ BPX11130
BIT pfsi_asyncIOANR:1;/* +2A OUT: AsyncIO for ANR supported BPX11140
@EGA*/ BPX11150
BIT pfsi_rddcursor :1;/* OUT: PFS supports index to cursor BPX11160
conversion for readdir @EJA*/ BPX11170
BIT :6;/* OUT: Set by PFS as output @EGA*/ BPX11180
BIT :8;/* +2B reserved @EGA*/ BPX11190
BPXL32 pfsi_pfsecb; /* +2C ECB that is posted when the Kernel BPX11200
is terminating. The PFS should BPX11210
be waiting on this ECB. @E5C*/ BPX11220
/* Pathconf() values as applicable: */ BPX11230
int pfsi_pipebuf; /*S+30 pipe_buf */ BPX11240
int pfsi_maxcanon; /*S+34 max_canon */ BPX11250
int pfsi_maxinput; /*S+38 max_input */ BPX11260
/* +3C Flags: */ BPX11270
BIT pfsi_chownrstd :1; /*S POSIX_Chown_restr */ BPX11280
BIT :7; /* Reserved */ BPX11290
char pfsi_rsvd3[2]; /* +3D Reserved */ BPX11300
char pfsi_vdisable; /*S+3F _posix_vdisable */ BPX11310
BPX11320
char * _PTR32 pfsi_restart; /* +40 Addr of Restart Option Byte@E5C*/ BPX11330
struct dmpinf BPX11340
* _PTR32 pfsi_dumpptr; /* +44 Address of Dump Information @E5C*/ BPX11350
BPX11360
char pfsi_asname[8]; /* +48 Address Space Name of PFS @D1A*/ BPX11370
char pfsi_ep[8]; /* +50 Entry point attached during BPX11380
initialization @D1A*/ BPX11390
int pfsi_pfsid; /* +58 Pfs Identifier @P5A*/ BPX11400
struct ot_statflags BPX11410
* _PTR32 pfsi_otstatptr; /* +5C osi_thread status flags @E5C*/ BPX11420
char pfsi_rsvd4[8]; /* +60 Reserved @P5C*/ BPX11430
/* Inserts for Dump Titles: */ BPX11440
char pfsi_compon[3]; /*S+68 This PFS's Component Prefix */ BPX11450
char pfsi_compid[5]; /*S+6B This PFS's Component ID */ BPX11460
char pfsi_startname[8];/* +70 Start name for PFS @DAA*/ BPX11470
int pfsi_pfspc; /* +78 PfsPc Number, Colony Only @PMA*/ BPX11480
char pfsi_rsvd5[8]; /* +7C Reserved @E3A*/ BPX11490
char pfsi_complow; /* +84 low reason code value @E3A*/ BPX11500
char pfsi_comphigh; /* +85 high reason code value @E3A*/ BPX11510
char pfsi_rsvd6[2]; /* +86 Reserved @E5C*/ BPX11520
char pfsi_pooltoken[8];/* +88 Storage token for this PFS @E5A*/ BPX11530
char pfsi_rsvd7[16]; /* +90 Reserved @E5A*/ BPX11540
BPX11550
} PFSI ; BPX11560
BPX11570
/*-------------------------------------------------------------*/ BPX11580
/* pfsi_restart - Restart Option Values */ BPX11590
/* Example usage: *(P->pfsi_restart) = RESTART_NONE; */ BPX11600
/*-------------------------------------------------------------*/ BPX11610
#define RESTART_WTOR 0 /* Prompt operator first */ BPX11620
#define RESTART_AUTO 1 /* Restart automatically */ BPX11630
#define RESTART_NONE 2 /* Do not restart this PFS */ BPX11640
#define RESTART_KILL 3 /* Terminate OMVS too */ BPX11650
BPX11660
#define RESTART_RCWTOR 4 /* Restart Colony and Prompt BPX11670
operator for PFS restart @D1A*/ BPX11680
#define RESTART_RCAUTO 5 /* Restart Colony and BPX11690
Automatic PFS restart @D1A*/ BPX11700
#define RESTART_RCNONE 6 /* Bring down Colony and BPX11710
No PFS restart tried @D1A*/ BPX11720
#define RESTART_PFSCTL 7 /* Wait for pfsctl(Restart) BPX11730
@PJA*/ BPX11740
BPX11750
/*-------------------------------------------------------------*/ BPX11760
/* pfsi_pfstype - PFS Type Values */ BPX11770
/* Example usage: P->pfsi_pfstype = MNT_FSTYPE_REMOTE; */ BPX11780
/*-------------------------------------------------------------*/ BPX11790
/* These are defined with the common structures in */ BPX11800
/* BPXYVFSI as the constants starting with MNT_FSTYPE_ */ BPX11810
BPX11820
/*-------------------------------------------------------------*/ BPX11830
/* pfsi_ver - Version Values */ BPX11840
/*-------------------------------------------------------------*/ BPX11850
#define PFSI_VER0 0 /* Initial Version */ BPX11860
#define PFSI_VER1 1 /* Second Version */ BPX11870
#define PFSI_VER2 2 /* Second Version + HOTC @D4A*/ BPX11880
BPX11890
/*-------------------------------------------------------------*/ BPX11900
/* pfsi_otstatptr - pointer to status flags for the PFS @P5A*/ BPX11910
/*-------------------------------------------------------------*/ BPX11920
struct ot_statflags { /* osi_thread status flags */ BPX11930
BIT ot_available :1; /* Thread services are available*/ BPX11940
BIT ot_kernelready :1; /* Syscalls can be made @EEA*/ BPX11950
BIT :6; BPX11960
} ; BPX11970
BPX11980
/*-------------------------------------------------------------*/ BPX11990
/* pfsi_vnop - VNODE Operations Table (BPXZVNOP)*/ BPX12000
/* This table is built by the PFS and returned to the LFS */ BPX12010
/*-------------------------------------------------------------*/ BPX12020
#define VN_OPEN 0 BPX12030
#define VN_CLOSE 1 BPX12040
#define VN_RDWR 2 BPX12050
#define VN_IOCTL 3 BPX12060
#define VN_GETATTR 4 BPX12070
#define VN_SETATTR 5 BPX12080
#define VN_ACCESS 6 BPX12090
#define VN_LOOKUP 7 BPX12100
#define VN_CREATE 8 BPX12110
#define VN_REMOVE 9 BPX12120
#define VN_LINK 10 BPX12130
#define VN_RENAME 11 BPX12140
#define VN_MKDIR 12 BPX12150
#define VN_RMDIR 13 BPX12160
#define VN_READDIR 14 BPX12170
#define VN_SYMLINK 15 BPX12180
#define VN_READLINK 16 BPX12190
#define VN_FSYNC 17 BPX12200
#define VN_TRUNC 18 BPX12210
#define VN_INACTIVE 19 BPX12220
#define VN_AUDIT 20 BPX12230
#define VN_PATHCONF 21 /*@D5A*/ BPX12240
#define VN_RECOVERY 22 /*@D5A*/ BPX12250
#define VN_LOCKCTL 23 BPX12260
#define VN_CANCEL 24 /*@DGA*/ BPX12270
#define VN_SELECT 25 BPX12280
#define VN_ACCEPT 26 BPX12290
#define VN_BIND 27 BPX12300
#define VN_CONNECT 28 BPX12310
#define VN_GETNAME 29 BPX12320
#define VN_SOCKOPT 30 BPX12330
#define VN_LISTEN 31 BPX12340
#define VN_READWRITEV 32 BPX12350
#define VN_SNDRCV 33 BPX12360
#define VN_SNDTORCVFM 34 BPX12370
#define VN_SRMSG 35 BPX12380
#define VN_SHUTDOWN 37 BPX12390
BPX12400
#define VN_FSR 38 /*@DLA*/ BPX12410
#define VN_FSRF 39 /*@DLA*/ BPX12420
#define VN_FSRM 40 /*@DLA*/ BPX12430
#define VN_SRX 42 /*@DLA*/ BPX12440
#define VN_ANR 43 /*@DLA*/ BPX12450
BPX12460
#define MAX_VNOPS 44 BPX12470
BPX12480
BPX12490
typedef void VNOP_OP(); /* Generalized Vnode Op */ BPX12500
#pragma linkage(VNOP_OP, OS) /* Is called with OS lnkg */ BPX12510
BPX12520
struct vnoptab { /* The Vnode Op Table */ BPX12530
CBHDR vnop_hdr; BPX12540
BPX12550
VNOP_OP * _PTR32 vnop_op[MAX_VNOPS]; /*@EKC*/ BPX12560
}; BPX12570
BPX12580
#define VNOP_ID "VNOP" BPX12590
#define VNOP_HDR {{VNOP_ID}, sizeof(struct vnoptab)} BPX12600
BPX12610
/* Example initialization of this table: BPX12620
| * Get storage, init hdr & zero out rest * BPX12630
| struct vnoptab pfstab = { VNOP_HDR }; BPX12640
| * Set the address of each supported op * BPX12650
| pfstab.vnop_op[VN_OPEN] = pfs_open; BPX12660
| pfstab.vnop_op[VN_CLOSE] = pfs_close; BPX12670
| pfstab.vnop_op[VN_RDWR] = pfs_rdwr; BPX12680
| . . . etc. BPX12690
| * Return the table address to the LFS * BPX12700
| P->pfsi_vnop = &pfstab; BPX12710
*/ BPX12720
BPX12730
/*-------------------------------------------------------------*/ BPX12740
/* pfsi_vfso - VFS Operations Table (BPXZVFSO)*/ BPX12750
/* This table is built by the PFS and returned to the LFS */ BPX12760
/*-------------------------------------------------------------*/ BPX12770
#define VFS_MOUNT 0 BPX12780
#define VFS_UMOUNT 1 BPX12790
#define VFS_SYNC 2 BPX12800
#define VFS_INACT 3 /*@PPA*/ BPX12810
#define VFS_STATFS 4 BPX12820
#define VFS_VGET 6 BPX12830
#define VFS_RECOVERY 7 BPX12840
#define VFS_BATSEL 9 BPX12850
#define VFS_GETHOST 10 BPX12860
#define VFS_SOCKET 11 BPX12870
#define VFS_NETWORK 12 BPX12880
#define VFS_PFSCTL 13 BPX12890
#define MAX_VFSOPS 14 BPX12900
BPX12910
BPX12920
typedef void VFS_OP(); /* Generalized VFS Op */ BPX12930
#pragma linkage(VFS_OP, OS) /* Is called with OS lnkg */ BPX12940
BPX12950
struct vfsotab { /* The VFS Op Table */ BPX12960
CBHDR vfso_hdr; BPX12970
BPX12980
VFS_OP * _PTR32 vfso_op[MAX_VFSOPS]; /* @E5C*/ BPX12990
}; BPX13000
BPX13010
#define VFSO_ID "VFSO" BPX13020
#define VFSO_HDR {{VFSO_ID}, sizeof(struct vfsotab)} BPX13030
BPX13040
/*-------------------------------------------------------------*/ BPX13050
/* Dump Information - used by the PFS to add LFS address space */ BPX13060
/* and data space areas to the dumps that are taken by the PFS.*/ BPX13070
/*-------------------------------------------------------------*/ BPX13080
struct pfsi_dumpent { /* Individual Dump Area Entry: */ BPX13090
char pfsi_dumpstoken[8]; /* Stoken of the space */ BPX13100
int pfsi_dumpalet; /* Reserved @P8C*/ BPX13110
int pfsi_dumpflag; /* Reserved @P8C*/ BPX13120
char * _PTR32 pfsi_dumpstart;/* Starting address @E5C*/ BPX13130
char * _PTR32 pfsi_dumpend; /* Ending address @E5C*/ BPX13140
} ; BPX13150
BPX13160
struct dmpinf { /* Area pointed to by pfsi_dumpptr */ BPX13170
int pfsi_dumpents; /* Number of Dump Area Entries */ BPX13180
char pfsi_dumpid[4]; /* EBCDIC ID - FDUM @P8A*/ BPX13190
char pfsi_rsvd7[8]; /* Reserved @P8C*/ BPX13200
struct pfsi_dumpent /* Array of Dump Areas, actual */ BPX13210
pfsi_dumpdata[16]; /* number of entries is in */ BPX13220
} ; /* pfsi_dumpents. */ BPX13230
BPX13240
BPX13250
/*------------------------------------------------------------------*/ BPX13260
/* PFSNAME - Name of the PFS from TYPE operand of FILESYSTYPE. */ BPX13270
/* This string is blank padded and not null terminated. */ BPX13280
/*------------------------------------------------------------------*/ BPX13290
typedef struct s_pfsname { BPX13300
char pfsname[8]; /* PFS Type or Name */ BPX13310
} PFSNAME ; BPX13320
BPX13330
/*------------------------------------------------------------------*/ BPX13340
/* pfctl buffer header for reason code text */ BPX13350
/*----------------------------------------------------------- 12@E3A*/ BPX13360
typedef struct pfsctl_et_hdr { BPX13370
short et_rqst; /* type of text requested pfstcl_et_xx */ BPX13380
short rsvd; BPX13390
char et_reasoncd[4]; BPX13400
}; BPX13410
BPX13420
#define pfsctl_et_desc 0 BPX13430
#define pfsctl_et_action 1 BPX13440
#define pfsctl_et_modname 2 BPX13450
#define pfsctl_errortext 0xc000000b /* pfsctl cmd for error text */ BPX13460
BPX13470
#define PC_SHUTTINGDOWNFS 0xC0000015 /* pfsctl for shutdown @E4A*/ BPX13480
#define PC_TYPEFILESYS 1 /* shutdown=filesys @E4A*/ BPX13490
#define PC_TYPEFILEOWNER 2 /* shutdown=fileowner @E4A*/ BPX13500
#define PC_TYPEOMVS 3 /* omvs shutdown @E4A*/ BPX13510
BPX13520
#define PC_RECYCLEDONE 0xC0000016 /* pfsctl to notify PFS that BPX13530
recycle is complete @EAA*/ BPX13540
#define PC_ISSRCADDR 0xC0000018 /* inet6_is_srcaddr() @EIA*/ BPX13550
#define PC_OWNEROK 0xC000001C /* query if OK for this system BPX13560
to become owner @PUA*/ BPX13570
BPX13580
#pragma page() BPX13590
/********************************************************************/ BPX13600
/* */ BPX13610
/* File Exporter Exit Interfaces */ BPX13620
/* */ BPX13630
/********************************************************************/ BPX13640
BPX13650
/*-----------------------------------------------------------------*/ BPX13660
/* Exit Parameter Structure (BPXZGXPL)*/ BPX13670
/*-----------------------------------------------------------------*/ BPX13680
typedef struct s_gxpl { BPX13690
char gx_id[4]; /*+00 EBCDIC ID */ BPX13700
short gx_ver; /*+04 Gxpl Version number */ BPX13710
short gx_len; /*+06 Length of Gxpl structure */ BPX13720
BPX13730
short gx_op; /*+08 Operation Code */ BPX13740
/*+0A Flags: */ BPX13750
BIT gx_postop :1; /* 1=PostOp Call */ BPX13760
BIT gx_readwrite :1; /* 0=Read mode, 1=Write mode */ BPX13770
BIT gx_eom :1; /* 1=Called from user EOM */ BPX13780
BIT gx_trunc :1; /* 1=File Size Change */ BPX13790
BIT gx_expopen :1; /* v_export catchup open @E9A*/ BPX13800
BIT gx_nodump :1; /* Suppress Dump @E9A*/ BPX13810
BIT :10; BPX13820
OSI * _PTR32 gx_osi; /*+0C OSI address @E5C*/ BPX13830
BPX13840
int gx_volhdl[4]; /*+10 VolHdl from v_export */ BPX13850
int gx_anchor[2]; /*+20 Exit Anchor */ BPX13860
int gx_state[2]; /*+28 Exit State Area */ BPX13870
/* File Identifiers: */ BPX13880
FID gx_fid1; /*+30 The principal target */ BPX13890
FID gx_fid2; /*+38 The secondary target */ BPX13900
FID gx_fid3; /*+40 for rename, the to-dir */ BPX13910
FID gx_fid4; /*+48 for rename, the to-file */ BPX13920
BPX13930
int gx_opretval; /*+50 Op Return Value to PostOp */ BPX13940
int gx_retcode; /*+54 Exit Return Code */ BPX13950
union { /*@E9A*/ BPX13960
int gxU1_rsncode; /*+58 Exit Reason Code @E9C*/ BPX13970
void *gxU1_rcvysdwa; /*+58 or Recovery SDWA/0 @E9A*/ BPX13980
} gxU1; /*@E9A*/ BPX13990
char * _PTR32 gx_optparm; /*+5C Optional Parameter @E5C*/ BPX14000
BPX14010
char gx_lfs[8]; /*+60 Reserved for the LFS */ BPX14020
char rsvd1[8]; /*+68 Reserved for expansion */ BPX14030
} GXPL ; BPX14040
BPX14050
#define GXPL_ID "GXPL" BPX14060
#define GXPL_VERSION 1 BPX14070
BPX14080
#define gx_rsncode gxU1.gxU1_rsncode /* Exit Reason Code @E9A*/ BPX14090
#define gx_rcvysdwa gxU1.gxU1_rcvysdwa /* Rcvy SDWA or 0 @E9A*/ BPX14100
/*---------------------------------------------------------------*/ BPX14110
/* Constants for gx_op */ BPX14120
/*---------------------------------------------------------------*/ BPX14130
#define GXPL_INIT 0x1001 /* Initialization Call */ BPX14140
#define GXPL_EXPCMD 0x1002 /* Exporter Command */ BPX14150
#define GXPL_RECOVERY 0x1003 /* Recovery Call */ BPX14160
#define GXPL_UNMOUNT 0x1004 /* Unmount Call @DBA*/ BPX14170
#define GXPL_UNEXPORT 0x1005 /* Unexport Call @DBA*/ BPX14180
#define GXPL_EXPTERM 0x1006 /* Exporter has terminated */ BPX14190
#define GXPL_TERM 0x1007 /* Termination Call */ BPX14200
#define GXPL_MTPTCHG 0x1008 /* Mount Point Change @PNA*/ BPX14210
BPX14220
/* The Vnode operation values are the same as the pfsi_vnop BPX14230
| constants listed above, i.e. VN_OPEN, VN_RDWR, etc. BPX14240
*/ BPX14250
BPX14260
/*--------------------------------------------------------------*/ BPX14270
/* Byte Range Lock Parameters */ BPX14280
/*--------------------------------------------------------------*/ BPX14290
struct gxlk { BPX14300
int gxl_version; /* gxlk version number */ BPX14310
int gxl_lckcmd; /* Lock Cmd: F_SETLK, etc. */ BPX14320
int gxl_lcktype; /* Lock Type: F_RDLCK, etc. */ BPX14330
int gxl_brbh; /* Range Beginning, high word */ BPX14340
int gxl_brbl; /* Range Beginning, low word */ BPX14350
int gxl_breh; /* Range End, high word */ BPX14360
int gxl_brel; /* Range End, low word */ BPX14370
int gxl_blkpid; /* Blocking PID */ BPX14380
int rsvd[2]; BPX14390
}; BPX14400
BPX14410
/* gxl_lckcmd and gxl_lcktype values are defined in fcntl.h. */ BPX14420
BPX14430
#define GXL_VER0 0 /* First gxlk version */ BPX14440
#define GXL_EOFH 0x7FFFFFFF /* End-Of-File High word */ BPX14450
#define GXL_EOFL 0xFFFFFFFF /* Low word */ BPX14460
BPX14470
/* gx_optparm values for GXPL_MTPTCHG @05A*/ BPX14480
/* The field must be cast to an (int) to be used here. @05A*/ BPX14490
/*@05A*/ BPX14500
#define GXPL_MTPT_UNMOUNT 0 /* Mount Point Unmounted @05A*/ BPX14510
#define GXPL_MTPT_MOUNT 1 /* Mounting on Mt Pt @05A*/ BPX14520
#define GXPL_REMOUNT_RO 3 /* File Sys ReMount(RO) @05A*/ BPX14530
#define GXPL_REMOUNT_RW 4 /* File Sys ReMount(RW) @05A*/ BPX14540
BPX14550
/*-----------------------------------------------------------------*/ BPX14560
/* Exit Routine Prototype - as called by the LFS */ BPX14570
/*-----------------------------------------------------------------*/ BPX14580
#pragma linkage(gx_exitrtn, OS) BPX14590
void gx_exitrtn (GXPL *); BPX14600
BPX14610
#pragma page() BPX14620
/********************************************************************/ BPX14630
/* */ BPX14640
/* Operating System Interface (OSI) Services */ BPX14650
/* */ BPX14660
/********************************************************************/ BPX14670
BPX14680
/*------------------------------------------------------------------*/ BPX14690
/* Macros used to invoke the OSI services */ BPX14700
/* */ BPX14710
/* The OSIT table address must be saved during initialization */ BPX14720
/* and made available at the time of an OSI service call. */ BPX14730
/* Refer to the prolog for details on using this macro. */ BPX14740
/*------------------------------------------------------------------*/ BPX14750
#ifndef _OSIT_PTR /* Establish the default osi_ptr */ BPX14760
#define _OSIT_PTR osit_ptr BPX14770
#endif BPX14780
BPX14790
/*------------------------------------------------------------------*/ BPX14800
/* OSI Service Names */ BPX14810
/* The OSI services are called with these names and the macros */ BPX14820
/* use the OSIT table to find the associated routine. */ BPX14830
/* */ BPX14840
/* For example: osi_wait(OSI_SETUP, osiaddr, &rc); */ BPX14850
/*------------------------------------------------------------------*/ BPX14860
#define osi_getvnode _OSICALL(GETVNODE) BPX14870
#define osi_mountstatus _OSICALL(MOUNTSTATUS) /*@D4A*/ BPX14880
#define osi_ctl _OSICALL(CTL) /*@DAA*/ BPX14890
#define osi_selpost _OSICALL(SELPOST) BPX14900
#define osi_wait _OSICALL(WAIT) BPX14910
#define osi_post _OSICALL(POST) BPX14920
#define osi_signal _OSICALL(SIGNAL) BPX14930
#define osi_sleep _OSICALL(SLEEP) /*@D6A*/ BPX14940
#define osi_wakeup _OSICALL(WAKEUP) /*@D6A*/ BPX14950
#define osi_kmsgget _OSICALL(KMSGGET) /*@D6A*/ BPX14960
#define osi_kmsgsnd _OSICALL(KMSGSND) /*@D6A*/ BPX14970
#define osi_kmsgrcv _OSICALL(KMSGRCV) /*@D6A*/ BPX14980
#define osi_kmsgctl _OSICALL(KMSGCTL) /*@D6A*/ BPX14990
#define osi_kipcget _OSICALL(KIPCGET) /*@DDA*/ BPX15000
#define osi_uiomove _OSICALL(UIOMOVE) /* @D7A*/ BPX15010
#define osi_copyin _OSICALL(COPYIN) /* @D7A*/ BPX15020
#define osi_copyout _OSICALL(COPYOUT) /* @D7A*/ BPX15030
#define osi_thread _OSICALL(THREAD) /* @D7A*/ BPX15040
#define osi_getcred _OSICALL(GETCRED) /* @P6A*/ BPX15050
#define osi_upda _OSICALL(UPDA) /*@DGA*/ BPX15060
#define osi_sched _OSICALL(SCHED) /*@DGA*/ BPX15070
#define osi_lkfs _OSICALL(LKFS) /*@DJA*/ BPX15080
#define osi_ctrace _OSICALL(CTRACE) /*@DIA*/ BPX15090
#define osi_socket _OSICALL(SOCKET) /*@DKA*/ BPX15100
#define osi_copy64 _OSICALL(COPY64) /*@PMA*/ BPX15110
#define osi_buffcache _OSICALL(BUFFCACHE) /*@E5A*/ BPX15120
BPX15130
/* Internal Macro used to invoke the OSI_ service from the OSIT */ BPX15140
#ifndef _OSICALL BPX15150
#define _OSICALL(op) ((_OSIT_PTR) -> osit_ ## op) BPX15160
#endif BPX15170
BPX15180
/*------------------------------------------------------------------*/ BPX15190
/* OTHDPRM - Parameter structure input to osi_thread (BPXZTPRM)*/ BPX15200
/*------------------------------------------------------------------*/ BPX15210
typedef struct s_othdprm { BPX15220
CBHDR ot_hdr; /*+00 Id & Length */ BPX15230
char ot_modname[64]; /*+08 Name of module to fetch */ BPX15240
void * _PTR32 ot_parms; /*+48 Pointer to parms to pass BPX15250
to module and(maybe) exit @E5C*/ BPX15260
char ot_exitname[64]; /*+4C Name of exit routine */ BPX15270
/*+8C Input option flags */ BPX15280
BIT ot_sigwait :1; /* Signal enabled wait */ BPX15290
BIT ot_nowait :1; /* no wait */ BPX15300
BIT ot_releasemods:1; /* release modules when done */ BPX15310
BIT ot_rsvrd1:29; /* reserved */ BPX15320
char ot_rsrvd2[8]; /*+90 reserved @DDC*/ BPX15330
} OTHDPRM ; /* @D7A*/ BPX15340
BPX15350
#define OTHDPRM_ID "TPRM" BPX15360
#define OTHDPRM_HDR {{OTHDPRM_ID}, sizeof(OTHDPRM)} BPX15370
BPX15380
/*------------------------------------------------------------------*/ BPX15390
/* OTHDCRCV - osi_thread called routine recovery block */ BPX15400
/* */ BPX15410
/* This is the second parameter passed to the routine specified */ BPX15420
/* in ot_modname and the "PARAM" for the ESTAEX routine. */ BPX15430
/*------------------------------------------------------------------*/ BPX15440
typedef struct s_othdcrcv { BPX15450
void * _PTR32 otr_rcvyrtn; /*+00 Pointer to called module's BPX15460
recovery routine @E5C*/ BPX15470
void * _PTR32 otr_parms; /*+04 Pointer to parms to pass BPX15480
to called module's BPX15490
recovery routine @E5C*/ BPX15500
BPXL32 reserved1; /*+08 Reserved @E5C*/ BPX15510
BPXL32 reserved2; /*+0C Reserved @E5C*/ BPX15520
char work_area[496]; /*+10 Work area for ESTAEX rtn */ BPX15530
} OTHDCRCV ; /* @DMA*/ BPX15540
BPX15550
/*------------------------------------------------------------------*/ BPX15560
/* OGCDPRM - Parameter structure input to osi_getcred (BPXZCPRM)*/ BPX15570
/*------------------------------------------------------------------*/ BPX15580
typedef struct s_ogcdprm { BPX15590
CBHDR oc_hdr; /*+00 Id & Length I */ BPX15600
int oc_real_uid; /*+08 Real uid O */ BPX15610
int oc_effective_uid; /*+0C Effective uid O */ BPX15620
int oc_saved_uid; /*+10 Saved uid O */ BPX15630
int oc_real_gid; /*+14 Real gid O */ BPX15640
int oc_effective_gid; /*+18 Effective gid O */ BPX15650
int oc_saved_gid; /*+1C Saved gid O */ BPX15660
int oc_maxsgids; /*+20 Maximum number of BPX15670
supplementary gids BPX15680
there is room for. BPX15690
Set to actual number BPX15700
if not room for all I/O */ BPX15710
int oc_numsgids; /*+24 Number of supplementary BPX15720
gids returned O */ BPX15730
int * _PTR32 oc_gid_list; /*+28 Pointer to array of BPX15740
supplementary gids I @E5C*/ BPX15750
} OGCDPRM ; /* @P6A*/ BPX15760
BPX15770
#define OGCDPRM_ID "CPRM" BPX15780
#define OGCDPRM_HDR {{OGCDPRM_ID}, sizeof(OGCDPRM)} BPX15790
BPX15800
/*------------------------------------------------------------------*/ BPX15810
/* Time Interval - Input to osi_sleep and osi_wait @P8A*/ BPX15820
/* Double word S/390 timer units, or (time[0]*1.04) sec. approx. */ BPX15830
/*------------------------------------------------------------------*/ BPX15840
struct time_int { BPX15850
BPXUL32 time[2]; /*@E5C*/ BPX15860
}; BPX15870
BPX15880
/*------------------------------------------------------------------*/ BPX15890
/* Share Reservation Support @E6A*/ BPX15900
/*------------------------------------------------------------------*/ BPX15910
/* Open Type constants for vn_open @E6A*/ BPX15920
#define VNOPEN_FILE 0 /* For open() or v_open() @E6A*/ BPX15930
#define VNOPEN_NLM_SHR 5 /* For NLM Share @E6A*/ BPX15940
#define VNOPEN_INTERNAL 99 /* For LFS Internal Open @E6A*/ BPX15950
/* Checking Requested for vn_rdwr & vn_setattr @E6A*/ BPX15960
#define VNSHRCHK_NONE 0 /* No Checking @E6A*/ BPX15970
#define VNSHRCHK_ADV 1 /* Advisory Check, V4 only @E6A*/ BPX15980
#define VNSHRCHK_MAND 3 /* Mandatory Check, all @E6A*/ BPX15990
BPX16000
BPX16010
/*------------------------------------------------------------------*/ BPX16020
/* OSI LkFs Parameter */ BPX16030
/* Passed to osi_LkFs service. @DJA*/ BPX16040
/*------------------------------------------------------------------*/ BPX16050
typedef struct s_osilparm { /* osi LkFs parameter block @DJA*/ BPX16060
int osil_length; /* Length @DJA*/ BPX16070
TOKSTR * _PTR32 osil_tokstr; /* Cjar pointer @E5C*/ BPX16080
int osil_devno; /* Device number @DJA*/ BPX16090
int osil_cmdcode; /* Command Code (lock or unlk) @DJA*/ BPX16100
GTOK osil_handle; /* Vfs lock handle @DJA*/ BPX16110
} OSILPARM; /* @DJA*/ BPX16120
BPX16130
#define OSIL_LOCK 1 /* Lock cmd code for osil_parm @DJA*/ BPX16140
#define OSIL_UNLK 2 /* Unlock cmd code for osil_parm @DJA*/ BPX16150
BPX16160
BPX16170
/*------------------------------------------------------------------*/ BPX16180
/* osi_copy64 Parameter @PMA*/ BPX16190
/*------------------------------------------------------------------*/ BPX16200
struct copy64_struct { /*@PMA*/ BPX16210
int c64_length; /* Struct Length */ BPX16220
BIT :20; /* Flags */ BPX16230
BIT c64_dontincrsrc :1; /* 0=Add Len to Source */ BPX16240
BIT c64_dontincrdest :1; /* 0=Add Len to Dest */ BPX16250
BIT c64_gotrecovery :1; /* 1=PFS has own FRR */ BPX16260
BIT c64_direction :1; /* 0=Out, 1=In */ BPX16270
BIT c64_keybits :4; /* User's storage key */ BPX16280
BIT :4; BPX16290
ADDR64 c64_sourcebuff; /* Source */ BPX16300
ADDR64 c64_destbuff; /* Destination */ BPX16310
int c64_CLrsvd; /* (reserved) */ BPX16320
int c64_copylen; /* Move length */ BPX16330
int c64_sourcealet; BPX16340
int c64_destalet; BPX16350
int c64_rc; BPX16360
int c64_rsn; BPX16370
char c64_workarea[64]; BPX16380
}; BPX16390
BPX16400
#define C64_OUT 0 BPX16410
#define C64_IN 1 BPX16420
BPX16430
/*------------------------------------------------------------------*/ BPX16440
/* osi_buffcache parameter @E5A*/ BPX16450
/*------------------------------------------------------------------*/ BPX16460
struct osi_bfche_struct { /* @E5A*/ BPX16470
char osi_bchs_name[4]; /* Eyecatcher ("BCHS") */ BPX16480
int osi_bchs_length; /* Length of this structure - BPX16490
including the service-dependent BPX16500
part that begins at BPX16510
osi_bchs_variable */ BPX16520
int osi_bchs_fcn; /* Requested service ID */ BPX16530
int osi_bchs_rv; /* Return value */ BPX16540
int osi_bchs_rc; /* Return code */ BPX16550
int osi_bchs_rs; /* Reason code */ BPX16560
char osi_bchs_sttok[8]; /* Storage token */ BPX16570
char osi_bchs_rsvd1[24];/* Reserved for future use */ BPX16580
char osi_bchs_fcnspecific[1]; /* Remainder depends on the BPX16590
service selected by bchs_fcn */ BPX16600
}; BPX16610
BPX16620
#define OSI_BCHS_ID "BCHS" /* Acronym for bfche_struct @E5A*/ BPX16630
BPX16640
/*------------------------------------------------------------------*/ BPX16650
/* osi_upd_filesys structure */ BPX16660
/*------------------------------------------------------------------*/ BPX16670
struct osi_upd_filesys { BPX16680
char osi_upd_name[4]; /* Eyecatcher ("UPDA") */ BPX16690
int osi_upd_devno; /* mt_devno from vfs_mount */ BPX16700
short osi_upd_type; /* osi_regstatus, osi_excpstatus, BPX16710
or osi_mountparm entry types */ BPX16720
short osi_upd_textlen; /* text length or 0 to remove */ BPX16730
char osi_upd_textstring[512]; /* text string */ BPX16740
}; /* @EAA*/ BPX16750
BPX16760
#define OSI_UPD_ID "UPDA" /* @EAA*/ BPX16770
BPX16780
/*------------------------------------------------------------------*/ BPX16790
/* osi_quiesce_struct structure */ BPX16800
/*------------------------------------------------------------------*/ BPX16810
struct osi_quiesce_struct { BPX16820
char osi_quiesce_name[4]; /* Eyecatcher ("OSIQ") */ BPX16830
unsigned int osi_quiesce_version; /* version */ BPX16840
unsigned int osi_quiesce_devno; /* mt_devno */ BPX16850
unsigned int osi_quiesce_pid; /* pid of quiesce caller */ BPX16860
BIT osi_quiesce_noops :1; BPX16870
BIT osi_quiesce_backup :1; BPX16880
BIT osi_quiesce_clone :1; BPX16890
BIT osi_quiesce_delete :1; BPX16900
BIT osi_quiesce_checkonly :1; /* check handle only BPX16910
during unquiesce @EJA*/ BPX16920
BIT :3; BPX16930
char osi_quiesce_rsvd1[3]; BPX16940
unsigned int osi_quiesce_handle; /* quiesce instance id */ BPX16950
char osi_quiesce_jobname[8]; BPX16960
char osi_quiesce_sysname[8]; BPX16970
int osi_quiesce_pfsid; /* pfsi_pfsid */ BPX16980
char osi_quiesce_rsvd2[12]; BPX16990
}; BPX17000
BPX17010
#define OSI_QUIESCE_ID "OSIQ" /* @EFA*/ BPX17020
#define OSI_QUIESCEV1 1 /* version 1 for osi_quiesce_version @EFA*/ BPX17030
BPX17040
/*------------------------------------------------------------------*/ BPX17050
/* osi_getmntstat structure */ BPX17060
/*------------------------------------------------------------------*/ BPX17070
struct osi_getmntstat { BPX17080
char osi_getmntstat_name[4]; /* Eyecatcher ("GTMT") */ BPX17090
unsigned int osi_getmntstat_version; /* version */ BPX17100
unsigned int osi_getmntstat_devno; /* mt_devno */ BPX17110
char * _PTR32 osi_getmntstat_bufferaddr; /* buffer for mnte */ BPX17120
unsigned int osi_getmntstat_bufferlen; /* in/out buffer len*/ BPX17130
char osi_getmntstat_rsvd[12]; BPX17140
}; BPX17150
/* @EFA*/ BPX17160
BPX17170
#define OSI_GETMNTSTAT_ID "GTMT" BPX17180
/* eyecatcher for osi_getmntstat_name @EFA*/ BPX17190
#define OSI_GETMNTSTATV1 1 BPX17200
/* version 1 for osi_getmntstat_version @EFA*/ BPX17210
BPX17220
/*------------------------------------------------------------------*/ BPX17230
/* osi_remnt structure */ BPX17240
/*------------------------------------------------------------------*/ BPX17250
struct osi_remnt { BPX17260
char osi_remnt_name[4]; /* Eyecatcher ("RMNT") */ BPX17270
unsigned int osi_remnt_version; /* version */ BPX17280
unsigned int osi_remnt_devno; /* mt_devno */ BPX17290
unsigned int osi_remnt_pfsid; /* pfsi_pfsid */ BPX17300
char osi_remnt_rsvd[16]; BPX17310
}; BPX17320
/* @EFA*/ BPX17330
BPX17340
#define OSI_REMNT_ID "RMNT" BPX17350
/* eyecatcher for osi_remnt_name @EFA*/ BPX17360
#define OSI_REMNTV1 1 BPX17370
/* version 1 for osi_remnt_version @EFA*/ BPX17380
BPX17390
/*------------------------------------------------------------------*/ BPX17400
/* osi_pfsstatusinfo structure */ BPX17410
/* If there is no status information, set the first character of */ BPX17420
/* each status line (osi_pfsstatus_line1, ..._line2 or ..line3) */ BPX17430
/* to blank. */ BPX17440
/*------------------------------------------------------------------*/ BPX17450
struct osi_pfsstatusinfo { BPX17460
char osi_pfsstatus_name[4]; /* Eyecatcher ('PFST') */ BPX17470
unsigned int osi_pfsstatus_version; /* Version */ BPX17480
unsigned int osi_pfsstatus_length; /* Length */ BPX17490
unsigned int osi_pfsstatus_pfsi_pfsid; /* Pfs identifier */ BPX17500
char osi_pfsstatus_line1[60]; BPX17510
char osi_pfsstatus_line2[60]; BPX17520
char osi_pfsstatus_line3[60]; BPX17530
}; /* @PTC@EHA*/ BPX17540
#define OSI_PFSSTATUS_ID "PFST" /* @PTC@EHA*/ BPX17550
#define OSI_PFSSTATUSV1 1 /* @PTC@EHA*/ BPX17560
BPX17570
/*------------------------------------------------------------------*/ BPX17580
/* OSI Services Prototypes */ BPX17590
/*------------------------------------------------------------------*/ BPX17600
typedef void OSI_GETVNODE(int ent, /* Entry Code */ BPX17610
TOKSTR *, /* Object's Parent's Tokstr*/ BPX17620
ATTR *, /* Attr of the new object */ BPX17630
GTOK *, /* PFS File Token for obj */ BPX17640
O_VNTOK *, /* Object's vnode token */ BPX17650
int *retval, int *retcode, int *rsncode); BPX17660
BPX17670
typedef void OSI_MOUNTSTATUS(int ent, /* Entry Code @D4A*/ BPX17680
int devno, /* Devno (mt_stdev) @D5C*/ BPX17690
int *retval, int *retcode, int *rsncode); BPX17700
BPX17710
typedef void OSI_WAIT(int ent, /* Entry Code */ BPX17720
OSI *, /* Caller's (waiter's) OSI */ BPX17730
int *rc, BPX17740
... ); /* waitx parms: @P8A BPX17750
int wait_flags BPX17760
struct time_int * */ BPX17770
BPX17780
typedef void OSI_POST(WPTOK *, /* osi_token of waiter */ BPX17790
int *rc); BPX17800
BPX17810
typedef void OSI_SIGNAL(OSI *, /* Caller's OSI */ BPX17820
int pid, /* Target's osi_pid value */ BPX17830
int sigval, /* Signal to issue */ BPX17840
int sigopt, /* Signal options */ BPX17850
int *retval, int *retcode, int *rsncode); BPX17860
BPX17870
typedef void OSI_SELPOST(SELTOK *, /* Vn_select's select token*/ BPX17880
int *retval, int *retcode, int *rsncode); BPX17890
BPX17900
typedef void OSI_SLEEP(OSI *, /* Caller's OSI @D6A*/ BPX17910
int resid, /* Resource id */ BPX17920
struct time_int *, /* Timeout interval @P8C*/ BPX17930
int *retval, int *retcode, int *rsncode); BPX17940
BPX17950
typedef void OSI_WAKEUP(int resid, /* Resource id @D6A*/ BPX17960
int pfsid, /* Pfs id */ BPX17970
int *retval, int *retcode, int *rsncode); BPX17980
BPX17990
typedef void OSI_KMSGGET(int msgqkey, /* Message Q Id @D6A @D7C*/ BPX18000
int msgflag, /* Flag field */ BPX18010
int *retval, int *retcode, int *rsncode); BPX18020
BPX18030
typedef void OSI_KMSGSND(int msgqkey, /* Message Q Id @D6A @D7C*/ BPX18040
void *msgaddr, /* Message address */ BPX18050
int msgalet, /* Message alet */ BPX18060
int msgsize, /* Message size */ BPX18070
int msgflag, /* Flag field */ BPX18080
int *retval, int *retcode, int *rsncode); BPX18090
BPX18100
typedef void OSI_KMSGRCV(int msgqkey, /* Message Q Id @D6A @D7C*/ BPX18110
void *msgaddr, /* Message address */ BPX18120
int msgalet, /* Message alet */ BPX18130
int msgsize, /* Message size */ BPX18140
int msgtype, /* Message type */ BPX18150
int msgflag, /* Flag field */ BPX18160
int *retval, int *retcode, int *rsncode); BPX18170
BPX18180
typedef void OSI_KMSGCTL(int msgqkey, /* Message Q Id @D6A @D7C*/ BPX18190
int msgcmd, /* Message command */ BPX18200
void *msgbuff, /* Message bufffer */ BPX18210
int *retval, int *retcode, int *rsncode); BPX18220
BPX18230
typedef void OSI_KIPCGET(int ipctoken, /* IPC token @DDA*/ BPX18240
void *ipcbuff, /* Output bufffer */ BPX18250
int bufflen, /* IPC buffer length */ BPX18260
int ipccmd, /* IPC command */ BPX18270
int *retval, int *retcode, int *rsncode); BPX18280
BPX18290
typedef void OSI_UIOMOVE(OSI *, /* OSI struct @D7A*/ BPX18300
char *uiomworkarea, /* work area for use by BPX18310
uiomove @D7A*/ BPX18320
char *pfsbuf , /* Pfs buffer @D7A*/ BPX18330
int pfsbufalet,/* Alet for the PFS buf@D7A*/ BPX18340
int movelen, /* number of bytes to move */ BPX18350
UIO *, /* Uio structure */ BPX18360
int *retval, int *retcode, int *rsncode); BPX18370
BPX18380
typedef void OSI_COPYIN(char *desbuf, /* destination buffer @D6A*/ BPX18390
int desbufalet, /* destination buffer alet */ BPX18400
char *srcbuf, /* source buffer */ BPX18410
int srcbufalet, /* source buffer alet */ BPX18420
int srckey, /* source storage key */ BPX18430
int movelen, /* length to move */ BPX18440
int *retval, int *retcode, int *rsncode); BPX18450
BPX18460
typedef void OSI_COPYOUT(char *desbuf, /* destination buffer @D6A*/ BPX18470
int desbufalet,/* destination buffer alet */ BPX18480
char *srcbuf, /* source buffer */ BPX18490
int srcbufalet,/* source buffer alet */ BPX18500
int deskey, /* destination storage key */ BPX18510
int movelen, /* length to move */ BPX18520
int *retval, int *retcode, int *rsncode); BPX18530
BPX18540
typedef void OSI_THREAD(OSI *, /* OSI @D7A*/ BPX18550
OTHDPRM *, /* Osit_Thread parm struct */ BPX18560
int *retval, int *retcode, int *rsncode); BPX18570
BPX18580
typedef void OSI_GETCRED(OSI *, /* OSI @P6A*/ BPX18590
char *workarea, /* 3K work area for BPX18600
use by getcred */ BPX18610
int alet, /* alet for getcred parm and BPX18620
supplementary gid list */ BPX18630
OGCDPRM *, /* Osit_Getcred parm struct*/ BPX18640
int *retval, int *retcode, int *rsncode); BPX18650
BPX18660
typedef void OSI_CTL (int cmd, /* Command Code @DAA*/ BPX18670
int arglen, /* Argument Length */ BPX18680
char *arg, /* Argument Length */ BPX18690
int *retval, int *retcode, int *rsncode); BPX18700
BPX18710
typedef void OSI_UPDA (GTOK *lfs_asytok, /* LFS's Token @DGA*/BPX18720
GTOK *pfs_asytok ); /* PFS's Token */BPX18730
BPX18740
typedef void OSI_SCHED (GTOK *lfs_asytok, /* LFS's Token @DGA*/BPX18750
int *retval, int *retcode, int *rsncode); BPX18760
BPX18770
typedef void OSI_CTRACE(char *pfs_name, /* name of the PFS @DIA*/ BPX18780
char *workarea, /* 3K work area for BPX18790
use by osi_ctrace */ BPX18800
int arglen, /* Argument Length */ BPX18810
char *arg, /* Argument Length */ BPX18820
int *retval, int *retcode, int *rsncode); BPX18830
BPX18840
typedef void OSI_SOCKET(char *function, /* socket function @DKA*/ BPX18850
...); /* args for equiv BPX1xxx */ BPX18860
BPX18870
BPX18880
typedef void OSI_LKFS (OSILPARM *, /* LkFs parm @PDC*/BPX18890
int *retval, int *retcode, int *rsncode); BPX18900
BPX18910
typedef void OSI_COPY64(struct copy64_struct *, /*2@PMA*/ BPX18920
char *workarea ); /* 512 Byte work area */ BPX18930
BPX18940
typedef void OSI_BUFFCACHE(OSI *, /* Caller's OSI @E5A*/ BPX18950
struct osi_bfche_struct *); /* Buffer BPX18960
cache management structure */ BPX18970
BPX18980
/* OS linkage pragmas for the Services */ BPX18990
#pragma linkage(OSI_GETVNODE,OS) BPX19000
#pragma linkage(OSI_MOUNTSTATUS,OS) /*@D4A*/ BPX19010
#pragma linkage(OSI_CTL,OS) /*@DAA*/ BPX19020
#pragma linkage(OSI_SELPOST,OS) BPX19030
#pragma linkage(OSI_WAIT,OS) BPX19040
#pragma linkage(OSI_POST,OS) BPX19050
#pragma linkage(OSI_SIGNAL,OS) BPX19060
#pragma linkage(OSI_SLEEP,OS) /*@D6A*/ BPX19070
#pragma linkage(OSI_WAKEUP,OS) /*@D6A*/ BPX19080
#pragma linkage(OSI_KMSGGET,OS) /*@D6A*/ BPX19090
#pragma linkage(OSI_KMSGSND,OS) /*@D6A*/ BPX19100
#pragma linkage(OSI_KMSGRCV,OS) /*@D6A*/ BPX19110
#pragma linkage(OSI_KMSGCTL,OS) /*@D6A*/ BPX19120
#pragma linkage(OSI_KIPCGET,OS) /*@DDA*/ BPX19130
#pragma linkage(OSI_UIOMOVE,OS) /*@D6A*/ BPX19140
#pragma linkage(OSI_COPYIN,OS) /* @D7A*/ BPX19150
#pragma linkage(OSI_COPYOUT,OS) /* @D7A*/ BPX19160
#pragma linkage(OSI_THREAD,OS) /* @D7A*/ BPX19170
#pragma linkage(OSI_GETCRED,OS) /* @P6A*/ BPX19180
#pragma linkage(OSI_UPDA,OS) /*@DGA*/ BPX19190
#pragma linkage(OSI_SCHED,OS) /*@DGA*/ BPX19200
#pragma linkage(OSI_CTRACE,OS) /*@DIA*/ BPX19210
#pragma linkage(OSI_LKFS,OS) /*@DJA*/ BPX19220
#pragma linkage(OSI_SOCKET,OS) /*@DKA*/ BPX19230
#pragma linkage(OSI_COPY64,OS) /*@PMA*/ BPX19240
#pragma linkage(OSI_BUFFCACHE,OS) /*@E5A*/ BPX19250
BPX19260
/*------------------------------------------------------------------*/ BPX19270
/* OSIT - Operating System Interface Table (BPXZOSIT)*/ BPX19280
/*------------------------------------------------------------------*/ BPX19290
typedef struct s_osit { BPX19300
CBHDR osit_hdr; /*+00 ID & Length */ BPX19310
short osit_ver; /*+08 Version */ BPX19320
short osit_rsvd1; BPX19330
/* Function Pointers */ BPX19340
OSI_GETVNODE *_PTR32 osit_GETVNODE; /* +0C @E5C*/ BPX19350
OSI_MOUNTSTATUS *_PTR32 osit_MOUNTSTATUS; /* +10 Ver3 @E5C*/ BPX19360
OSI_CTL *_PTR32 osit_CTL; /* +14 Ver2 @E5C*/ BPX19370
void *_PTR32 osit_intern1; /* +18 @E5C*/ BPX19380
OSI_SELPOST *_PTR32 osit_SELPOST; /* +1C @E5C*/ BPX19390
OSI_WAIT *_PTR32 osit_WAIT; /* +20 @E5C*/ BPX19400
OSI_POST *_PTR32 osit_POST; /* +24 @E5C*/ BPX19410
OSI_SIGNAL *_PTR32 osit_SIGNAL; /* +28 @E5C*/ BPX19420
OSI_SLEEP *_PTR32 osit_SLEEP; /* +2C Ver3 @E5C*/ BPX19430
OSI_WAKEUP *_PTR32 osit_WAKEUP; /* +30 Ver3 @E5C*/ BPX19440
OSI_KMSGGET *_PTR32 osit_KMSGGET; /* +34 Ver3 @E5C*/ BPX19450
OSI_KMSGSND *_PTR32 osit_KMSGSND; /* +38 Ver3 @E5C*/ BPX19460
OSI_KMSGRCV *_PTR32 osit_KMSGRCV; /* +3C Ver3 @E5C*/ BPX19470
OSI_KMSGCTL *_PTR32 osit_KMSGCTL; /* +40 Ver3 @E5C*/ BPX19480
OSI_KIPCGET *_PTR32 osit_KIPCGET; /* +44 Ver3 @E5C*/ BPX19490
OSI_UIOMOVE *_PTR32 osit_UIOMOVE; /* +48 Ver3 @E5C*/ BPX19500
OSI_COPYIN *_PTR32 osit_COPYIN; /* +4C Ver2 @E5C*/ BPX19510
OSI_COPYOUT *_PTR32 osit_COPYOUT; /* +50 Ver2 @E5C*/ BPX19520
OSI_THREAD *_PTR32 osit_THREAD; /* +54 Ver3 @E5C*/ BPX19530
OSI_GETCRED *_PTR32 osit_GETCRED; /* +58 Ver3 @E5C*/ BPX19540
OSI_SCHED *_PTR32 osit_SCHED; /* +5C @E5C*/ BPX19550
OSI_UPDA *_PTR32 osit_UPDA; /* +60 @E5C*/ BPX19560
OSI_LKFS *_PTR32 osit_LKFS; /* +64 Ver4 @E5C*/ BPX19570
OSI_CTRACE *_PTR32 osit_CTRACE; /* +68 @E5C*/ BPX19580
OSI_SOCKET *_PTR32 osit_SOCKET; /* +6C @E5C*/ BPX19590
void *_PTR32 osit_rsvdB; /* +70 @E5C*/ BPX19600
/*--- End of Ver4 @PMA*/ BPX19610
OSI_COPY64 *_PTR32 osit_COPY64; /* +74 @E5C*/ BPX19620
void *_PTR32 osit_rsvdC; /* +78 @E5C*/ BPX19630
OSI_BUFFCACHE *_PTR32 osit_BUFFCACHE; /* +7C @E5C*/ BPX19640
void *_PTR32 osit_rsvdE; /* +80 @E5C*/ BPX19650
void *_PTR32 osit_rsvdF; /* +84 @E5C*/ BPX19660
void *_PTR32 osit_rsvdG; /* +88 @E5C*/ BPX19670
void *_PTR32 osit_rsvdH; /* +8C @E5C*/ BPX19680
BPX19690
} OSIT; BPX19700
BPX19710
/*------------------------------------------------------------------*/ BPX19720
/* Done packing structures for 64-bit compiles 3@E5A*/ BPX19730
/*------------------------------------------------------------------*/ BPX19740
#ifdef _LP64 BPX19750
#pragma pack(reset) BPX19760
#endif BPX19770
BPX19780
/* Version numbers */ BPX19790
#define OSIT_VER1 1 /* Rel 1 and Rel 2 Base */ BPX19800
#define OSIT_VER2 2 /* Rel 2 with copyin,copyout,ctl */ BPX19810
#define OSIT_VER3 3 /* Rel 3 sleep,wkup,kmsg,uiom,thrd */ BPX19820
#define OSIT_VER4 4 /* Rel 4 lkfs @DJA*/ BPX19830
#define OSIT_VER5 5 /* Ver 5 copy64 @PMA*/ BPX19840
#define OSIT_VER6 6 /* Ver 6 sysplex zfs @E0A*/ BPX19850
BPX19860
/*------------------------------------------------------------------*/ BPX19870
/* Constants used with the Service calls */ BPX19880
/*------------------------------------------------------------------*/ BPX19890
BPX19900
/* Input Entry Codes for osi_getvnode */ BPX19910
#define OSI_BUILDVNOD 1 /* Build Vnode */ BPX19920
#define OSI_BUILDVNODNL 2 /* Build Vnode without locks */ BPX19930
#define OSI_RTNVNOD 3 /* Return unused Vnode */ BPX19940
#define OSI_BUILDVNODXL 4 /* Build Vnode-excl locks @P3A*/ BPX19950
#define OSI_UPDATEVNODE 5 /* Update PFS Area in Vnode@DGA*/ BPX19960
#define OSI_ASSOCIATE 7 /* Update PFS Area in Vnode@DIA*/ BPX19970
#define OSI_ASSOCIATENL 8 /* Update PFS Area in Vnode@DIA*/ BPX19980
#define OSI_MEMCRITICAL 9 /* Crit PFS Storage Cond @05A*/ BPX19990
#define OSI_INACTASAP 10 /* Inact vnod asap @E0A*/ BPX20000
#define OSI_STALEVNODE 11 /* File is unusable @E4A*/ BPX20010
#define OSI_STALEOPENS 12 /* Opens have lost shares @E6A*/ BPX20020
BPX20030
/* Input Entry Codes for osi_mountstatus @D4C*/ BPX20040
#define OSI_MOUNTCOMPLETE 1 /* Asynchronous mount complete BPX20050
@D4C*/ BPX20060
BPX20070
/* Input Entry Codes for osi_wait */ BPX20080
#define OSI_SETUP 1 /* Setup request */ BPX20090
#define OSI_SETUPSIG 4 /* Setup with signals */ BPX20100
#define OSI_SUSPEND 2 /* Wait request */ BPX20110
#define OSI_WAITX 5 /* Wait ext request with Latch BPX20120
and Timer control @D6A*/ BPX20130
#define OSI_INIT 6 /* Init OSI for a Task @DGA*/ BPX20140
#define OSI_INIT2 7 /* Init OSI with Length @PFA BPX20150
osi_hdr.cblen=sizeof(OSI) @PFA*/ BPX20160
BPX20170
/* Output Return Codes from osi_wait */ BPX20180
#define OSI_POSTED 0 /* Osi_post was called. */ BPX20190
#define OSI_SIGNALRCV 4 /* Signal has been received. */ BPX20200
#define OSI_SHUTDOWN 8 /* OMVS is shutting down. */ BPX20210
#define OSI_UNMOUNTED 16 /* File System was unmounted */ BPX20220
#define OSI_POSTERTRM 18 /* Poster has terminated @DBA*/ BPX20230
#define OSI_TIMEOUT 28 /* Timer interval expired @D7C*/ BPX20240
#define OSI_ABEND 32 /* Abend occurred. */ BPX20250
#define OSI_BADPARM 34 /* Bad parm passed on call. */ BPX20260
#define OSI_ESTAEF 36 /* Estae setup failure occurred*/ BPX20270
#define OSI_SYSTEMERR 38 /* System Error occurred. */ BPX20280
#define OSI_FRRACTIVE 40 /* FRR Active when signals BPX20290
enabled @D6A*/ BPX20300
/* Input Entry Codes for osi_ctl */ BPX20310
#define OSI_GLUECALL 1 /* Glue request @EAA*/ BPX20320
#define OSI_RECYCLESTART 2 /* PFS starting recycle @EAA*/ BPX20330
#define OSI_RECYCLEFINISHED 3 /* PFS recycle is complete @EAA*/ BPX20340
#define OSI_UPDATEFILESYS 4 /* file system update @EAA*/ BPX20350
#define OSI_REMOUNTSAMEMODE 5 /* remount in same mode @EFA*/ BPX20360
#define OSI_QSE 6 /* quiesce @EFA*/ BPX20370
#define OSI_UQS 7 /* unquiesce @EFA*/ BPX20380
#define OSI_GETMNTSTATUS 8 /* get mount status @EFA*/ BPX20390
#define OSI_DUB 9 /* dub or undub a task @EFA*/ BPX20400
#define OSI_PFSSTATUS 10 /* PFS report status @EHA*/ BPX20410
BPX20420
/* Values for Arg for OSI_DUB */ BPX20430
#define OSI_DUBTASK 1 /* dub task @EFA*/ BPX20440
#define OSI_UNDUBTASK 2 /* undub task @EFA*/ BPX20450
BPX20460
/* Input Entry Types for osi_updatefilesys entry code */ BPX20470
#define OSI_REGSTATUS 1 /* regular status @EAA*/ BPX20480
#define OSI_EXCPSTATUS 2 /* exceptional status @EAA*/ BPX20490
#define OSI_MOUNTPARM 3 /* mount parm @EAA*/ BPX20500
BPX20510
/* Output Return Codes from osi_post (in addition to above) @DDA*/ BPX20520
#define OSI_NOTWAITING 4 /* Waiter has gone @DDA*/ BPX20530
BPX20540
/* Flag values for ot_option_flags on osi_thread call @D7A*/ BPX20550
#define OSI_SIGWAIT 0x80000000 /* Wait caller's task with BPX20560
signals enabled */ BPX20570
#define OSI_NOWAIT 0x40000000 /* Don't wait caller's task */ BPX20580
#define OSI_RELEASEMODS 0x20000000 /* Release modules when done */ BPX20590
BPX20600
/* Flag values for wait_flags on osi_wait(waitx) calls @P8A*/ BPX20610
#define OSI_WTDROPLOCKS 0x00000001 /* Drop Locks over wait @P8A*/ BPX20620
BPX20630
/*------------------------------------------------------------------*/ BPX20640
/* Information used for loading the OSIT into a separate addr space */ BPX20650
/*------------------------------------------------------------------*/ BPX20660
#define OSIT_INIT "BPXVOSIT" /* The module to load & call */ BPX20670
BPX20680
typedef void OSIT_INITMOD ( /* Prototype for the call: */ BPX20690
OSIT **, /* Output is a ptr to an OSIT */ BPX20700
int *retcode, int *rsncode); BPX20710
#pragma linkage(OSIT_INITMOD,OS) /* Called with OS linkgage */ BPX20720
BPX20730
/*------------------------------------------------------------------*/ BPX20740
/* Prototype of the PFS Initialization Routine */ BPX20750
/* This routine is attached as an MVS task and invoked by the */ BPX20760
/* system with the following parameters: */ BPX20770
/*------------------------------------------------------------------*/ BPX20780
void pfsinit (PFSI *, PFSNAME *, PFSPARM *, void *, OSIT *); BPX20790
BPX20800
#pragma linkage(pfsinit,OS) /* Is invoked with OS linkage */ BPX20810
BPX20820
/*------------------------------------------------------------------*/ BPX20830
/* Prototypes of the Vnode and VFS operation routines. */ BPX20840
/* These routines are called by the LFS to perform their functions*/ BPX20850
/*------------------------------------------------------------------*/ BPX20860
BPX20870
/* File and Directory oriented operations */ BPX20880
void vn_open (TOKSTR *, OSI *, CRED *, BPX20890
int *open_flags, BPX20900
int *retval, int *retcode, int *rsncode); BPX20910
void vn_close (TOKSTR *, OSI *, CRED *, BPX20920
int *open_flags, BPX20930
int *retval, int *retcode, int *rsncode); BPX20940
void vn_readdir (TOKSTR *, OSI *, CRED *, BPX20950
UIO *, BPX20960
int *retval, int *retcode, int *rsncode); BPX20970
void vn_readlink(TOKSTR *, OSI *, CRED *, BPX20980
UIO *, BPX20990
int *retval, int *retcode, int *rsncode); BPX21000
void vn_create (TOKSTR *, OSI *, CRED *, BPX21010
int *namelen, char *name, ATTR *, O_VNTOK *, BPX21020
int *retval, int *retcode, int *rsncode); BPX21030
void vn_mkdir (TOKSTR *, OSI *, CRED *, BPX21040
int *namelen, char *name, ATTR *, O_VNTOK *, BPX21050
int *retval, int *retcode, int *rsncode); BPX21060
void vn_symlink (TOKSTR *, OSI *, CRED *, BPX21070
int *namelen, char *name, ATTR *, BPX21080
int *symlen, char *symlink, BPX21090
int *retval, int *retcode, int *rsncode); BPX21100
void vn_lookup (TOKSTR *, OSI *, CRED *, BPX21110
int *namelen, char *name, O_VNTOK *, BPX21120
int *retval, int *retcode, int *rsncode); BPX21130
void vn_getattr (TOKSTR *, OSI *, CRED *, BPX21140
ATTR *, BPX21150
int *retval, int *retcode, int *rsncode); BPX21160
void vn_setattr (TOKSTR *, OSI *, CRED *, BPX21170
ATTR *, BPX21180
int *retval, int *retcode, int *rsncode); BPX21190
void vn_access (TOKSTR *, OSI *, CRED *, BPX21200
int *access_intent, BPX21210
int *retval, int *retcode, int *rsncode); BPX21220
void vn_trunc (TOKSTR *, OSI *, CRED *, BPX21230
int *offset, BPX21240
int *retval, int *retcode, int *rsncode); BPX21250
void vn_fsync (TOKSTR *, OSI *, CRED *, BPX21260
int *retval, int *retcode, int *rsncode); BPX21270
void vn_link (TOKSTR *, OSI *, CRED *, BPX21280
int *namelen, char *name, TOKSTR *, BPX21290
int *retval, int *retcode, int *rsncode); BPX21300
void vn_rmdir (TOKSTR *, OSI *, CRED *, BPX21310
int *namelen, char *name, BPX21320
int *retval, int *retcode, int *rsncode); BPX21330
void vn_remove (TOKSTR *, OSI *, CRED *, BPX21340
int *namelen, char *name, BPX21350
int *retval, int *retcode, int *rsncode); BPX21360
void vn_rename (TOKSTR *, OSI *, CRED *, BPX21370
int *oldlen, char *oldname, BPX21380
int *newlen, char *newname, TOKSTR *, BPX21390
int *retval, int *retcode, int *rsncode); BPX21400
void vn_audit (TOKSTR *, OSI *, CRED *, BPX21410
int *retval, int *retcode, int *rsncode); BPX21420
BPX21430
/* File System oriented operations */ BPX21440
void vfs_mount (TOKSTR *, OSI *, CRED *, BPX21450
MTAB *, O_VNTOK *, BPX21460
int *retval, int *retcode, int *rsncode); BPX21470
void vfs_umount (TOKSTR *, OSI *, CRED *, BPX21480
int *unmount_options, BPX21490
int *retval, int *retcode, int *rsncode); BPX21500
void vfs_statfs (TOKSTR *, OSI *, CRED *, BPX21510
FSATTR *, BPX21520
int *retval, int *retcode, int *rsncode); BPX21530
void vfs_sync (TOKSTR *, OSI *, CRED *, BPX21540
int *retval, int *retcode, int *rsncode); BPX21550
void vfs_inact (TOKSTR *, OSI *, CRED *, /*@PPA*/ BPX21560
struct s_iab *, int *iablen, BPX21570
int *retval, int *retcode, int *rsncode); BPX21580
void vfs_vget (TOKSTR *, OSI *, CRED *, BPX21590
FID *, O_VNTOK *, BPX21600
int *retval, int *retcode, int *rsncode); BPX21610
BPX21620
/* General operations */ BPX21630
void vn_select (TOKSTR *, OSI *, CRED *, BPX21640
SELTOK *, BPX21650
int *sel_function, BPX21660
int *sel_options, BPX21670
char *pfsworkptr, BPX21680
int *retval, int *retcode, int *rsncode); BPX21690
void vfs_batsel (TOKSTR *, OSI *, CRED *, BPX21700
int *rsvd1, BPX21710
int *sel_function, BPX21720
BSIC *, BPX21730
int *rsvd2, BPX21740
int *retval, int *retcode, int *rsncode); BPX21750
void vn_rdwr (TOKSTR *, OSI *, CRED *, BPX21760
int *open_flags, UIO *, BPX21770
int *retval, int *retcode, int *rsncode); BPX21780
void vn_readwritev(TOKSTR *, OSI *, CRED *, BPX21790
int *open_flags, UIO *, BPX21800
int *retval, int *retcode, int *rsncode); BPX21810
void vn_inactive (TOKSTR *, OSI *, CRED *, BPX21820
int *retval, int *retcode, int *rsncode); BPX21830
void vn_ioctl (TOKSTR *, OSI *, CRED *, BPX21840
int *open_flags, BPX21850
int *cmd, int *arglen, char *arg, BPX21860
int *retval, int *retcode, int *rsncode); BPX21870
void vn_lockctl (TOKSTR *, OSI *, CRED *, /*@E7A*/ BPX21880
int *cmd, BPX21890
int *vlocklen, VLOCK *, BPX21900
int *retval, int *retcode, int *rsncode); BPX21910
void vn_pathconf (TOKSTR *, OSI *, CRED *, /*@D5A*/ BPX21920
int *pathconf_option, BPX21930
int *retval, int *retcode, int *rsncode); BPX21940
void vn_recovery (TOKSTR *, OSI *, CRED *, /*@D5A*/ BPX21950
struct osirtoken *, BPX21960
int *retval, int *retcode, int *rsncode); BPX21970
void vfs_recovery (TOKSTR *, OSI *, CRED *, BPX21980
struct osirtoken *, BPX21990
int *retval, int *retcode, int *rsncode); BPX22000
void vfs_pfsctl (TOKSTR *, OSI *, CRED *, BPX22010
int *cmd, UIO *, BPX22020
int *retval, int *retcode, int *rsncode); BPX22030
void vn_cancel (TOKSTR *, OSI *, CRED *, /*@DGA*/ BPX22040
struct vncanflags *, BPX22050
GTOK *pfs_asytok, BPX22060
GTOK *lfs_asytok, BPX22070
int *retval, int *retcode, int *rsncode); BPX22080
BPX22090
/* Socket Network (domain) oriented operations */ BPX22100
void vfs_network (TOKSTR *, OSI *, CRED *, BPX22110
NETW *, BPX22120
int *retval, int *retcode, int *rsncode); BPX22130
void vfs_socket (TOKSTR *, OSI *, CRED *, /* socket|socketpair*/ BPX22140
int *domain, int *type, int *protocol, BPX22150
int *dim, O_VNTOK (*vntoks)[2], BPX22160
int *retval, int *retcode, int *rsncode); BPX22170
void vfs_gethost (TOKSTR *, OSI *, CRED *, /* get host id|name */ BPX22180
int *namelen, char *name, BPX22190
int *retval, int *retcode, int *rsncode); BPX22200
BPX22210
/* Socket oriented operations */ BPX22220
BPX22230
void vn_accept (TOKSTR *, OSI *, CRED *, BPX22240
int *addrlen, _SOCKADDR *, BPX22250
int *open_flags, O_VNTOK *, BPX22260
int *retval, int *retcode, int *rsncode); BPX22270
void vn_bind (TOKSTR *, OSI *, CRED *, BPX22280
int *addrlen, _SOCKADDR *, BPX22290
int *retval, int *retcode, int *rsncode); BPX22300
void vn_connect (TOKSTR *, OSI *, CRED *, BPX22310
int *addrlen, _SOCKADDR *, BPX22320
int *open_flags, BPX22330
int *retval, int *retcode, int *rsncode); BPX22340
void vn_getname (TOKSTR *, OSI *, CRED *, /* peername|sockname*/ BPX22350
int *function, BPX22360
int *addrlen, _SOCKADDR *, BPX22370
int *retval, int *retcode, int *rsncode); BPX22380
void vn_listen (TOKSTR *, OSI *, CRED *, BPX22390
int *backlog, BPX22400
int *retval, int *retcode, int *rsncode); BPX22410
void vn_sndrcv (TOKSTR *, OSI *, CRED *, BPX22420
int *open_flags, UIO *, int *sr_flags, BPX22430
int *retval, int *retcode, int *rsncode); BPX22440
void vn_sndtorcvfm(TOKSTR *, OSI *, CRED *, BPX22450
int *open_flags, UIO *, int *sr_flags, BPX22460
int *addrlen, _SOCKADDR *, BPX22470
int *retval, int *retcode, int *rsncode); BPX22480
void vn_srmsg (TOKSTR *, OSI *, CRED *, BPX22490
int *open_flags, UIO *, int *sr_flags, BPX22500
int *retval, int *retcode, int *rsncode); BPX22510
void vn_shutdown (TOKSTR *, OSI *, CRED *, BPX22520
int *how, BPX22530
int *retval, int *retcode, int *rsncode); BPX22540
void vn_sockopt (TOKSTR *, OSI *, CRED *, /* Get|Set sockopt */ BPX22550
int *function, int *level, BPX22560
int *optname, int *optvallen, char *optval, BPX22570
int *retval, int *retcode, int *rsncode); BPX22580
void vn_srx (TOKSTR *, OSI *, CRED *, /*@PFA*/ BPX22590
int *open_flags, UIO *, BPX22600
int *retval, int *retcode, int *rsncode); BPX22610
void vn_anr (TOKSTR *, OSI *, CRED *, /*@PHA*/ BPX22620
struct anr_struct *, UIO *, /*@PIC*/ BPX22630
int *open_flags, O_VNTOK *, BPX22640
int *retval, int *retcode, int *rsncode); BPX22650
BPX22660
#pragma page() BPX22670
/* The PFS operations are invoked with OS linkage */ BPX22680
#pragma linkage(vn_open ,OS) BPX22690
#pragma linkage(vn_close ,OS) BPX22700
#pragma linkage(vn_rdwr ,OS) BPX22710
#pragma linkage(vn_readdir ,OS) BPX22720
#pragma linkage(vn_readlink,OS) BPX22730
#pragma linkage(vn_create ,OS) BPX22740
#pragma linkage(vn_mkdir ,OS) BPX22750
#pragma linkage(vn_symlink ,OS) BPX22760
#pragma linkage(vn_lookup ,OS) BPX22770
#pragma linkage(vn_inactive,OS) BPX22780
#pragma linkage(vn_getattr ,OS) BPX22790
#pragma linkage(vn_setattr ,OS) BPX22800
#pragma linkage(vn_access ,OS) BPX22810
#pragma linkage(vn_trunc ,OS) BPX22820
#pragma linkage(vn_fsync ,OS) BPX22830
#pragma linkage(vn_link ,OS) BPX22840
#pragma linkage(vn_rmdir ,OS) BPX22850
#pragma linkage(vn_remove ,OS) BPX22860
#pragma linkage(vn_rename ,OS) BPX22870
#pragma linkage(vn_audit ,OS) BPX22880
#pragma linkage(vn_pathconf,OS) /*@D5A*/ BPX22890
#pragma linkage(vn_recovery,OS) /*@D5A*/ BPX22900
#pragma linkage(vn_cancel ,OS) /*@DGA*/ BPX22910
#pragma linkage(vn_ioctl ,OS) BPX22920
#pragma linkage(vn_lockctl ,OS) /*@E7A*/ BPX22930
#pragma linkage(vn_select ,OS) BPX22940
#pragma linkage(vn_accept ,OS) BPX22950
#pragma linkage(vn_bind ,OS) BPX22960
#pragma linkage(vn_connect ,OS) BPX22970
#pragma linkage(vn_getname ,OS) BPX22980
#pragma linkage(vn_listen ,OS) BPX22990
#pragma linkage(vn_sndrcv ,OS) BPX23000
#pragma linkage(vn_srmsg ,OS) BPX23010
#pragma linkage(vn_shutdown,OS) BPX23020
#pragma linkage(vn_sockopt ,OS) BPX23030
#pragma linkage(vn_readwritev,OS) BPX23040
#pragma linkage(vn_sndtorcvfm,OS) BPX23050
#pragma linkage(vn_srx ,OS) BPX23060
#pragma linkage(vn_anr ,OS) BPX23070
BPX23080
#pragma linkage(vfs_mount ,OS) BPX23090
#pragma linkage(vfs_umount ,OS) BPX23100
#pragma linkage(vfs_statfs ,OS) BPX23110
#pragma linkage(vfs_sync ,OS) BPX23120
#pragma linkage(vfs_inact ,OS) /*@PPA*/ BPX23130
#pragma linkage(vfs_vget ,OS) BPX23140
#pragma linkage(vfs_recovery,OS) BPX23150
#pragma linkage(vfs_batsel ,OS) BPX23160
#pragma linkage(vfs_network ,OS) BPX23170
#pragma linkage(vfs_socket ,OS) BPX23180
#pragma linkage(vfs_gethost ,OS) BPX23190
BPX23200
/*------------------------------------------------------------------*/ BPX23210
/* Ctrace utility */ BPX23220
/*------------------------------------------------------------ 4@DIA*/ BPX23230
struct ctrcvt {char x[0x8c];struct ctrcve * _PTR32 cve;}; /* @E5C*/ BPX23240
struct ctrcve {char x[0xf0];struct ctrocvt * _PTR32 ocvt;}; /* @E5C*/ BPX23250
struct ctrocvt {char x[0x130];unsigned int csptrace:1;}; BPX23260
/* 1@E5C*/ BPX23270
#define TRACEISON ((*(struct ctrcvt* _PTR32 * _PTR32)0x10) -> \ BPX23280
cve -> ocvt -> csptrace) BPX23290
BPX23300
#pragma page() BPX23310
#ifndef _NO_PFS_KES BPX23320
/*------------------------------------------------------------------*/ BPX23330
/* Internal Services Prototypes */ BPX23340
/*------------------------------------------------------------------*/ BPX23350
BPX23360
void * _memmove (void *, const void *, size_t); /* @D7A */ BPX23370
BPX23380
/*------------------------------------------------------------------*/ BPX23390
/* Kernel Extension Services */ BPX23400
/* These functions are a subset of the Language Environment */ BPX23410
/* C functions. LE functions are not available to PFSes and */ BPX23420
/* the functions included here may be called in their place. */ BPX23430
/*------------------------------------------------------------------*/ BPX23440
/*********************************************************************/ BPX23450
/* */ BPX23460
/* Name: bcopy @D7A */ BPX23470
/* */ BPX23480
/* Format: #include string.h BPX23490
/* #include bpxypfsi.h */ BPX23500
/* void bcopy( source, destination, length ) */ BPX23510
/* */ BPX23520
/* Description: */ BPX23530
/* Copies 'length' bytes from 'source' to 'destination'. */ BPX23540
/* Overlapping source and destination are handled */ BPX23550
/* correctly. */ BPX23560
/* */ BPX23570
/* Returned Value: */ BPX23580
/* None */ BPX23590
/* */ BPX23600
/* External References: _memmove */ BPX23610
/* */ BPX23620
/* Synopsis: */ BPX23630
/* void bcopy (const void *source, void *destination, size_t length) */ BPX23640
/* */ BPX23650
/* Related Information: */ BPX23660
/* bpxypfsi.h */ BPX23670
/* _memmove() */ BPX23680
/* */ BPX23690
/*********************************************************************/ BPX23700
BPX23710
static /*@DIA*/ BPX23720
void bcopy (const void *src, void *dst, size_t length) /*@D7A*/ BPX23730
{ BPX23740
/* BPX23750
* let _memmove do the work... BPX23760
*/ BPX23770
BPX23780
_memmove( dst, src, length ); /*@D7A*/ BPX23790
} BPX23800
BPX23810
#pragma page() BPX23820
/*********************************************************************/ BPX23830
/* */ BPX23840
/* Name: bzero @D7A */ BPX23850
/* */ BPX23860
/* Format: #include string.h */ BPX23870
/* #include bpxypfsi.h */ BPX23880
/* void bcopy( destination, length ) */ BPX23890
/* */ BPX23900
/* Description: */ BPX23910
/* Zeroes out 'length' bytes, starting at 'destination'. */ BPX23920
/* */ BPX23930
/* Returned Value: */ BPX23940
/* None */ BPX23950
/* */ BPX23960
/* External References: memset */ BPX23970
/* */ BPX23980
/* Synopsis: */ BPX23990
/* void bzero (const void *destination, size_t length) */ BPX24000
/* */ BPX24010
/* Related Information: */ BPX24020
/* bpxypfsi.h */ BPX24030
/* memset() */ BPX24040
/* */ BPX24050
/*********************************************************************/ BPX24060
BPX24070
static /*@DIA*/ BPX24080
void bzero (void *dest, size_t length) /*@D7A*/ BPX24090
{ BPX24100
/* BPX24110
* let memset do the work ... BPX24120
*/ BPX24130
BPX24140
memset( dest, 0, length ); /*@D7A*/ BPX24150
} BPX24160
BPX24170
#pragma page() BPX24180
/*------------------------------------------------------------------*/ BPX24190
/* Internal Services */ BPX24200
/*------------------------------------------------------------------*/ BPX24210
/*-------------------------------------------------------------------*/ BPX24220
/* Name: _memmove */ BPX24230
/* */ BPX24240
/* */ BPX24250
/* Purpose: Copies characters from one data object to another */ BPX24260
/* with check for overlap */ BPX24270
/* */ BPX24280
/* Input: s1 - object to move the characters to */ BPX24290
/* s2 - object to move the characters from */ BPX24300
/* n - the number of characters to move */ BPX24310
/* */ BPX24320
/* Output: Returns a pointer to object s1 */ BPX24330
/* */ BPX24340
/* External References: None */ BPX24350
/* */ BPX24360
/* Description: */ BPX24370
/* */ BPX24380
/* Copy n characters from object s2 to object s1. */ BPX24390
/* If overlay exists between s2 and s1, the move shall */ BPX24400
/* take place correctly. A pointer to the object s1 shall */ BPX24410
/* be returned. */ BPX24420
/* */ BPX24430
/*-------------------------------------------------------------------*/ BPX24440
BPX24450
static /*@DIA*/ BPX24460
void *_memmove (register void *s1, register const void *s2, BPX24470
register size_t n) { BPX24480
BPX24490
register void *anchor = s1; /* save s1 to return */BPX24500
char *p1; BPX24510
char *p2; BPX24520
size_t x; BPX24530
size_t y; BPX24540
BPX24550
BPX24560
/****************************************************************/ BPX24570
/* check for destructive overlap and if it exists, move the end */ BPX24580
/* of the string first. */ BPX24590
/****************************************************************/ BPX24600
BPX24610
if ( ((char *)s1 > (char *)s2) && (((char *)s2 + n) > (char *)s1)) { BPX24620
p2 = (char *)s2 + n - 1; /* point to last character to move */ BPX24630
p1 = (char *)s1 + n - 1; /* point to last position in result */ BPX24640
x = (char *)s2 + n - (char *)s1; /* # of bytes colliding */ BPX24650
y = x; BPX24660
BPX24670
while ( y-- > 0 ) BPX24680
*p1-- = *p2--; BPX24690
BPX24700
/***********************************************************/ BPX24710
/* can move the rest quickly */ BPX24720
/***********************************************************/ BPX24730
memcpy((char *)s1, s2, n - x); BPX24740
} BPX24750
else BPX24760
/***********************************************************/ BPX24770
/* otherwise, regular move */ BPX24780
/***********************************************************/ BPX24790
memcpy (s1, s2, n); BPX24800
BPX24810
return anchor; BPX24820
} BPX24830
#endif /* Endif _NO_PFS_KES */ BPX24840
#endif /* Endif __BPXYPFSI */ BPX24850