Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 595edf5 in mainline


Ignore:
Timestamp:
2009-06-03T19:28:15Z (13 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master
Children:
36b8100a
Parents:
d00ae4c
Message:

add libfs_open_node() helper function
cleanup

Location:
uspace/lib/libfs
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/libfs/libfs.c

    rd00ae4c r595edf5  
    4343#include <assert.h>
    4444#include <dirent.h>
     45#include <mem.h>
    4546
    4647/** Register file system server.
     
    209210 * as returned by the canonify() function.
    210211 *
    211  * @param ops           libfs operations structure with function pointers to
    212  *                      file system implementation
    213  * @param fs_handle     File system handle of the file system where to perform
    214  *                      the lookup.
    215  * @param rid           Request ID of the VFS_LOOKUP request.
    216  * @param request       VFS_LOOKUP request data itself.
     212 * @param ops       libfs operations structure with function pointers to
     213 *                  file system implementation
     214 * @param fs_handle File system handle of the file system where to perform
     215 *                  the lookup.
     216 * @param rid       Request ID of the VFS_LOOKUP request.
     217 * @param request   VFS_LOOKUP request data itself.
     218 *
    217219 */
    218220void libfs_lookup(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_callid_t rid,
     
    427429}
    428430
     431/** Open VFS triplet.
     432 *
     433 * @param ops       libfs operations structure with function pointers to
     434 *                  file system implementation
     435 * @param rid       Request ID of the VFS_OPEN_NODE request.
     436 * @param request   VFS_OPEN_NODE request data itself.
     437 *
     438 */
     439void libfs_open_node(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_callid_t rid,
     440    ipc_call_t *request)
     441{
     442        dev_handle_t dev_handle = IPC_GET_ARG1(*request);
     443        fs_index_t index = IPC_GET_ARG2(*request);
     444       
     445        fs_node_t *node = ops->node_get(dev_handle, index);
     446       
     447        if (node == NULL) {
     448                ipc_answer_0(rid, ENOENT);
     449                return;
     450        }
     451       
     452        ipc_answer_5(rid, EOK, fs_handle, dev_handle, index,
     453            ops->size_get(node), ops->lnkcnt_get(node));
     454       
     455        ops->node_put(node);
     456}
     457
    429458/** @}
    430459 */
  • uspace/lib/libfs/libfs.h

    rd00ae4c r595edf5  
    2727 */
    2828
    29 /** @addtogroup libfs 
     29/** @addtogroup libfs
    3030 * @{
    31  */ 
     31 */
    3232/**
    3333 * @file
     
    3535
    3636#ifndef LIBFS_LIBFS_H_
    37 #define LIBFS_LIBFS_H_
     37#define LIBFS_LIBFS_H_
    3838
    39 #include "../../srv/vfs/vfs.h"
     39#include <ipc/vfs.h>
    4040#include <stdint.h>
    4141#include <ipc/ipc.h>
    4242#include <async.h>
     43#include <devmap.h>
    4344
    4445typedef struct {
     
    5051
    5152typedef struct {
    52         mp_data_t mp_data;      /**< Mount point info. */
    53         void *data;             /**< Data of the file system implementation. */
     53        mp_data_t mp_data;  /**< Mount point info. */
     54        void *data;         /**< Data of the file system implementation. */
    5455} fs_node_t;
    5556
     
    6768        bool (* has_children)(fs_node_t *);
    6869        fs_node_t *(* root_get)(dev_handle_t);
    69         char (* plb_get_char)(unsigned pos);   
     70        char (* plb_get_char)(unsigned pos);
    7071        bool (* is_directory)(fs_node_t *);
    7172        bool (* is_file)(fs_node_t *);
     
    7374
    7475typedef struct {
    75         int fs_handle;          /**< File system handle. */
    76         ipcarg_t vfs_phonehash; /**< Initial VFS phonehash. */
    77         uint8_t *plb_ro;        /**< Read-only PLB view. */
     76        int fs_handle;           /**< File system handle. */
     77        ipcarg_t vfs_phonehash;  /**< Initial VFS phonehash. */
     78        uint8_t *plb_ro;         /**< Read-only PLB view. */
    7879} fs_reg_t;
    7980
     
    8485extern void libfs_mount(libfs_ops_t *, fs_handle_t, ipc_callid_t, ipc_call_t *);
    8586extern void libfs_lookup(libfs_ops_t *, fs_handle_t, ipc_callid_t, ipc_call_t *);
     87extern void libfs_open_node(libfs_ops_t *, fs_handle_t, ipc_callid_t,
     88    ipc_call_t *);
    8689
    8790#endif
     
    8992/** @}
    9093 */
    91 
Note: See TracChangeset for help on using the changeset viewer.