FMS - routines to ease examining the file system.

Description:

The B FMS routines are a set of routines designed to make file system inspection simple and easy. They handle details like allocating buffer space and keeping a cache of buffers in memory to eliminate unnecessary disk reads. The basic user workhorse is F.GSEC which reads an arbitrary catalog sector.

To control the cache of catalog blocks, there are functions F.BUSY, F.UNBUSY, and F.RELB.

For accumulating permissions, there are functions F.INIT and F.CHKP.

As well, there are other functions for more complex activities:

F.GSMC   - Locate SMC on a device.
F.GUMC   - Fetch a users UMC, and check perms.
F.FIND   - Search a catalog level.
F.GCAT   - Search for and get a substucture element.
F.CHECK  - Test block type.
F.FMSGET - Perform some FMS "Get" functions
F.NAME   - Find a full pathname given the bottom level.
F.QSMC   - Query a user's SMC entry.
F.PMC    - Find a user's PMC entry on a removable pack.

Note also that the FMS routines use the upper halves of returned pointers for internal reference. The user should insure that the upper half of any pointer obtained is preserved from one FMS routine call to the next. If the upper half of a pointer is tampered with, the symptoms will either be an abort in F.UNBUSY or buffers which get overwritten despite a call to F.BUSY.

Since this upper half may be a memory address, there is a possibility that the value returned by the FMS routines will be negative, but not an error status. All FMS functions which return a "negative" error status should only be considered to give this status if the return is less than zero and greater than -64.

This problem does not occur if the maximum address is less than 128k words.

F.WHER is used to map one of these "memory address" pointers to a device and sector number.

Copyright © 1996, Thinkage Ltd.