[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Device Drivers

I'm been looking at the direction that MiNT has been going, basically,
it seems as though XBIOS and BIOS functions will be provided by hooks
into MiNT device drivers and the rest of GEMDOS will be put into MiNT
also, so the end result is MiNT, device drivers, plus VDI+AES(optional),
and maybe some ROM XBIOS functions that MiNT will have no need to duplicate,
such as DSP functions.

Anyway, alot of people were talking about having a SCSI dev, and others
wanted a device driver that operated at a lower level that didn't understand
disks and such.   Can a driver in MiNT call another driver?   This would
be very useful.  Then the /dev/harddisk driver can call /dev/dma and
/dev/floppy can call /dev/dma or whatever names you want to give them.
TTs and Falcon would have /dev/scsi (probably different drivers for
each machine).  The names don't matter since they can be renamed.  Anyway,
having one driver call another would also be useful for MiNT NET.  Can
this be done?   If MiNT does not currently support this, what is involved in
changing this?

Next thing I wanted to mention was filesystems.  I think someone mentioned
that if a program was doing IO in a filesystem, and MiNT didn't lock access
to the filesystem, that there would be problems because the filesystems
weren't re-entrant?   Is this true?   If so, it would seem it would a
problem of stacks.  If you call the filesystem code with a separate stack
then wouldn't it become re-entrant?   Then what you would have is the
app calling the filesystem code, say minixfs, which calls /dev/harddisk,
/dev/harddisk queues the access until /dev/dma or /dev/scsi are free.
/dev/dma then handles the IO or whatever.   I don't know which level
would handle the queuing, but I would guess that all higher levels would
need to be re-entrant, no?

Basically, I'm trying to get some more discussion on this, since I don't
think anyone ever decided how it would all work.  I have the ehscsi driver
that someone posted, but its useless without a Falcon.  Does anyone have
any files that describe how the ACSI DMA status and mode control regs
are manipulated (0xff8606) and the disk data path reg (0xff8604) and I assume
that second is for floppy only?

I'm thinking of disassembling AHDI or Supra (since its only 2K) drivers to
see how they work.