IFS - FS Service Routines: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 35: | Line 35: | ||
[[FS_FILEINFO]] Query/Set file's information ALL | [[FS_FILEINFO]] Query/Set file's information ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_FILEIO Multi-function file I/O ALL | [[FS_FILEIO]] Multi-function file I/O ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_FILELOCKS Request a file record lock/unlock FILE I/O | [[FS_FILELOCKS]] Request a file record lock/unlock FILE I/O | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_FINDCLOSE Directory search close ALL | [[FS_FINDCLOSE]] Directory search close ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_FINDFIRST Find first matching filename ALL | [[FS_FINDFIRST]] Find first matching filename ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_FINDFROMNAME Find matching filename from name ALL | [[FS_FINDFROMNAME]] Find matching filename from name ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_FINDNEXT Find next matching filename ALL | [[FS_FINDNEXT]] Find next matching filename ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_FINDNOTIFYCLOSE Close FindNotify handle ALL | [[FS_FINDNOTIFYCLOSE]] Close FindNotify handle ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_FINDNOTIFYFIRST Monitor a directory for changes ALL | [[FS_FINDNOTIFYFIRST]] Monitor a directory for changes ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_FINDNOTIFYNEXT Resume reporting directory changes ALL | [[FS_FINDNOTIFYNEXT]] Resume reporting directory changes ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_FLUSHBUF Commit file buffers to disk ALL | [[FS_FLUSHBUF]] Commit file buffers to disk ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_FSCTL File system control ALL | [[FS_FSCTL]] File system control ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_FSINFO Query/Set file system information ALL | [[FS_FSINFO]] Query/Set file system information ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_INIT FSD initialization ALL | [[FS_INIT]] FSD initialization ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_IOCTL I/O device control ALL | [[FS_IOCTL]] I/O device control ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_MKDIR Make a directory ALL | [[FS_MKDIR]] Make a directory ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_MOUNT Mount/unmount volumes ALL | [[FS_MOUNT]] Mount/unmount volumes ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_MOVE Move a file or subdirectory ALL | [[FS_MOVE]] Move a file or subdirectory ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_NEWSIZE Change a file's logical size ALL | [[FS_NEWSIZE]] Change a file's logical size ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_NMPIPE Do a named pipe operation ALL | [[FS_NMPIPE]] Do a named pipe operation ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_OPENCREATE Open/create/replace files ALL | [[FS_OPENCREATE]] Open/create/replace files ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_OPENPAGEFILE Create paging file and handle PAGE I/O | [[FS_OPENPAGEFILE]] Create paging file and handle PAGE I/O | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_PATHINFO Query/Set a file's information ALL | [[FS_PATHINFO]] Query/Set a file's information ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_PROCESSNAME FSD unique name canonicalization ALL | [[FS_PROCESSNAME]] FSD unique name canonicalization ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_READ Read data from a file ALL | [[FS_READ]] Read data from a file ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_RMDIR Remove a subdirectory ALL | [[FS_RMDIR]] Remove a subdirectory ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_SETSWAP Notification of swapfile ownership ALL | [[FS_SETSWAP]] Notification of swapfile ownership ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_SHUTDOWN Shutdown file system ALL | [[FS_SHUTDOWN]] Shutdown file system ALL | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_VERIFYUNCNAME Verify UNC server ownership UNC | [[FS_VERIFYUNCNAME]] Verify UNC server ownership UNC | ||
──────────────────────────────────────────────────────────────────────── | ──────────────────────────────────────────────────────────────────────── | ||
FS_WRITE Write data to a file ALL | [[FS_WRITE]] Write data to a file ALL | ||
Each FS entry point has a distinct parameter list composed of those parameters needed by that particular entry. Parameters include: | Each FS entry point has a distinct parameter list composed of those parameters needed by that particular entry. Parameters include: |
Revision as of 05:13, 10 February 2020
Installable File Systems for OS/2 |
---|
Reprint Courtesy of International Business Machines Corporation, © International Business Machines Corporation The following table summarizes the entry points that make up the interface between the kernel and the FSD.
- Note
- Names must be in all upper case, as required by OS/2 naming conventions.
FS Entry Point Description FSDs Required to export ──────────────────────────────────────────────────────────────────────── FS_ALLOCATEPAGESPACE Adjust the size of paging file PAGE I/O ──────────────────────────────────────────────────────────────────────── FS_ATTACH Attach to an FSD ALL ──────────────────────────────────────────────────────────────────────── FS_CANCELLOCKREQUEST Cancel file record lock request FILE I/O ──────────────────────────────────────────────────────────────────────── FS_CHDIR Change/Verify directory path ALL ──────────────────────────────────────────────────────────────────────── FS_CHGFILEPTR Move a file's position pointer ALL ──────────────────────────────────────────────────────────────────────── FS_CLOSE Release a file handle ALL ──────────────────────────────────────────────────────────────────────── FS_COMMIT Flush a file's buffer to disk ALL ──────────────────────────────────────────────────────────────────────── FS_COPY Copy a file ALL ──────────────────────────────────────────────────────────────────────── FS_DELETE Delete a file ALL ──────────────────────────────────────────────────────────────────────── FS_DOPAGEIO Perform paging I/O operations PAGE I/O ──────────────────────────────────────────────────────────────────────── FS_EXIT End of a process cleanup ALL ──────────────────────────────────────────────────────────────────────── FS_FILEATTRIBUTE Query/Set file's attributes ALL ──────────────────────────────────────────────────────────────────────── FS_FILEINFO Query/Set file's information ALL ──────────────────────────────────────────────────────────────────────── FS_FILEIO Multi-function file I/O ALL ──────────────────────────────────────────────────────────────────────── FS_FILELOCKS Request a file record lock/unlock FILE I/O ──────────────────────────────────────────────────────────────────────── FS_FINDCLOSE Directory search close ALL ──────────────────────────────────────────────────────────────────────── FS_FINDFIRST Find first matching filename ALL ──────────────────────────────────────────────────────────────────────── FS_FINDFROMNAME Find matching filename from name ALL ──────────────────────────────────────────────────────────────────────── FS_FINDNEXT Find next matching filename ALL ──────────────────────────────────────────────────────────────────────── FS_FINDNOTIFYCLOSE Close FindNotify handle ALL ──────────────────────────────────────────────────────────────────────── FS_FINDNOTIFYFIRST Monitor a directory for changes ALL ──────────────────────────────────────────────────────────────────────── FS_FINDNOTIFYNEXT Resume reporting directory changes ALL ──────────────────────────────────────────────────────────────────────── FS_FLUSHBUF Commit file buffers to disk ALL ──────────────────────────────────────────────────────────────────────── FS_FSCTL File system control ALL ──────────────────────────────────────────────────────────────────────── FS_FSINFO Query/Set file system information ALL ──────────────────────────────────────────────────────────────────────── FS_INIT FSD initialization ALL ──────────────────────────────────────────────────────────────────────── FS_IOCTL I/O device control ALL ──────────────────────────────────────────────────────────────────────── FS_MKDIR Make a directory ALL ──────────────────────────────────────────────────────────────────────── FS_MOUNT Mount/unmount volumes ALL ──────────────────────────────────────────────────────────────────────── FS_MOVE Move a file or subdirectory ALL ──────────────────────────────────────────────────────────────────────── FS_NEWSIZE Change a file's logical size ALL ──────────────────────────────────────────────────────────────────────── FS_NMPIPE Do a named pipe operation ALL ──────────────────────────────────────────────────────────────────────── FS_OPENCREATE Open/create/replace files ALL ──────────────────────────────────────────────────────────────────────── FS_OPENPAGEFILE Create paging file and handle PAGE I/O ──────────────────────────────────────────────────────────────────────── FS_PATHINFO Query/Set a file's information ALL ──────────────────────────────────────────────────────────────────────── FS_PROCESSNAME FSD unique name canonicalization ALL ──────────────────────────────────────────────────────────────────────── FS_READ Read data from a file ALL ──────────────────────────────────────────────────────────────────────── FS_RMDIR Remove a subdirectory ALL ──────────────────────────────────────────────────────────────────────── FS_SETSWAP Notification of swapfile ownership ALL ──────────────────────────────────────────────────────────────────────── FS_SHUTDOWN Shutdown file system ALL ──────────────────────────────────────────────────────────────────────── FS_VERIFYUNCNAME Verify UNC server ownership UNC ──────────────────────────────────────────────────────────────────────── FS_WRITE Write data to a file ALL
Each FS entry point has a distinct parameter list composed of those parameters needed by that particular entry. Parameters include:
- File pathname
- Current disk/directory information
- Open file information
- Application data buffers
- Descriptions of file extended attributes
- Other parameters specific to an individual call
Most of the FS entry points have a level parameter for specifying the level of information they are provided or have to supply. FSDs must provide for additional levels which may be added in future versions of OS/2 by returning ERROR_NOT_ SUPPORTED for any level they do not recognize.
File system drivers which support hierarchical directory structures must use '\' and '/' as path name component separators. File system drivers which do not support hierarchical directory structures must reject as illegal any use of '\' or '/' in path names. The file names '.' and '..' are reserved for use in hierarchical directory structures for the current directory and the parent of the current directory, respectively.
Unless otherwise specified in the descriptions below, data buffers may be accessed without concern for the accessibility of the data. OS/2 will either check buffers for accessibility and lock them, or transfer them into locally accessible data areas.
Simple parameters will be verified by the IFS router before the FS service routine is called.
- Note
- New with 2.0, some entry points need only be exported and supported by those FSDs which desire to service the pager (PAGE I/0), UNC servers (UNC) and/or file locking (FILE I/O). With these new entry point groups, a FSD must export all or none of the entry points within a particular group.
These optional entry points are:
FS_ALLOCATEPAGESPACE (PAGE I/O) FS_CANCELLOCKREQUEST (FILE I/O) FS_DOPAGEIO (PAGE I/O) FS_FILELOCKS (FILE I/O) FS_OPENPAGEFILE (PAGE I/O) FS_VERIFYUNCNAME (UNC)