[Freedos-32-dev] Integrating FAT driver and disk code
Status: Pre-Alpha
Brought to you by:
salvois
From: Salvo I. <sa...@li...> - 2001-10-14 09:47:50
|
Hello, I've started to patch the FAT driver, the new BIOSDisk driver and the Partition Manager to work together, exporting their featres using the FD32 driver engine I've coded, according to the last RFC I released. The result seems very nice to me. Those modules are initialized in that order: - FAT driver, registers a "fat" device exporting a function to mount FAT volumes - Partition Manager, adds a new FD32 call "fd32_partition_scanner" - BIOSDisk driver, starts creating all disk I/O environment BIOSDisk initialization code scans for BIOS disk drives, and for each drive registers a device using the Linux naming convention (e.g. "fd0", "hda", "hdc"), and adds a block device driver interface to them. For each floppy device, the FD32 devices list is searched for file system drivers, and their "mount" functions are tried on that device: if such a file system is present on the floppy device, the file system driver adds a file system driver interface to the floppy device. For each hard disk device, the "fd32_partition_scanner" system call is issued, letting the Partition Manager to scan hard disk partitions. For each partition, the "add_partition" of the hard disk device is issued in order to register a new device for each partition found, using the same hard disk driver functions and parameters (this is the reason for which "add_partition" is exported by the block device interface of the hard disk). "add_partition" also searches the FD32 devices list for file system drivers, and their "mount" functions are tried on each partition device. If a file system is detected into the partition, the file system driver adds a file system driver interface to the partition device. At the end of the story, we have something like: - fd0, exports block device and file system driver interfaces - hda, exports block device driver interface - hda1, exports block device and file system driver interfaces - hda5, exports block device and file system driver interfaces and so on. My implementation of that seems to work fine. To read/write files into hda1, just query the hda1 device for a file system driver interface: a pointer to file system driver interface is returned. You can next use these function pointers to issue functions of the file system driver for that device. Actually this task has to be performed by the FD32 file system layer, that is under development. Bye, Salvo/Sampled Sensations E-mail: salvo AT sampsens.cjb.net Sampled Sensations - digital music : http://www.sampsens.cjb.net FreeDOS 32 - the 32-bit DOS : http://freedos-32.sourceforge.net PGP Key Fingerprint: 5991 4C97 D4D8 0B3D BA43 5398 BE9F 07E8 4CD2 1042 |