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