1 #ifndef _MINIX_VTREEFS_H
2 #define _MINIX_VTREEFS_H
6 typedef void *cbdata_t
;
8 #define NO_INDEX ((index_t) -1)
10 /* Maximum file name length, excluding terminating null character. It is set
11 * to a low value to limit memory usage, but can be changed to any value.
16 mode_t mode
; /* file mode (type and permissions) */
17 uid_t uid
; /* user ID */
18 gid_t gid
; /* group ID */
19 off_t size
; /* file size */
20 dev_t dev
; /* device number (for char/block type files) */
24 void (*init_hook
)(void);
25 void (*cleanup_hook
)(void);
26 int (*lookup_hook
)(struct inode
*inode
, char *name
, cbdata_t cbdata
);
27 int (*getdents_hook
)(struct inode
*inode
, cbdata_t cbdata
);
28 int (*read_hook
)(struct inode
*inode
, off_t offset
, char **ptr
,
29 size_t *len
, cbdata_t cbdata
);
30 int (*rdlink_hook
)(struct inode
*inode
, char *ptr
, size_t max
,
32 int (*message_hook
)(message
*m
);
35 extern struct inode
*add_inode(struct inode
*parent
, char *name
, index_t index
,
36 struct inode_stat
*stat
, index_t nr_indexed_entries
, cbdata_t cbdata
);
37 extern void delete_inode(struct inode
*inode
);
39 extern struct inode
*get_inode_by_name(struct inode
*parent
, char *name
);
40 extern struct inode
*get_inode_by_index(struct inode
*parent
, index_t index
);
42 extern char const *get_inode_name(struct inode
*inode
);
43 extern index_t
get_inode_index(struct inode
*inode
);
44 extern cbdata_t
get_inode_cbdata(struct inode
*inode
);
46 extern struct inode
*get_root_inode(void);
47 extern struct inode
*get_parent_inode(struct inode
*inode
);
48 extern struct inode
*get_first_inode(struct inode
*parent
);
49 extern struct inode
*get_next_inode(struct inode
*previous
);
51 extern void get_inode_stat(struct inode
*inode
, struct inode_stat
*stat
);
52 extern void set_inode_stat(struct inode
*inode
, struct inode_stat
*stat
);
54 extern void start_vtreefs(struct fs_hooks
*hooks
, unsigned int nr_inodes
,
55 struct inode_stat
*stat
, index_t nr_indexed_entries
);
57 #endif /* _MINIX_VTREEFS_H */