xref: /minix3/minix/lib/libpuffs/proto.h (revision ba736c796854b82e29da17267614db0a449419db)
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