Changes between Version 4 and Version 5 of Ticket #2


Ignore:
Timestamp:
Dec 21, 2009, 9:27:46 AM (15 years ago)
Author:
Nicolas Pouillon
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #2 – Description

    v4 v5  
    1 = VFS types =
    2 
    3 {{{
    4 struct vfs_mount_state_s
    5 {
    6         vfs_fs_open_t *open;
    7         vfs_fs_lookup_t *lookup;
    8         vfs_fs_create_t *create;
    9         vfs_fs_link_t *link;
    10         vfs_fs_unlink_t *unlink;
    11         vfs_fs_stat_t *stat;
    12 
    13         struct vfs_node_dir_s *old_node;
    14         struct vfs_node_dir_s *root;
    15 };
    16 
    17 /* base object, inherited twice */
    18 struct vfs_node_base_s
    19 {
    20         CONTAINER_ENTRY_TYPE(HASHLIST) hash_entry;
    21         enum vfs_node_type_e type;
    22         struct vfs_mount_state_s *mount;
    23         char name[CONFIG_VFS_NAMELEN];
    24         struct vfs_node_dir_s *parent;
    25 };
    26 
    27 struct vfs_node_dir_s
    28 {
    29         struct vfs_node_base_s base;
    30         vfs_node_dir_entry_t obj_entry;
    31         vfs_dir_hash_root_t children;
    32 };
    33 
    34 struct vfs_node_leaf_s
    35 {
    36         struct vfs_node_base_s base;
    37         vfs_node_leaf_entry_t obj_entry;
    38 };
    39 
    40 /* opened file, it defines the operations */
    41 struct vfs_file_s
    42 {
    43         struct vfs_node_s *node;
    44         vfs_file_close_t *close;
    45         vfs_file_read_t *read;
    46         vfs_file_write_t *write;
    47         vfs_file_seek_t *seek;
    48 };
    49 }}}
    50 
    51 = VFS operations =
    52 
    53 {{{
    54 error_t vfs_mount(struct vfs_node_dir_s *mountpoint,
    55                                   struct vfs_node_dir_s *fs_root);
    56 
    57 error_t vfs_umount(struct vfs_node_dir_s *fs_root);
    58 
    59 error_t vfs_node_lookup(struct vfs_node_dir_s *parent,
    60                                                 const char *name,
    61                                                 size_t namelen,
    62                                                 struct vfs_node_base_s **node);
    63 
    64 error_t vfs_node_create(struct vfs_mount_state_s *fs,
    65                                                 enum vfs_node_type_e type,
    66                                                 struct vfs_node_base_s **node);
    67 
    68 error_t vfs_node_link(struct vfs_node_dir_s *parent,
    69                                           struct vfs_node_base_s *node,
    70                                           const char *name,
    71                                           size_t namelen);
    72 
    73 error_t vfs_node_unlink(struct vfs_node_dir_s *parent,
    74                                                 const char *name,
    75                                                 size_t namelen);
    76 
    77 error_t vfs_node_stat(struct vfs_node_base_s *node,
    78                                           struct vfs_stat_s *stat);
    79 
    80 error_t vfs_file_open(struct vfs_node_leaf_s *ref,
    81                                           struct vfs_file_s **file);
    82 }}}
     1[source:branches/200911-vfs/libvfs/include/vfs]