X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FStorage%2FFDD%2Ffdd.c;h=974e5295531353273ea5b37e629ccee7023c602f;hb=7d881c2e5fef91a6570e46ef69a5d4a5cf0e8b4d;hp=2784b3c508f411d35d449173dcc169c64c3fa234;hpb=4b80e9762374558077e28e321d75029645529a45;p=tpg%2Facess2.git diff --git a/Modules/Storage/FDD/fdd.c b/Modules/Storage/FDD/fdd.c index 2784b3c5..974e5295 100644 --- a/Modules/Storage/FDD/fdd.c +++ b/Modules/Storage/FDD/fdd.c @@ -88,7 +88,7 @@ enum FloppyCommands { void FDD_UnloadModule(); // --- VFS Methods char *FDD_ReadDir(tVFS_Node *Node, int pos); -tVFS_Node *FDD_FindDir(tVFS_Node *dirNode, char *Name); +tVFS_Node *FDD_FindDir(tVFS_Node *dirNode, const char *Name); int FDD_IOCtl(tVFS_Node *Node, int ID, void *Data); Uint64 FDD_ReadFS(tVFS_Node *node, Uint64 off, Uint64 len, void *buffer); // --- Functions for IOCache/DrvUtil @@ -113,7 +113,7 @@ void FDD_int_StartMotor(int Disk); // === GLOBALS === MODULE_DEFINE(0, FDD_VERSION, FDD, FDD_Install, NULL, "ISADMA", NULL); t_floppyDevice gFDD_Devices[2]; -tSpinlock glFDD; +tMutex glFDD; volatile int gbFDD_IrqFired = 0; tDevFS_Driver gFDD_DriverInfo = { NULL, "fdd", @@ -214,12 +214,12 @@ void FDD_UnloadModule() { int i; //DevFS_DelDevice( &gFDD_DriverInfo ); - LOCK(&glFDD); + Mutex_Acquire(&glFDD); for(i=0;i<4;i++) { Time_RemoveTimer(gFDD_Devices[i].timer); - FDD_int_StopMotor((void*)i); + FDD_int_StopMotor((void *)(Uint)i); } - RELEASE(&glFDD); + Mutex_Release(&glFDD); //IRQ_Clear(6); } @@ -227,7 +227,7 @@ void FDD_UnloadModule() * \fn char *FDD_ReadDir(tVFS_Node *Node, int pos) * \brief Read Directory */ -char *FDD_ReadDir(tVFS_Node *Node, int Pos) +char *FDD_ReadDir(tVFS_Node *UNUSED(Node), int Pos) { char name[2] = "0\0"; @@ -241,10 +241,10 @@ char *FDD_ReadDir(tVFS_Node *Node, int Pos) } /** - * \fn tVFS_Node *FDD_FindDir(tVFS_Node *Node, char *filename); + * \fn tVFS_Node *FDD_FindDir(tVFS_Node *Node, const char *filename); * \brief Find File Routine (for vfs_node) */ -tVFS_Node *FDD_FindDir(tVFS_Node *Node, char *Filename) +tVFS_Node *FDD_FindDir(tVFS_Node *UNUSED(Node), const char *Filename) { int i; @@ -287,14 +287,11 @@ static const char *casIOCTLS[] = {DRV_IOCTLNAMES,DRV_DISK_IOCTLNAMES,NULL}; * \fn int FDD_IOCtl(tVFS_Node *Node, int id, void *data) * \brief Stub ioctl function */ -int FDD_IOCtl(tVFS_Node *Node, int ID, void *Data) +int FDD_IOCtl(tVFS_Node *UNUSED(Node), int ID, void *Data) { switch(ID) { - case DRV_IOCTL_TYPE: return DRV_TYPE_DISK; - case DRV_IOCTL_IDENT: return ModUtil_SetIdent(Data, "FDD"); - case DRV_IOCTL_VERSION: return FDD_VERSION; - case DRV_IOCTL_LOOKUP: return ModUtil_LookupString((char**)casIOCTLS, Data); + BASE_IOCTLS(DRV_TYPE_DISK, "FDD", FDD_VERSION, casIOCTLS); case DISK_IOCTL_GETBLOCKSIZE: return 512; @@ -373,11 +370,11 @@ int FDD_int_ReadWriteSector(Uint32 Disk, Uint64 SectorAddr, int Write, void *Buf } LOG("Cyl=%i, Head=%i, Sector=%i", cyl, head, sec); - LOCK(&glFDD); // Lock to stop the motor stopping on us + Mutex_Acquire(&glFDD); // Lock to stop the motor stopping on us Time_RemoveTimer(gFDD_Devices[Disk].timer); // Remove Old Timer // Start motor if needed if(gFDD_Devices[Disk].motorState != 2) FDD_int_StartMotor(Disk); - RELEASE(&glFDD); + Mutex_Release(&glFDD); LOG("Wait for the motor to spin up"); @@ -385,7 +382,7 @@ int FDD_int_ReadWriteSector(Uint32 Disk, Uint64 SectorAddr, int Write, void *Buf while(gFDD_Devices[Disk].motorState == 1) Threads_Yield(); LOG("Acquire Spinlock"); - LOCK(&glFDD); + Mutex_Acquire(&glFDD); // Seek to track outb(base + CALIBRATE_DRIVE, 0); @@ -393,7 +390,7 @@ int FDD_int_ReadWriteSector(Uint32 Disk, Uint64 SectorAddr, int Write, void *Buf while(FDD_int_SeekTrack(Disk, head, (Uint8)cyl) == 0 && i++ < FDD_SEEK_TIMEOUT ) Threads_Yield(); if( i > FDD_SEEK_TIMEOUT ) { - RELEASE(&glFDD); + Mutex_Release(&glFDD); LEAVE('i', 0); return 0; } @@ -490,7 +487,7 @@ int FDD_int_ReadWriteSector(Uint32 Disk, Uint64 SectorAddr, int Write, void *Buf // Release Spinlock LOG("Realeasing Spinlock and setting motor to stop"); - RELEASE(&glFDD); + Mutex_Release(&glFDD); if(i == FDD_MAX_READWRITE_ATTEMPTS) { Log_Warning("FDD", "Exceeded %i attempts in %s the disk", @@ -777,7 +774,7 @@ void FDD_Reset(int id) */ void FDD_int_TimerCallback(void *Arg) { - int disk = (int)Arg; + int disk = (Uint)Arg; ENTER("iarg", disk); if(gFDD_Devices[disk].motorState == 1) gFDD_Devices[disk].motorState = 2; @@ -806,8 +803,8 @@ void FDD_int_StartMotor(int disk) */ void FDD_int_StopMotor(void *Arg) { - Uint8 state, disk = (int)Arg; - if( IS_LOCKED(&glFDD) ) return ; + Uint8 state, disk = (Uint)Arg; + if( Mutex_IsLocked(&glFDD) ) return ; ENTER("iDisk", disk); state = inb( cPORTBASE[ disk>>1 ] + PORT_DIGOUTPUT );