Changeset 0d6ab10 in mainline


Ignore:
Timestamp:
2011-03-18T20:39:48Z (13 years ago)
Author:
Maurizio Lombardi <m.lombardi85@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
930baca
Parents:
fe4ac35
Message:

Add mfs_stat() function and link mfs_size_get() function to the libfs_ops structure.

Location:
uspace/srv/fs/minixfs
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/minixfs/mfs.c

    rfe4ac35 r0d6ab10  
    104104                        mfs_mount(callid, &call);
    105105                        break;
     106                case VFS_OUT_STAT:
     107                        mfs_stat(callid, &call);
     108                        break;
    106109                default:
    107110                        async_answer_0(callid, ENOTSUP);
  • uspace/srv/fs/minixfs/mfs.h

    rfe4ac35 r0d6ab10  
    101101extern void mfs_mounted(ipc_callid_t rid, ipc_call_t *request);
    102102extern void mfs_mount(ipc_callid_t rid, ipc_call_t *request);
     103extern aoff64_t mfs_size_get(fs_node_t *node);
    103104extern bool mfs_is_directory(fs_node_t *fsnode);
    104105extern bool mfs_is_file(fs_node_t *fsnode);
     
    109110int mfs_node_get(fs_node_t **rfn, devmap_handle_t devmap_handle,
    110111                        fs_index_t index);
     112
     113extern void mfs_stat(ipc_callid_t rid, ipc_call_t *request);
    111114
    112115/*mfs_inode.c*/
  • uspace/srv/fs/minixfs/mfs_ops.c

    rfe4ac35 r0d6ab10  
    3333#include <stdio.h>
    3434#include <stdlib.h>
     35#include <assert.h>
    3536#include <fibril_synch.h>
    3637#include <errno.h>
     
    4748
    4849libfs_ops_t mfs_libfs_ops = {
     50        .size_get = mfs_size_get,
    4951        .root_get = mfs_root_get,
    5052        .device_get = mfs_device_get,
     
    206208        struct mfs_node *node = fsnode->data;
    207209        return node->instance->handle;
     210}
     211
     212aoff64_t mfs_size_get(fs_node_t *node)
     213{
     214        aoff64_t size;
     215
     216        mfsdebug("request for inode size\n");
     217        assert(node);
     218
     219        const struct mfs_node *mnode = node->data;
     220        assert(mnode);
     221
     222        const struct mfs_instance *inst = mnode->instance;
     223        assert(inst);
     224
     225        const struct mfs_sb_info *sbi = inst->sbi;
     226        assert(sbi);
     227
     228        if (sbi->fs_version == MFS_VERSION_V1) {
     229                struct mfs_inode *ino;
     230                ino = mnode->ino;
     231                size = ino->i_size;
     232        } else {
     233                struct mfs2_inode *ino2;
     234                ino2 = mnode->ino2;
     235                size = ino2->i_size;
     236        }
     237
     238        return size;
     239}
     240
     241void mfs_stat(ipc_callid_t rid, ipc_call_t *request)
     242{
     243        mfsdebug("mfs_stat called\n");
     244        libfs_stat(&mfs_libfs_ops, mfs_reg.fs_handle, rid, request);
    208245}
    209246
Note: See TracChangeset for help on using the changeset viewer.