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


PFS support

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

The kernel supports 31-bit and 64-bit programs with the same routines. The PL/X stat structure, BPXYSTAT, has both fields generated; the new fields have new names. BPXYATTR (BPXYATTR — Map file attributes for v_ system calls) also has five new 8-byte time fields:
3 AttrEndVer1     Char(0),     /* +A0--- End of Version 1 --- @D2C*/
                                                                     
 3 AttrStat4 ,                  /* +A0 Fourth part of the stat @DAA*/
   5 AttrLP64 ,                 /* +A0 LP64 Versions           @DAA*/
     7 AttrAtime64     Char(8),     /*+A8 Access Time          @DAA*/
     7 AttrMtime64     Char(8),     /*+B0 Data Mod Time        @DAA*/
     7 AttrCtime64     Char(8),     /*+B8 Medadata Change Time @DAA*/
     7 AttrCreateTime64  Char(8),   /*+C0 File Creation Time   @DAA*/
     7 AttrRefTime64   Char(8),     /*+C8 Reference Time       @DAA*/
     7   *             Char(8),     /*+A0 May be AttrIno64     @DAA*/
                                                                     
   5 *               Char(16),  /* +D0 Reserved (1st consider  @DAA  
                                        space at +5C,+8D,+94)  @DAA*/
 3 AttrEndVer2 Char(0),         /* +E0 End of Version 2        @DAA*/
The associated 4- and 8-byte fields will usually contain the same values, until some time in the year 2038.
The C ATTR structure in BPXYVFSI exactly matches the PL/X Attr:
                           /* +A0 --- End Ver 1 ---   @P5A*/
 char    at_atime64[8];     /* Large Time Fields       @P5A*/
 char    at_mtime64[8];                              /*@P5A*/
 char    at_ctime64[8];                              /*@P5A*/
 char    at_createtime64[8];                         /*@P5A*/
 char    at_reftime64[8];                            /*@P5A*/
 char    at_rsvd4[8];                                /*@P5A*/
 char    at_rsvd5[16];                               /*@P5A*/
                            /* +E0 --- End Ver 2 ---   @P5A*/

PFSs must return both sets of time fields in all output ATTRs. This includes vn_getattr, any osi_attrs, and ReadDirPlus (part of v_readdir (BPX1VRD, BPX4VRD) — Read entries from a directory). The LFS always passes to the PFSs an ATTR that is large enough to hold the 8-byte times (at least of length Attr#Ver2Len). The stat() function is performance-sensitive, because it is called so often by programs in the field, and it is faster for the PFSs to set the five extra fields than for the LFS to check to see if it has been done, and then copy the 4-byte values to the 8-byte fields.

PFSs that support vn_setattr, or setting times at all, must accept 8-byte time values. The AttrLP64Times bit in BPXYATTR indicates that the time value is being passed in the 8-byte fields. Most of these 8-byte time values will still be less than 2 gigaseconds, but they are being passed by LP64 programs. An LP64 program may try to utime() beyond 2 gigaseconds.

PFSs that use BPXXCTME should use the new syntax for large time values. The BPXXCTME macro converts to and from the extended STCKE TOD format with the optional EXTENDED keyword:
?BPXXCTME INPUT(TOD|SSE)
    TOD(8ByteArea|16ByteArea)
    SSE(WordArea|DWordArea)
    MICSEC(WordArea)
    EXTENDED(8<,4>|16<,4>) (optional)
INPUT indicates the input field, and TOD is a doubleword-aligned 8- or 16- character field containing the input TOD or the converted value. SSE is a word-aligned 4-byte character field or doubleword-aligned 8-byte character field containing the input SSE or the converted value. Table 1 shows the TOD and SSE fields with the EXTENDED keyword:
Table 1. TOD and SSE fields with the EXTENDED keyword
EXTENDED TOD SSE
Keyword is omitted Bytes 1 through 8 of the STCK format A 4-byte character field
EXTENDED(8) Bytes 1 through 8 of the STCKE format An 8-byte field
EXTENDED(16) Bytes 1 through 16 of the STCKE format An 8-byte field
EXTENDED(16,4) Bytes 1 through 16 of the STCKE format A 4-byte field

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014