Included leading / in path parsing
[tpg/acess2.git] / Kernel / drv / ata_x86.c
index a4c5306..c2c5205 100644 (file)
@@ -2,6 +2,7 @@
  * Acess2 IDE Harddisk Driver
  * drv/ide.c
  */
+#define DEBUG  0
 #include <common.h>
 #include <modules.h>
 #include <vfs.h>
@@ -115,6 +116,7 @@ tDevFS_Driver       gATA_DriverInfo = {
        NULL, "ata",
        {
                .NumACLs = 1,
+               .Size = -1,
                .Flags = VFS_FFLAG_DIRECTORY,
                .ACLs = &gVFS_ACL_EveryoneRX,
                .ReadDir = ATA_ReadDir,
@@ -247,6 +249,8 @@ void ATA_SetupVFS()
                for( j = 0; j < gATA_Disks[i].NumPartitions; j ++ )
                        gATA_Nodes[ k++ ] = &gATA_Disks[i].Partitions[j].Node;
        }
+       
+       gATA_DriverInfo.RootNode.Size = giATA_NumNodes;
 }
 
 /**
@@ -604,7 +608,7 @@ Uint16 ATA_GetBasePort(int Disk)
 char *ATA_ReadDir(tVFS_Node *Node, int Pos)
 {
        if(Pos >= giATA_NumNodes || Pos < 0)    return NULL;
-       return gATA_Nodes[Pos]->ImplPtr;
+       return strdup( gATA_Nodes[Pos]->ImplPtr );
 }
 
 /**
@@ -793,7 +797,7 @@ int ATA_ReadDMA(Uint8 Disk, Uint64 Address, Uint Count, void *Buffer)
        ATA_int_BusMasterWriteByte( cont << 3, 9 );     // Read and start
        
        // Wait for transfer to complete
-       while( gaATA_IRQs[cont] == 0 )  Proc_Yield();
+       while( gaATA_IRQs[cont] == 0 )  Threads_Yield();
        
        // Complete Transfer
        ATA_int_BusMasterWriteByte( cont << 3, 0 );     // Write and stop

UCC git Repository :: git.ucc.asn.au