root / lab4 / .minix-src / include / minix / sffs.h @ 14
History | View | Annotate | Download (2.44 KB)
1 | 13 | up20180614 | /* Part of libsffs - (c) 2012, D.C. van Moolenbroek */
|
---|---|---|---|
2 | |||
3 | #ifndef _MINIX_SFFS_H
|
||
4 | #define _MINIX_SFFS_H
|
||
5 | |||
6 | #include <sys/types.h> |
||
7 | #include <sys/time.h> |
||
8 | #include <minix/u64.h> |
||
9 | |||
10 | typedef void *sffs_file_t; /* handle to open file */ |
||
11 | typedef void *sffs_dir_t; /* handle to directory search */ |
||
12 | |||
13 | struct sffs_attr {
|
||
14 | u32_t a_mask; /* which fields to retrieve/set */
|
||
15 | mode_t a_mode; /* file type and permissions */
|
||
16 | u64_t a_size; /* file size */
|
||
17 | struct timespec a_crtime; /* file creation time */ |
||
18 | struct timespec a_atime; /* file access time */ |
||
19 | struct timespec a_mtime; /* file modification time */ |
||
20 | struct timespec a_ctime; /* file change time */ |
||
21 | }; |
||
22 | |||
23 | #define SFFS_ATTR_SIZE 0x01 /* get/set file size */ |
||
24 | #define SFFS_ATTR_CRTIME 0x02 /* get/set file creation time */ |
||
25 | #define SFFS_ATTR_ATIME 0x04 /* get/set file access time */ |
||
26 | #define SFFS_ATTR_MTIME 0x08 /* get/set file modification time */ |
||
27 | #define SFFS_ATTR_CTIME 0x10 /* get/set file change time */ |
||
28 | #define SFFS_ATTR_MODE 0x20 /* get/set file mode */ |
||
29 | |||
30 | struct sffs_table {
|
||
31 | int (*t_open)(const char *path, int flags, int mode, sffs_file_t *handle); |
||
32 | ssize_t (*t_read)(sffs_file_t handle, char *buf, size_t size, u64_t pos);
|
||
33 | ssize_t (*t_write)(sffs_file_t handle, char *buf, size_t size, u64_t pos);
|
||
34 | int (*t_close)(sffs_file_t handle);
|
||
35 | |||
36 | size_t (*t_readbuf)(char **ptr);
|
||
37 | size_t (*t_writebuf)(char **ptr);
|
||
38 | |||
39 | int (*t_opendir)(const char *path, sffs_dir_t *handle); |
||
40 | int (*t_readdir)(sffs_dir_t handle, unsigned int index, char *buf, |
||
41 | size_t size, struct sffs_attr *attr);
|
||
42 | int (*t_closedir)(sffs_dir_t handle);
|
||
43 | |||
44 | int (*t_getattr)(const char *path, struct sffs_attr *attr); |
||
45 | int (*t_setattr)(const char *path, struct sffs_attr *attr); |
||
46 | |||
47 | int (*t_mkdir)(const char *path, int mode); |
||
48 | int (*t_unlink)(const char *path); |
||
49 | int (*t_rmdir)(const char *path); |
||
50 | int (*t_rename)(const char *opath, const char *npath); |
||
51 | |||
52 | int (*t_queryvol)(const char *path, u64_t *free, u64_t *total); |
||
53 | }; |
||
54 | |||
55 | struct sffs_params {
|
||
56 | char p_prefix[PATH_MAX]; /* prefix for all paths used */ |
||
57 | uid_t p_uid; /* UID that owns all files */
|
||
58 | gid_t p_gid; /* GID that owns all files */
|
||
59 | unsigned int p_file_mask; /* AND-mask to apply to file permissions */ |
||
60 | unsigned int p_dir_mask; /* AND-mask to apply to directory perms */ |
||
61 | int p_case_insens; /* case insensitivity flag */ |
||
62 | }; |
||
63 | |||
64 | int sffs_init(char *name, const struct sffs_table *table, |
||
65 | struct sffs_params *params);
|
||
66 | void sffs_signal(int signo); |
||
67 | void sffs_loop(void); |
||
68 | |||
69 | #endif /* _MINIX_SFFS_H */ |