Kernel - Reworked x86 physical memory allocation
[tpg/acess2.git] / Kernel / vfs / io.c
index 8ff15f5..7260df7 100644 (file)
@@ -2,22 +2,11 @@
  * AcessMicro VFS
  * - File IO Passthru's
  */
+#define DEBUG  0
 #include <acess.h>
 #include "vfs.h"
 #include "vfs_int.h"
 
-#define DEBUG  0
-
-#if DEBUG
-#else
-# undef ENTER
-# undef LOG
-# undef LEAVE
-# define ENTER(...)
-# define LOG(...)
-# define LEAVE(...)
-#endif
-
 // === CODE ===
 /**
  * \fn Uint64 VFS_Read(int FD, Uint64 Length, void *Buffer)
@@ -31,23 +20,15 @@ Uint64 VFS_Read(int FD, Uint64 Length, void *Buffer)
        ENTER("iFD XLength pBuffer", FD, Length, Buffer);
        
        h = VFS_GetHandle(FD);
-       if(!h)  return -1;
+       if(!h)  LEAVE_RET('i', -1);
        
-       if( !(h->Mode & VFS_OPENFLAG_READ) || h->Node->Flags & VFS_FFLAG_DIRECTORY ) {
-               LEAVE('i', -1);
-               return -1;
-       }
+       if( !(h->Mode & VFS_OPENFLAG_READ) || h->Node->Flags & VFS_FFLAG_DIRECTORY )
+               LEAVE_RET('i', -1);
 
-       if(!h->Node->Read) {
-               LEAVE('i', 0);
-               return 0;
-       }
+       if(!h->Node->Read)      LEAVE_RET('i', 0);
        
        ret = h->Node->Read(h->Node, h->Position, Length, Buffer);
-       if(ret == -1) {
-               LEAVE('i', -1);
-               return -1;
-       }
+       if(ret == -1)   LEAVE_RET('i', -1);
        
        h->Position += ret;
        LEAVE('X', ret);
@@ -79,10 +60,10 @@ Uint64 VFS_ReadAt(int FD, Uint64 Offset, Uint64 Length, void *Buffer)
 }
 
 /**
- * \fn Uint64 VFS_Write(int FD, Uint64 Length, void *Buffer)
+ * \fn Uint64 VFS_Write(int FD, Uint64 Length, const void *Buffer)
  * \brief Read data from a node (file)
  */
-Uint64 VFS_Write(int FD, Uint64 Length, void *Buffer)
+Uint64 VFS_Write(int FD, Uint64 Length, const void *Buffer)
 {
        tVFS_Handle     *h;
        Uint64  ret;
@@ -95,17 +76,18 @@ Uint64 VFS_Write(int FD, Uint64 Length, void *Buffer)
 
        if(!h->Node->Write)     return 0;
        
-       ret = h->Node->Write(h->Node, h->Position, Length, Buffer);
+       // TODO: This is a hack, I need to change VFS_Node to have "const void*"
+       ret = h->Node->Write(h->Node, h->Position, Length, (void*)Buffer);
        if(ret == -1)   return -1;
        h->Position += ret;
        return ret;
 }
 
 /**
- * \fn Uint64 VFS_WriteAt(int FD, Uint64 Offset, Uint64 Length, void *Buffer)
- * \brief Write data to a file at a given offset (atomic)
+ * \fn Uint64 VFS_WriteAt(int FD, Uint64 Offset, Uint64 Length, const void *Buffer)
+ * \brief Write data to a file at a given offset
  */
-Uint64 VFS_WriteAt(int FD, Uint64 Offset, Uint64 Length, void *Buffer)
+Uint64 VFS_WriteAt(int FD, Uint64 Offset, Uint64 Length, const void *Buffer)
 {
        tVFS_Handle     *h;
        Uint64  ret;
@@ -117,7 +99,8 @@ Uint64 VFS_WriteAt(int FD, Uint64 Offset, Uint64 Length, void *Buffer)
        if( h->Node->Flags & VFS_FFLAG_DIRECTORY )      return -1;
 
        if(!h->Node->Write)     return 0;
-       ret = h->Node->Write(h->Node, Offset, Length, Buffer);
+       // TODO: This is a hack, I need to change VFS_Node to have "const void*"
+       ret = h->Node->Write(h->Node, Offset, Length, (void*)Buffer);
        if(ret == -1)   return -1;
        return ret;
 }
@@ -150,6 +133,9 @@ int VFS_Seek(int FD, Sint64 Offset, int Whence)
        h = VFS_GetHandle(FD);
        if(!h)  return -1;
        
+       //Log_Debug("VFS", "VFS_Seek: (fd=0x%x, Offset=0x%llx, Whence=%i)",
+       //      FD, Offset, Whence);
+       
        // Set relative to current position
        if(Whence == 0) {
                h->Position += Offset;

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