• Ben Avison's avatar
    Miscellaneous improvements · a6f1b1d7
    Ben Avison authored
    Detail:
      * Added the ability for a filing system to specify to FileCore that floppy
        discs should be mounted like hard discs, to complement the existing flag
        that specifies the opposite. SDFS requires this. Ideally SCSIFS should
        start using this as well, to encapsulate boot block handling within
        FileCore.
      * Added header definitions so the FileCore and the filing systems can
        negotiate the use of a new MiscOp entry, needed as part of partitioning
        support, especially important for filing systems that use the hardware-
        specific section of the boot block, like ADFS. At present, FileCore
        doesn't do anything different (it still doesn't support partitions) but
        this enables filing systems to be modified in preparation.
      * Removed the only place where FileCore paid any attention to the
        EmptyWorks flag returned by MiscOp 1 - an obscure and not very useful
        edge case not used by any current filing systems.
      * Added 650 lines of documentation for the MiscOp SWI and low-level entry
        to the Doc directory, giving the information you need in order to
        implement a FileCore filing system.
      * Added missing header file definitions for the low-level background DiscOp
        reason code and the hot-plug drive removed flag to MiscOp 7.
      * Removed some RISC OS 2 legacy code whereby FileCore maintained its idea
        of the internal disc address of the CSD @, PSD \, Library % and URD & for
        each filing system. Since RISC OS 3.00, FileSwitch handles these
        internally and passes canonicalised paths to FileCore, so FileCore's disc
        addresses for these directories remained unset. This allows some
        considerable simplification of FileCore's path parser in particular, but
        also affects other code like that which decides how to expire disc
        records. Also note that FileCore has been unable to generate certain
        errors (like "Can't delete current directory") since RISC OS 3.00 for the
        same reason.
      * Changed loading of the map for FileCore-format discs so that the map is
        loaded into the dynamic area during the Service_IdentifyDisc handler in
        one big DiscOp rather than loading it twice, sector-by-sector, via one
        big sector cache. For one thing, the sector cache is implemented
        inefficiently - O(n^2) - and for another thing, single-sector DiscOps are
        relatively inefficient on many filing systems, especially on SD cards.
        Some example speed-ups measured for mounting discs are:
          SCSIFS,   1GB drive: was 0.62 sec, now 0.40 sec (1.55 x speedup)
          SCSIFS, 256GB drive: was 1.44 sec, now 0.52 sec (2.77 x speedup)
          SDFS,     2GB drive: was 1.25 sec, now 0.14 sec (8.93 x speedup)
    Admin:
      Tested on a beagleboard, with SCSIFS and SDFS.
    
    Version 3.50. Tagged as 'FileCore-3_50'
    a6f1b1d7
FileCore40 63.8 KB