packvfs
annotate src/vnode.h @ 0:df5e9ee65a50
packvfs initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Fri, 02 Aug 2013 06:03:38 +0300 |
parents | |
children |
rev | line source |
---|---|
nuclear@0 | 1 #ifndef VNODE_H_ |
nuclear@0 | 2 #define VNODE_H_ |
nuclear@0 | 3 |
nuclear@0 | 4 #include "pvfs_impl.h" |
nuclear@0 | 5 |
nuclear@0 | 6 enum node_type { |
nuclear@0 | 7 VNODE_FILE, |
nuclear@0 | 8 VNODE_DIR |
nuclear@0 | 9 }; |
nuclear@0 | 10 |
nuclear@0 | 11 struct vnode { |
nuclear@0 | 12 char *name; |
nuclear@0 | 13 enum node_type type; |
nuclear@0 | 14 /* obj is PVFS_FILE* or PVFS_DIR* depending on type. |
nuclear@0 | 15 * use VFILE/VDIR macros to access. |
nuclear@0 | 16 */ |
nuclear@0 | 17 void *obj; |
nuclear@0 | 18 |
nuclear@0 | 19 /* this is a link to some other vnode which is mounted in this place */ |
nuclear@0 | 20 struct vnode *target; |
nuclear@0 | 21 |
nuclear@0 | 22 /* regular tree stuff */ |
nuclear@0 | 23 struct vnode *parent; |
nuclear@0 | 24 struct vnode *childlist; |
nuclear@0 | 25 struct vnode *next; |
nuclear@0 | 26 }; |
nuclear@0 | 27 |
nuclear@0 | 28 #define VFILE(n) \ |
nuclear@0 | 29 (assert((n)->type == VNODE_FILE), (PVFS_FILE*)(n)->obj) |
nuclear@0 | 30 #define VDIR(n) \ |
nuclear@0 | 31 (assert((n)->type == VNODE_DIR), (PVFS_DIR*)(n)->obj) |
nuclear@0 | 32 |
nuclear@0 | 33 struct vnode *vnode_create(const char *name); |
nuclear@0 | 34 struct vnode *vnode_create_file(const char *name, PVFS_FILE *fp); |
nuclear@0 | 35 struct vnode *vnode_create_dir(const char *name, PVFS_DIR *dir); |
nuclear@0 | 36 void vnode_free(struct vnode *n); |
nuclear@0 | 37 void vnode_destroy_tree(struct vnode *tree); |
nuclear@0 | 38 |
nuclear@0 | 39 struct vnode *vnode_lookup(const char *path); |
nuclear@0 | 40 #define vnode_getcwd() vnode_lookup("") |
nuclear@0 | 41 #define vnode_getroot() vnode_lookup("/") |
nuclear@0 | 42 |
nuclear@0 | 43 int vnode_chdir(const char *name); |
nuclear@0 | 44 int vnode_mkdir(struct vnode *parent, const char *name); |
nuclear@0 | 45 |
nuclear@0 | 46 #endif /* VNODE_H_ */ |