1 #ifndef PUFFS_PROTO_H 2 #define PUFFS_PROTO_H 3 4 struct puffs_usermount; 5 struct puffs_node; 6 7 /* Function prototypes. */ 8 9 /* inode.c */ 10 int fs_putnode(ino_t ino_nr, unsigned int count); 11 void release_node(struct puffs_usermount *pu, struct puffs_node *pn ); 12 13 /* link.c */ 14 int fs_trunc(ino_t ino_nr, off_t start, off_t end); 15 int fs_link(ino_t dir_nr, char *name, ino_t ino_nr); 16 ssize_t fs_rdlink(ino_t ino_nr, struct fsdriver_data *data, size_t bytes); 17 int fs_rename(ino_t old_dir_nr, char *old_name, ino_t new_dir_nr, 18 char *new_name); 19 int fs_unlink(ino_t dir_nr, char *name, int call); 20 21 /* misc.c */ 22 void fs_sync(void); 23 24 /* mount.c */ 25 int fs_mount(dev_t dev, unsigned int flags, struct fsdriver_node *root_node, 26 unsigned int *res_flags); 27 void fs_unmount(void); 28 int fs_mountpt(ino_t ino_nr); 29 30 /* open.c */ 31 int fs_create(ino_t dir_nr, char *name, mode_t mode, uid_t uid, gid_t gid, 32 struct fsdriver_node *node); 33 int fs_mkdir(ino_t dir_nr, char *name, mode_t mode, uid_t uid, gid_t gid); 34 int fs_mknod(ino_t dir_nr, char *name, mode_t mode, uid_t uid, gid_t gid, 35 dev_t dev); 36 int fs_slink(ino_t dir_nr, char *name, uid_t uid, gid_t gid, 37 struct fsdriver_data *data, size_t bytes); 38 39 /* path.c */ 40 int fs_lookup(ino_t dir_nr, char *name, struct fsdriver_node *node, 41 int *is_mountpt); 42 struct puffs_node *advance(struct puffs_node *dirp, char string[NAME_MAX + 1]); 43 44 /* protect.c */ 45 int fs_chmod(ino_t ino_nr, mode_t *mode); 46 int fs_chown(ino_t ino_nr, uid_t uid, gid_t gid, mode_t *mode); 47 48 /* read.c */ 49 ssize_t fs_read(ino_t ino_nr, struct fsdriver_data *data, size_t bytes, 50 off_t pos, int call); 51 ssize_t fs_write(ino_t ino_nr, struct fsdriver_data *data, size_t bytes, 52 off_t pos, int call); 53 ssize_t fs_getdents(ino_t ino_nr, struct fsdriver_data *data, size_t bytes, 54 off_t *pos); 55 56 /* stadir.c */ 57 int fs_stat(ino_t ino, struct stat *statbuf); 58 int fs_statvfs(struct statvfs *st); 59 60 /* time.c */ 61 int fs_utime(ino_t ino_nr, struct timespec *atime, struct timespec *mtime); 62 63 /* utility.c */ 64 void *find_inode_cb(struct puffs_usermount *pu, struct puffs_node *pn, 65 void *arg); 66 int update_timens(struct puffs_node *pn, int fl, struct timespec *); 67 68 #endif /* PUFFS_PROTO_H */ 69