Open files
are described by data initialized at file open time and discarded at the
time of last close of all file handles which had been associated with that
open instance of that file. There may be multiple open file references to
the same file at any one time.
All time stamps on files are stamped and propagated to other SFTs by OS/2
when the file is closed or committed (flushed). For example, if a file is
opened at time 1, written at time 2, and closed at time 3, the last write
time is time 3 . Subdirectories need only have creation time stamps
because the last write and last read time stamps on subdirectories are
either very difficult to implement ( propagate up to parent
subdirectories), or are not very useful. An FSD, however, may implement
them. FSDs are required to support direct access opens. These are
indicated by a bit set in the sffsi.sfi_mode field.
/* file system independent - file instance */
struct sffsi {
unsigned long sfi_mode; /* access/sharing mode */
unsigned short sfi_hVPB; /* volume info. */
unsigned short sfi_ctime; /* file creation time */
unsigned short sfi_cdate; /* file creation date */
unsigned short sfi_atime; /* file access time */
unsigned short sfi_adate; /* file access date */
unsigned short sfi_mtime; /* file modification time */
unsigned short sfi_mdate; /* file modification date */
unsigned long sfi_size; /* size of file */
unsigned long sfi_position; /* read/write pointer */
/* the following may be of use in sharing checks */
unsigned short sfi_UID; /* user ID of initial opener */
unsigned short sfi_PID; /* process ID of initial opener */
unsigned short sfi_PDB; /* PDB (in 3.x box) of initial opener */
unsigned short sfi_selfsfn; /* system file number of file instance */
unsigned char sfi_tstamp; /* time stamp flags */
unsigned short sfi_type; /* type of object opened */
unsigned long sfi_pPVDBFil; /* performance counter data block pointer */
unsigned char sfi_DOSattr; /* DOS file attributes D/S/A/H/R */
/* The following fields are supported since OS/2 Warp Server for e-Business (Aurora) */
long long sfi_sizel; /* 64-bit file size value */
long long sfi_positionl; /* 64-bit file position value */
};
/* file system dependent - file instance */
struct sffsd {
char sfd_work[30]; /* work area */
};
The Program Data Block, or PDB (sfi_pdb), is the unit of sharing for DOS
mode processes. For OS/2 mode processes, the unit of sharing is the
Process ID, PID (sfi_ pid). FSDs should use the combination PDB, PID, UID
as indicating a distinct process.
Created using Inf-PHP v.2 (c) 2003 Yuri Prokushev
Created using Inf-HTML v.0.9b (c) 1995 Peter Childs