fat_ops.c File Reference

Implementation of VFS operations for the FAT file system server. More...

#include "fat.h"
#include "fat_dentry.h"
#include "fat_fat.h"
#include "../../vfs/vfs.h"
#include <libfs.h>
#include <libblock.h>
#include <ipc/services.h>
#include <ipc/devmap.h>
#include <macros.h>
#include <async.h>
#include <errno.h>
#include <str.h>
#include <byteorder.h>
#include <adt/hash_table.h>
#include <adt/list.h>
#include <assert.h>
#include <fibril_synch.h>
#include <sys/mman.h>
#include <align.h>
#include <malloc.h>

Go to the source code of this file.

Defines

#define BPC(bs)   (BPS((bs)) * SPC((bs)))
#define DPS(bs)   (BPS((bs)) / sizeof(fat_dentry_t))
#define FAT_NODE(node)   ((node) ? (fat_node_t *) (node)->data : NULL)
#define FS_NODE(node)   ((node) ? (node)->bp : NULL)

Functions

void fat_close (ipc_callid_t, ipc_call_t *)
static int fat_create_node (fs_node_t **, devmap_handle_t, int)
void fat_destroy (ipc_callid_t, ipc_call_t *)
static int fat_destroy_node (fs_node_t *)
static devmap_handle_t fat_device_get (fs_node_t *node)
static int fat_has_children (bool *, fs_node_t *)
static fs_index_t fat_index_get (fs_node_t *)
static bool fat_is_directory (fs_node_t *)
static bool fat_is_file (fs_node_t *node)
static int fat_link (fs_node_t *, fs_node_t *, const char *)
static unsigned fat_lnkcnt_get (fs_node_t *)
void fat_lookup (ipc_callid_t, ipc_call_t *)
static int fat_match (fs_node_t **, fs_node_t *, const char *)
void fat_mount (ipc_callid_t, ipc_call_t *)
void fat_mounted (ipc_callid_t, ipc_call_t *)
static int fat_node_fini_by_devmap_handle (devmap_handle_t devmap_handle)
static int fat_node_get (fs_node_t **rfn, devmap_handle_t devmap_handle, fs_index_t index)
 Instantiate a FAT in-core node.
static int fat_node_get_core (fat_node_t **nodepp, fat_idx_t *idxp)
 Internal version of fat_node_get().
static int fat_node_get_new (fat_node_t **nodepp)
static void fat_node_initialize (fat_node_t *node)
static int fat_node_open (fs_node_t *)
static int fat_node_put (fs_node_t *)
static int fat_node_sync (fat_node_t *node)
void fat_open_node (ipc_callid_t, ipc_call_t *)
static char fat_plb_get_char (unsigned)
void fat_read (ipc_callid_t, ipc_call_t *)
static int fat_root_get (fs_node_t **, devmap_handle_t)
static aoff64_t fat_size_get (fs_node_t *)
void fat_stat (ipc_callid_t, ipc_call_t *)
void fat_sync (ipc_callid_t, ipc_call_t *)
void fat_truncate (ipc_callid_t, ipc_call_t *)
static int fat_unlink (fs_node_t *, fs_node_t *, const char *)
void fat_unmount (ipc_callid_t, ipc_call_t *)
void fat_unmounted (ipc_callid_t, ipc_call_t *)
void fat_write (ipc_callid_t, ipc_call_t *)
static FIBRIL_MUTEX_INITIALIZE (ffn_mutex)
 Mutex protecting the list of cached free FAT nodes.
static LIST_INITIALIZE (ffn_head)
 List of cached free FAT nodes.

Variables

libfs_ops_t fat_libfs_ops
 libfs operations


Detailed Description

Implementation of VFS operations for the FAT file system server.

Definition in file fat_ops.c.


Generated on Thu Jun 2 07:45:54 2011 for HelenOS/USB by  doxygen 1.4.7