File systems are modules now.

Added prototype for unremove_vnode(), some other minor changes.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7805 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2004-06-07 17:14:17 +00:00
parent 287704526b
commit 34c763c98f
+10 -11
View File
@@ -6,9 +6,9 @@
#ifndef _FS_INTERFACE_H
#define _FS_INTERFACE_H
#include <ktypes.h>
#include <vfs_types.h>
#include <OS.h>
#include <module.h>
#include <vfs_types.h>
struct dirent;
struct stat;
@@ -36,19 +36,21 @@ enum write_stat_mask {
/* passed to write_fs_info() */
#define FS_WRITE_FSINFO_NAME 0x0001
#define B_CURRENT_FS_API_VERSION 1
#define B_CURRENT_FS_API_VERSION "/v1"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct fs_ops {
typedef struct file_system_info {
struct module_info module_info;
/* general operations */
status_t (*mount)(mount_id id, const char *device, void *args, fs_volume *_fs, vnode_id *_rootVnodeID);
status_t (*unmount)(fs_volume fs);
status_t (*read_fs_info)(fs_volume fs, struct fs_info *info);
status_t (*write_fs_info)(fs_volume fs, const struct fs_info *info, int mask);
status_t (*write_fs_info)(fs_volume fs, const struct fs_info *info, uint32 mask);
status_t (*sync)(fs_volume fs);
/* vnode operations */
@@ -78,7 +80,7 @@ typedef struct fs_ops {
status_t (*access)(fs_volume fs, fs_vnode vnode, int mode);
status_t (*read_stat)(fs_volume fs, fs_vnode vnode, struct stat *stat);
status_t (*write_stat)(fs_volume fs, fs_vnode vnode, const struct stat *stat, int statMask);
status_t (*write_stat)(fs_volume fs, fs_vnode vnode, const struct stat *stat, uint32 statMask);
/* file operations */
status_t (*create)(fs_volume fs, fs_vnode dir, const char *name, int openMode, int perms, fs_cookie *_cookie, vnode_id *_newVnodeID);
@@ -134,18 +136,15 @@ typedef struct fs_ops {
status_t (*free_query_cookie)(fs_volume fs, fs_cookie cookie);
status_t (*read_query)(fs_volume fs, fs_cookie cookie, struct dirent *buffer, size_t bufferSize, uint32 *_num);
status_t (*rewind_query)(fs_volume fs, fs_cookie cookie);
} fs_ops;
} file_system_info;
/* variables exported by the file system add-on */
extern fs_ops fs_entry;
extern int32 api_version;
/* file system add-ons only prototypes */
extern status_t new_vnode(mount_id mountID, vnode_id vnodeID, fs_vnode privateNode);
extern status_t get_vnode(mount_id mountID, vnode_id vnodeID, fs_vnode *_privateNode);
extern status_t put_vnode(mount_id mountID, vnode_id vnodeID);
extern status_t remove_vnode(mount_id mountID, vnode_id vnodeID);
extern status_t unremove_vnode(mount_id mountID, vnode_id vnodeID);
extern status_t notify_listener(int op, mount_id device, vnode_id parentNode,
vnode_id toParentNode, vnode_id node, const char *name);