 4472b590c7
			
		
	
	
		4472b590c7
		
	
	
	
	
		
			
			This patch changes the prefetch API so that file systems must now provide a set of block numbers, rather than a set of buffers. The result is a leaner and more well-defined API; linear computation of the range of blocks to prefetch; duplicates no longer interfering with the prefetch process; guaranteed inclusion of the block needed next into the prefetch range; and, limits and policy decisions better established by libminixfs now actually being moved into libminixfs. Change-Id: I7e44daf2d2d164bc5e2f1473ad717f3ff0f0a77f
		
			
				
	
	
		
			108 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __MFS_PROTO_H__
 | |
| #define __MFS_PROTO_H__
 | |
| 
 | |
| /* Some shortcuts to functions in -lminixfs */
 | |
| #define put_block(b) lmfs_put_block(b)
 | |
| 
 | |
| /* Function prototypes. */
 | |
| 
 | |
| /* Structs used in prototypes must be declared as such first. */
 | |
| struct buf;
 | |
| struct filp;		
 | |
| struct inode;
 | |
| struct super_block;
 | |
| 
 | |
| /* cache.c */
 | |
| zone_t alloc_zone(dev_t dev, zone_t z);
 | |
| void free_zone(dev_t dev, zone_t numb);
 | |
| struct buf *get_block(dev_t dev, block_t block, int how);
 | |
| 
 | |
| /* inode.c */
 | |
| struct inode *alloc_inode(dev_t dev, mode_t bits, uid_t uid, gid_t gid);
 | |
| void dup_inode(struct inode *ip);
 | |
| struct inode *find_inode(dev_t dev, ino_t numb);
 | |
| int fs_putnode(ino_t ino_nr, unsigned int count);
 | |
| void init_inode_cache(void);
 | |
| struct inode *get_inode(dev_t dev, ino_t numb);
 | |
| void put_inode(struct inode *rip);
 | |
| void update_times(struct inode *rip);
 | |
| void rw_inode(struct inode *rip, int rw_flag);
 | |
| 
 | |
| /* link.c */
 | |
| int fs_trunc(ino_t ino_nr, off_t start, off_t end);
 | |
| int fs_link(ino_t dir_nr, char *name, ino_t ino_nr);
 | |
| ssize_t fs_rdlink(ino_t ino_nr, struct fsdriver_data *data, size_t bytes);
 | |
| int fs_rename(ino_t old_dir_nr, char *old_name, ino_t new_dir_nr,
 | |
| 	char *new_name);
 | |
| int fs_unlink(ino_t dir_nr, char *name, int call);
 | |
| int truncate_inode(struct inode *rip, off_t len);
 | |
| 
 | |
| /* misc.c */
 | |
| void fs_sync(void);
 | |
| 
 | |
| /* mount.c */
 | |
| int fs_mount(dev_t dev, unsigned int flags, struct fsdriver_node *root_node,
 | |
| 	unsigned int *res_flags);
 | |
| void fs_unmount(void);
 | |
| int fs_mountpt(ino_t ino_nr);
 | |
| 
 | |
| /* open.c */
 | |
| int fs_create(ino_t dir_nr, char *name, mode_t mode, uid_t uid, gid_t gid,
 | |
| 	struct fsdriver_node *node);
 | |
| int fs_mkdir(ino_t dir_nr, char *name, mode_t mode, uid_t uid, gid_t gid);
 | |
| int fs_mknod(ino_t dir_nr, char *name, mode_t mode, uid_t uid, gid_t gid,
 | |
| 	dev_t dev);
 | |
| int fs_slink(ino_t dir_nr, char *name, uid_t uid, gid_t gid,
 | |
| 	struct fsdriver_data *data, size_t bytes);
 | |
| void fs_seek(ino_t ino_nr);
 | |
| 
 | |
| /* path.c */
 | |
| int fs_lookup(ino_t dir_nr, char *name, struct fsdriver_node *node,
 | |
| 	int *is_mountpt);
 | |
| struct inode *advance(struct inode *dirp, const char *string);
 | |
| int search_dir(struct inode *ldir_ptr, const char *string, ino_t *numb,
 | |
| 	int flag);
 | |
| 
 | |
| /* protect.c */
 | |
| int fs_chmod(ino_t ino, mode_t *mode);
 | |
| int fs_chown(ino_t ino, uid_t uid, gid_t gid, mode_t *mode);
 | |
| 
 | |
| /* read.c */
 | |
| ssize_t fs_readwrite(ino_t ino_nr, struct fsdriver_data *data, size_t bytes,
 | |
| 	off_t pos, int call);
 | |
| block_t read_map(struct inode *rip, off_t pos, int opportunistic);
 | |
| struct buf *get_block_map(register struct inode *rip, u64_t position);
 | |
| zone_t rd_indir(struct buf *bp, int index);
 | |
| ssize_t fs_getdents(ino_t ino_nr, struct fsdriver_data *data, size_t bytes,
 | |
| 	off_t *posp);
 | |
| 
 | |
| /* stadir.c */
 | |
| int fs_stat(ino_t ino_nr, struct stat *statbuf);
 | |
| int fs_statvfs(struct statvfs *st);
 | |
| 
 | |
| /* super.c */
 | |
| bit_t alloc_bit(struct super_block *sp, int map, bit_t origin);
 | |
| void free_bit(struct super_block *sp, int map, bit_t bit_returned);
 | |
| unsigned int get_block_size(dev_t dev);
 | |
| int read_super(struct super_block *sp);
 | |
| int write_super(struct super_block *sp);
 | |
| 
 | |
| /* stats.c */
 | |
| bit_t count_free_bits(struct super_block *sp, int map);
 | |
| 
 | |
| /* time.c */
 | |
| int fs_utime(ino_t ino_t, struct timespec *atime, struct timespec *mtime);
 | |
| 
 | |
| /* utility.c */
 | |
| unsigned conv2(int norm, int w);
 | |
| long conv4(int norm, long x);
 | |
| 
 | |
| /* write.c */
 | |
| void clear_zone(struct inode *rip, off_t pos, int flag);
 | |
| struct buf *new_block(struct inode *rip, off_t position);
 | |
| void zero_block(struct buf *bp);
 | |
| int write_map(struct inode *, off_t, zone_t, int);
 | |
| 
 | |
| #endif
 | |
| 
 |