Architectural Support: x86_64 (#37)
[lunaix-os.git] / lunaix-os / kernel / fs / vfs.c
index 28cede5e5a2ad44e2dc90487acb3dad79c98e93e..d4bc56a65c3f6784ef444b0ebcc271eec79b65fc 100644 (file)
@@ -47,7 +47,6 @@
 #include <lunaix/foptions.h>
 #include <lunaix/fs.h>
 #include <lunaix/mm/cake.h>
-#include <lunaix/mm/page.h>
 #include <lunaix/mm/valloc.h>
 #include <lunaix/process.h>
 #include <lunaix/spike.h>
@@ -117,7 +116,7 @@ __dcache_hash(struct v_dnode* parent, u32_t* hash)
     // 确保低位更加随机
     _hash = _hash ^ (_hash >> VFS_HASHBITS);
     // 与parent的指针值做加法,来减小碰撞的可能性。
-    _hash += (u32_t)parent;
+    _hash += (u32_t)__ptr(parent);
     *hash = _hash;
     return &dnode_cache[_hash & VFS_HASH_MASK];
 }
@@ -708,7 +707,7 @@ __DEFINE_LXSYSCALL3(int, read, int, fd, void*, buf, size_t, count)
     file->inode->atime = clock_unixtime();
 
     if ((file->inode->itype & VFS_IFSEQDEV) || (fd_s->flags & FO_DIRECT)) {
-    errno = file->ops->read(file->inode, buf, count, file->f_pos);
+        errno = file->ops->read(file->inode, buf, count, file->f_pos);
     } else {
         errno = pcache_read(file->inode, buf, count, file->f_pos);
     }
@@ -1337,7 +1336,7 @@ __DEFINE_LXSYSCALL2(char*, getcwd, char*, buf, size_t, size)
     ret_ptr = buf;
 
 done:
-    __current->k_status = errno;
+    syscall_result(errno);
     return ret_ptr;
 }
 
@@ -1454,7 +1453,7 @@ __DEFINE_LXSYSCALL2(int, fstat, int, fd, struct file_stat*, stat)
                                .st_blocks = vino->lb_usage,
                                .st_size = vino->fsize,
                                .mode = vino->itype,
-                               .st_ioblksize = PG_SIZE,
+                               .st_ioblksize = PAGE_SIZE,
                                .st_blksize = vino->sb->blksize};
 
     if (VFS_DEVFILE(vino->itype)) {