z/OS UNIX System Services File System Interface Reference
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


BPXYPFSI

z/OS UNIX System Services File System Interface Reference
SA23-2285-00

 #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

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014