X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/f8bd95b7a13dfe54d800e2d7ecdb0329f0798289..c166bd62fbb907f95f79f621e2a2fb4fdde08e01:/lunaix-os/kernel/fs/ramfs/ramfs.c?ds=sidebyside diff --git a/lunaix-os/kernel/fs/ramfs/ramfs.c b/lunaix-os/kernel/fs/ramfs/ramfs.c index 37f8869..ca40efb 100644 --- a/lunaix-os/kernel/fs/ramfs/ramfs.c +++ b/lunaix-os/kernel/fs/ramfs/ramfs.c @@ -41,7 +41,7 @@ 'mountibility' for other fs. */ -volatile static inode_t ino = 0; +static volatile inode_t ino = 0; extern const struct v_inode_ops ramfs_inode_ops; extern const struct v_file_ops ramfs_file_ops; @@ -65,9 +65,7 @@ __ramfs_mknod(struct v_dnode* dnode, struct v_inode** nod_out, u32_t flags) rinode->flags = flags; inode->data = rinode; - if ((flags & RAMF_DIR)) { - inode->itype = VFS_IFDIR; - } else { + if (!(flags & RAMF_DIR)) { inode->itype = VFS_IFFILE; } @@ -119,8 +117,8 @@ void ramfs_inode_init(struct v_superblock* vsb, struct v_inode* inode) { inode->id = ino++; - inode->ops = &ramfs_inode_ops; - inode->default_fops = &ramfs_file_ops; + inode->ops = (struct v_inode_ops*)&ramfs_inode_ops; + inode->default_fops = (struct v_file_ops*)&ramfs_file_ops; } int @@ -146,6 +144,7 @@ ramfs_init() fsm_register(ramfs); } +EXPORT_FILE_SYSTEM(ramfs, ramfs_init); int ramfs_mksymlink(struct v_inode* this, const char* target) @@ -154,7 +153,7 @@ ramfs_mksymlink(struct v_inode* this, const char* target) assert(!(rinode->flags & RAMF_SYMLINK)); - size_t len = strlen(target); + size_t len = strlen(target) + 1; char* symlink = valloc(len); if (!symlink) { @@ -192,8 +191,10 @@ ramfs_unlink(struct v_inode* this) if ((rinode->flags & RAMF_SYMLINK)) { rinode->flags &= ~RAMF_SYMLINK; this->itype &= ~VFS_IFSYMLINK; + vfree(rinode->symlink); - return; + + return 0; } // TODO @@ -215,7 +216,8 @@ const struct v_inode_ops ramfs_inode_ops = { .mkdir = ramfs_mkdir, const struct v_file_ops ramfs_file_ops = { .readdir = ramfs_readdir, .close = default_file_close, .read = default_file_read, - .read_page = default_file_read, + .read_page = default_file_read_page, .write = default_file_write, - .write_page = default_file_write, + .write_page = + default_file_write_page, .seek = default_file_seek }; \ No newline at end of file