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