VM: simplify slab allocator
[minix.git] / include / minix / vtreefs.h
blob9a7473ecefeac61f9338d7c016bd0e4f7313af33
1 #ifndef _MINIX_VTREEFS_H
2 #define _MINIX_VTREEFS_H
4 struct inode;
5 typedef int index_t;
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.
13 #define PNAME_MAX 24
15 struct inode_stat {
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) */
23 struct fs_hooks {
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,
31 cbdata_t cbdata);
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 */