Mon 14 Oct 23:06:38 CEST 2024
This commit is contained in:
		
							parent
							
								
									f51ccd3081
								
							
						
					
					
						commit
						e5cc052c83
					
				
							
								
								
									
										61
									
								
								kernel/fs_internal.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								kernel/fs_internal.h
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,61 @@ | ||||||
|  | /*
 | ||||||
|  | Copyright (C) 2016-2019 The University of Notre Dame | ||||||
|  | This software is distributed under the GNU General Public License. | ||||||
|  | See the file LICENSE for details. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | #ifndef FS_INTERNAL | ||||||
|  | #define FS_INTERNAL | ||||||
|  | 
 | ||||||
|  | #include "fs.h" | ||||||
|  | #include "cdromfs.h" | ||||||
|  | #include "diskfs.h" | ||||||
|  | 
 | ||||||
|  | struct fs { | ||||||
|  | 	char *name; | ||||||
|  | 	const struct fs_ops *ops; | ||||||
|  | 	struct fs *next; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct fs_volume { | ||||||
|  | 	struct fs *fs; | ||||||
|  | 	struct device *device; | ||||||
|  | 	uint32_t block_size; | ||||||
|  | 	int refcount; | ||||||
|  | 	union { | ||||||
|  | 		struct cdrom_volume cdrom; | ||||||
|  | 		struct diskfs_superblock disk; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct fs_dirent { | ||||||
|  | 	struct fs_volume *volume; | ||||||
|  | 	uint32_t size; | ||||||
|  | 	int inumber; | ||||||
|  | 	int refcount; | ||||||
|  | 	int isdir; | ||||||
|  | 	union { | ||||||
|  | 		struct cdrom_dirent cdrom; | ||||||
|  | 		struct diskfs_inode disk; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct fs_ops { | ||||||
|  | 	struct fs_dirent *(*volume_root) (struct fs_volume *v); | ||||||
|  | 	struct fs_volume *(*volume_open) (struct device *d); | ||||||
|  | 	int (*volume_close) (struct fs_volume *d); | ||||||
|  | 	int (*volume_format) (struct device *d); | ||||||
|  | 
 | ||||||
|  | 	struct fs_dirent * (*lookup) (struct fs_dirent *d, const char *name); | ||||||
|  | 	struct fs_dirent * (*mkdir) (struct fs_dirent *d, const char *name); | ||||||
|  | 	struct fs_dirent * (*mkfile) (struct fs_dirent *d, const char *name); | ||||||
|  | 
 | ||||||
|  | 	int (*read_block) (struct fs_dirent *d, char *buffer, uint32_t blocknum); | ||||||
|  | 	int (*write_block) (struct fs_dirent *d, const char *buffer, uint32_t blocknum); | ||||||
|  | 	int (*list) (struct fs_dirent *d, char *buffer, int buffer_length); | ||||||
|  | 	int (*remove) (struct fs_dirent *d, const char *name); | ||||||
|  | 	int (*resize) (struct fs_dirent *d, uint32_t blocks); | ||||||
|  | 	int (*close) (struct fs_dirent *d); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user