mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 16:14:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Block device interface
 | |
|  *
 | |
|  * Copyright (c) 2017 Christopher Haster
 | |
|  * Distributed under the MIT license
 | |
|  */
 | |
| #ifndef LFS_BD_H
 | |
| #define LFS_BD_H
 | |
| 
 | |
| #include "lfs_config.h"
 | |
| 
 | |
| 
 | |
| // Opaque type for block devices
 | |
| typedef void lfs_bd_t;
 | |
| 
 | |
| // Description of block devices
 | |
| struct lfs_bd_info {
 | |
|     lfs_size_t read_size;   // Size of readable block
 | |
|     lfs_size_t write_size;  // Size of programmable block
 | |
|     lfs_size_t erase_size;  // Size of erase block
 | |
| 
 | |
|     lfs_lsize_t total_size; // Total size of the device
 | |
| };
 | |
| 
 | |
| // Block device operations
 | |
| //
 | |
| // The little file system takes in a pointer to an opaque type
 | |
| // and this struct, all operations are passed the opaque pointer
 | |
| // which can be used to reference any state associated with the
 | |
| // block device
 | |
| struct lfs_bd_ops {
 | |
|     // Read a block
 | |
|     lfs_error_t (*read)(lfs_bd_t *bd, uint8_t *buffer,
 | |
|             lfs_ino_t ino, lfs_off_t off, lfs_size_t size);
 | |
| 
 | |
|     // Program a block
 | |
|     //
 | |
|     // The block must have previously been erased.
 | |
|     lfs_error_t (*write)(lfs_bd_t *bd, const uint8_t *buffer,
 | |
|             lfs_ino_t ino, lfs_off_t off, lfs_size_t size);
 | |
| 
 | |
|     // Erase a block
 | |
|     //
 | |
|     // A block must be erased before being programmed. The
 | |
|     // state of an erased block is undefined.
 | |
|     lfs_error_t (*erase)(lfs_bd_t *bd,
 | |
|             lfs_ino_t ino, lfs_off_t off, lfs_size_t size);
 | |
| 
 | |
|     // Sync the block device
 | |
|     lfs_error_t (*sync)(lfs_bd_t *bd);
 | |
| 
 | |
|     // Get a description of the block device
 | |
|     //
 | |
|     // Any unknown information may be left as zero
 | |
|     lfs_error_t (*info)(lfs_bd_t *bd, struct lfs_bd_info *info);
 | |
| };
 | |
| 
 | |
| 
 | |
| #endif
 |