83 lines
3.1 KiB
C
83 lines
3.1 KiB
C
|
/* Prototypes for -lminixfs. */
|
||
|
|
||
|
#ifndef _MINIX_FSLIB_H
|
||
|
#define _MINIX_FSLIB_H
|
||
|
|
||
|
#include <minix/safecopies.h>
|
||
|
#include <minix/sef.h>
|
||
|
#include <minix/vfsif.h>
|
||
|
|
||
|
struct buf {
|
||
|
/* Data portion of the buffer. */
|
||
|
void *data;
|
||
|
|
||
|
/* Header portion of the buffer - internal to libminixfs. */
|
||
|
struct buf *lmfs_next; /* used to link all free bufs in a chain */
|
||
|
struct buf *lmfs_prev; /* used to link all free bufs the other way */
|
||
|
struct buf *lmfs_hash; /* used to link bufs on hash chains */
|
||
|
block_t lmfs_blocknr; /* block number of its (minor) device */
|
||
|
dev_t lmfs_dev; /* major | minor device where block resides */
|
||
|
char lmfs_count; /* number of users of this buffer */
|
||
|
char lmfs_needsetcache; /* to be identified to VM */
|
||
|
unsigned int lmfs_bytes; /* Number of bytes allocated in bp */
|
||
|
u32_t lmfs_flags; /* Flags shared between VM and FS */
|
||
|
|
||
|
/* If any, which inode & offset does this block correspond to?
|
||
|
* If none, VMC_NO_INODE
|
||
|
*/
|
||
|
ino_t lmfs_inode;
|
||
|
u64_t lmfs_inode_offset;
|
||
|
};
|
||
|
|
||
|
int fs_lookup_credentials(vfs_ucred_t *credentials,
|
||
|
uid_t *caller_uid, gid_t *caller_gid, cp_grant_id_t grant2, size_t cred_size);
|
||
|
|
||
|
void lmfs_markdirty(struct buf *bp);
|
||
|
void lmfs_markclean(struct buf *bp);
|
||
|
int lmfs_isclean(struct buf *bp);
|
||
|
dev_t lmfs_dev(struct buf *bp);
|
||
|
int lmfs_bytes(struct buf *bp);
|
||
|
int lmfs_bufs_in_use(void);
|
||
|
int lmfs_nr_bufs(void);
|
||
|
void lmfs_flushall(void);
|
||
|
int lmfs_fs_block_size(void);
|
||
|
void lmfs_may_use_vmcache(int);
|
||
|
void lmfs_set_blocksize(int blocksize, int major);
|
||
|
void lmfs_reset_rdwt_err(void);
|
||
|
int lmfs_rdwt_err(void);
|
||
|
void lmfs_buf_pool(int new_nr_bufs);
|
||
|
struct buf *lmfs_get_block(dev_t dev, block_t block,int only_search);
|
||
|
struct buf *lmfs_get_block_ino(dev_t dev, block_t block,int only_search,
|
||
|
ino_t ino, u64_t off);
|
||
|
void lmfs_invalidate(dev_t device);
|
||
|
void lmfs_put_block(struct buf *bp, int block_type);
|
||
|
void lmfs_rw_scattered(dev_t, struct buf **, int, int);
|
||
|
void lmfs_setquiet(int q);
|
||
|
int lmfs_do_bpeek(message *);
|
||
|
void lmfs_cache_reevaluate(dev_t dev);
|
||
|
void lmfs_blockschange(dev_t dev, int delta);
|
||
|
|
||
|
/* calls that libminixfs does into fs */
|
||
|
void fs_blockstats(u64_t *blocks, u64_t *free, u64_t *used);
|
||
|
int fs_sync(void);
|
||
|
|
||
|
/* get_block arguments */
|
||
|
#define NORMAL 0 /* forces get_block to do disk read */
|
||
|
#define NO_READ 1 /* prevents get_block from doing disk read */
|
||
|
#define PREFETCH 2 /* tells get_block not to read or mark dev */
|
||
|
|
||
|
/* When a block is released, the type of usage is passed to put_block(). */
|
||
|
#define ONE_SHOT 0200 /* set if block not likely to be needed soon */
|
||
|
|
||
|
#define INODE_BLOCK 0 /* inode block */
|
||
|
#define DIRECTORY_BLOCK 1 /* directory block */
|
||
|
#define INDIRECT_BLOCK 2 /* pointer block */
|
||
|
#define MAP_BLOCK 3 /* bit map */
|
||
|
#define FULL_DATA_BLOCK 5 /* data, fully used */
|
||
|
#define PARTIAL_DATA_BLOCK 6 /* data, partly used*/
|
||
|
|
||
|
#define END_OF_FILE (-104) /* eof detected */
|
||
|
|
||
|
#endif /* _MINIX_FSLIB_H */
|
||
|
|