root / lab4 / .minix-src / include / minix / libminixfs.h @ 14
History | View | Annotate | Download (2.44 KB)
1 |
/* Prototypes for -lminixfs. */
|
---|---|
2 |
|
3 |
#ifndef _MINIX_FSLIB_H
|
4 |
#define _MINIX_FSLIB_H
|
5 |
|
6 |
#include <minix/fsdriver.h> |
7 |
|
8 |
/* Maximum number of blocks that will be considered by lmfs_prefetch() */
|
9 |
#define LMFS_MAX_PREFETCH NR_IOREQS
|
10 |
|
11 |
struct buf {
|
12 |
/* Data portion of the buffer. */
|
13 |
void *data;
|
14 |
|
15 |
/* Header portion of the buffer - internal to libminixfs. */
|
16 |
struct buf *lmfs_next; /* used to link all free bufs in a chain */ |
17 |
struct buf *lmfs_prev; /* used to link all free bufs the other way */ |
18 |
struct buf *lmfs_hash; /* used to link bufs on hash chains */ |
19 |
dev_t lmfs_dev; /* major | minor device where block resides */
|
20 |
block64_t lmfs_blocknr; /* block number of its (minor) device */
|
21 |
char lmfs_count; /* number of users of this buffer */ |
22 |
char lmfs_needsetcache; /* to be identified to VM */ |
23 |
size_t lmfs_bytes; /* size of this block (allocated and used) */
|
24 |
u32_t lmfs_flags; /* Flags shared between VM and FS */
|
25 |
|
26 |
/* If any, which inode & offset does this block correspond to?
|
27 |
* If none, VMC_NO_INODE
|
28 |
*/
|
29 |
ino_t lmfs_inode; |
30 |
u64_t lmfs_inode_offset; |
31 |
}; |
32 |
|
33 |
void lmfs_markdirty(struct buf *bp); |
34 |
void lmfs_markclean(struct buf *bp); |
35 |
int lmfs_isclean(struct buf *bp); |
36 |
void lmfs_flushall(void); |
37 |
void lmfs_flushdev(dev_t dev);
|
38 |
size_t lmfs_fs_block_size(void);
|
39 |
void lmfs_may_use_vmcache(int); |
40 |
void lmfs_set_blocksize(size_t blocksize);
|
41 |
void lmfs_buf_pool(int new_nr_bufs); |
42 |
int lmfs_get_block(struct buf **bpp, dev_t dev, block64_t block, int how); |
43 |
int lmfs_get_block_ino(struct buf **bpp, dev_t dev, block64_t block, int how, |
44 |
ino_t ino, u64_t off); |
45 |
void lmfs_put_block(struct buf *bp); |
46 |
void lmfs_free_block(dev_t dev, block64_t block);
|
47 |
void lmfs_zero_block_ino(dev_t dev, ino_t ino, u64_t off);
|
48 |
void lmfs_invalidate(dev_t device);
|
49 |
void lmfs_prefetch(dev_t dev, const block64_t *blockset, unsigned int nblocks); |
50 |
void lmfs_setquiet(int q); |
51 |
void lmfs_set_blockusage(fsblkcnt_t btotal, fsblkcnt_t bused);
|
52 |
void lmfs_change_blockusage(int delta); |
53 |
|
54 |
/* get_block arguments */
|
55 |
#define NORMAL 0 /* forces get_block to do disk read */ |
56 |
#define NO_READ 1 /* prevents get_block from doing disk read */ |
57 |
#define PEEK 2 /* returns ENOENT if not in cache */ |
58 |
|
59 |
/* Block I/O helper functions. */
|
60 |
void lmfs_driver(dev_t dev, char *label); |
61 |
ssize_t lmfs_bio(dev_t dev, struct fsdriver_data *data, size_t bytes,
|
62 |
off_t pos, int call);
|
63 |
void lmfs_bflush(dev_t dev);
|
64 |
|
65 |
#endif /* _MINIX_FSLIB_H */ |