Kernel - Slight reworks to timer code
[tpg/acess2.git] / Kernel / vfs / mmap.c
index b5285af..9fe9282 100644 (file)
@@ -5,7 +5,7 @@
  * mmap.c
  * - VFS_MMap support
  */
-#define DEBUG  1
+#define DEBUG  0
 #include <acess.h>
 #include <vfs.h>
 #include <vfs_ext.h>
@@ -114,8 +114,13 @@ void *VFS_MMap(void *DestHint, size_t Length, int Protection, int Flags, int FD,
                {
                        if( pb->PhysAddrs[pagenum - pb->BaseOffset] == 0 )
                        {
-                               if( h->Node->MMap )
-                                       h->Node->MMap(h->Node, pagenum*PAGE_SIZE, PAGE_SIZE, (void*)mapping_dest);
+                               tVFS_NodeType   *nt = h->Node->Type;
+                               if( !nt ) 
+                               {
+                                       // TODO: error
+                               }
+                               else if( nt->MMap )
+                                       nt->MMap(h->Node, pagenum*PAGE_SIZE, PAGE_SIZE, (void*)mapping_dest);
                                else
                                {
                                         int    read_len;
@@ -127,7 +132,7 @@ void *VFS_MMap(void *DestHint, size_t Length, int Protection, int Flags, int FD,
                                                return NULL;
                                        }
                                        // TODO: Clip read length
-                                       read_len = h->Node->Read(h->Node, pagenum*PAGE_SIZE, PAGE_SIZE, (void*)mapping_dest);
+                                       read_len = nt->Read(h->Node, pagenum*PAGE_SIZE, PAGE_SIZE, (void*)mapping_dest);
 //                                     if( read_len != PAGE_SIZE ) {
 //                                             memset( (void*)(mapping_dest+read_len), 0, PAGE_SIZE-read_len );
 //                                     }

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