Changeset 05b9912 in mainline for uspace/srv/vfs/vfs.h
- Timestamp:
- 2009-06-03T18:54:49Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 17fd1d4
- Parents:
- 215abc1
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/vfs/vfs.h
r215abc1 r05b9912 29 29 /** @addtogroup fs 30 30 * @{ 31 */ 31 */ 32 32 33 33 #ifndef VFS_VFS_H_ … … 41 41 #include <devmap.h> 42 42 #include <bool.h> 43 #include <ipc/vfs.h> 43 44 44 45 // FIXME: according to CONFIG_DEBUG 45 // #define dprintf(...) 46 // #define dprintf(...) printf(__VA_ARGS__) 46 47 47 48 #define dprintf(...) 48 49 #define VFS_FIRST IPC_FIRST_USER_METHOD50 51 /* Basic types. */52 typedef int16_t fs_handle_t;53 typedef uint32_t fs_index_t;54 55 typedef enum {56 VFS_READ = VFS_FIRST,57 VFS_WRITE,58 VFS_TRUNCATE,59 VFS_MOUNT,60 VFS_UNMOUNT,61 VFS_LAST_CMN, /* keep this the last member of this enum */62 } vfs_request_cmn_t;63 64 typedef enum {65 VFS_LOOKUP = VFS_LAST_CMN,66 VFS_MOUNTED,67 VFS_DESTROY,68 VFS_LAST_CLNT, /* keep this the last member of this enum */69 } vfs_request_clnt_t;70 71 typedef enum {72 VFS_REGISTER = VFS_LAST_CMN,73 VFS_OPEN,74 VFS_CLOSE,75 VFS_SEEK,76 VFS_MKDIR,77 VFS_UNLINK,78 VFS_RENAME,79 VFS_LAST_SRV, /* keep this the last member of this enum */80 } vfs_request_srv_t;81 82 #define FS_NAME_MAXLEN 2083 84 /**85 * A structure like this is passed to VFS by each individual FS upon its86 * registration. It assosiates a human-readable identifier with each87 * registered FS.88 */89 typedef struct {90 /** Unique identifier of the fs. */91 char name[FS_NAME_MAXLEN + 1];92 } vfs_info_t;93 49 94 50 /** … … 106 62 * VFS_PAIR uniquely represents a file system instance. 107 63 */ 108 #define VFS_PAIR 109 fs_handle_t fs_handle; 64 #define VFS_PAIR \ 65 fs_handle_t fs_handle; \ 110 66 dev_handle_t dev_handle; 111 67 … … 117 73 * IPC reply. 118 74 */ 119 #define VFS_TRIPLET 120 VFS_PAIR; 75 #define VFS_TRIPLET \ 76 VFS_PAIR; \ 121 77 fs_index_t index; 122 78 … … 128 84 VFS_TRIPLET; 129 85 } vfs_triplet_t; 130 131 /*132 * Lookup flags.133 */134 /**135 * No lookup flags used.136 */137 #define L_NONE 0138 /**139 * Lookup will succeed only if the object is a regular file. If L_CREATE is140 * specified, an empty file will be created. This flag is mutually exclusive141 * with L_DIRECTORY.142 */143 #define L_FILE 1144 /**145 * Lookup wil succeed only if the object is a directory. If L_CREATE is146 * specified, an empty directory will be created. This flag is mutually147 * exclusive with L_FILE.148 */149 #define L_DIRECTORY 2150 /**151 * When used with L_CREATE, L_EXCLUSIVE will cause the lookup to fail if the152 * object already exists. L_EXCLUSIVE is implied when L_DIRECTORY is used.153 */154 #define L_EXCLUSIVE 4155 /**156 * L_CREATE is used for creating both regular files and directories.157 */158 #define L_CREATE 8159 /**160 * L_LINK is used for linking to an already existing nodes.161 */162 #define L_LINK 16163 /**164 * L_UNLINK is used to remove leaves from the file system namespace. This flag165 * cannot be passed directly by the client, but will be set by VFS during166 * VFS_UNLINK.167 */168 #define L_UNLINK 32169 86 170 87 typedef enum vfs_node_type { … … 235 152 extern vfs_pair_t rootfs; /**< Root file system. */ 236 153 237 #define MAX_PATH_LEN (64 * 1024)238 239 #define PLB_SIZE (2 * MAX_PATH_LEN)240 241 154 /** Each instance of this type describes one path lookup in progress. */ 242 155 typedef struct { … … 260 173 extern fs_handle_t fs_name_to_handle(char *, bool); 261 174 262 extern int vfs_lookup_internal(char *, int, vfs_lookup_res_t *, vfs_pair_t *, 263 ...); 175 extern int vfs_lookup_internal(char *, int, vfs_lookup_res_t *, 176 vfs_pair_t *, ...); 177 extern int vfs_open_node_internal(vfs_lookup_res_t *); 264 178 265 179 extern bool vfs_nodes_init(void); … … 284 198 extern void vfs_mount(ipc_callid_t, ipc_call_t *); 285 199 extern void vfs_open(ipc_callid_t, ipc_call_t *); 200 extern void vfs_open_node(ipc_callid_t, ipc_call_t *); 201 extern void vfs_device(ipc_callid_t, ipc_call_t *); 202 extern void vfs_sync(ipc_callid_t, ipc_call_t *); 203 extern void vfs_node(ipc_callid_t, ipc_call_t *); 286 204 extern void vfs_close(ipc_callid_t, ipc_call_t *); 287 205 extern void vfs_read(ipc_callid_t, ipc_call_t *);
Note:
See TracChangeset
for help on using the changeset viewer.