X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fvfs%2Fmmap.c;h=9fe9282c309b4a52cc15dad8e41f5e74f3910099;hb=a2495c6ea4f4cab16b5d339ae511428e92e89e73;hp=b5285af0187db7214c6f82f42589bcac95f97acd;hpb=2a8b49ac62c721023328ed75992f71ce7f2e49bf;p=tpg%2Facess2.git diff --git a/Kernel/vfs/mmap.c b/Kernel/vfs/mmap.c index b5285af0..9fe9282c 100644 --- a/Kernel/vfs/mmap.c +++ b/Kernel/vfs/mmap.c @@ -5,7 +5,7 @@ * mmap.c * - VFS_MMap support */ -#define DEBUG 1 +#define DEBUG 0 #include #include #include @@ -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 ); // }