mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 08:42:40 +01:00 
			
		
		
		
	The fact that the lookahead buffer uses bits instead of bytes is an internal detail. Poking this through to the user API has caused a decent amount of confusion. Most buffers are provided as bytes and the inconsistency here can be surprising. The use of bytes instead of bits also makes us forward compatible in the case that we want to change the lookahead internal representation (hint segment list). Additionally, we change the configuration name to lookahead_size. This matches other configurations, such as cache_size and read_size, while also notifying the user that something important changed at compile time (by breaking).
		
			
				
	
	
		
			117 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /// AUTOGENERATED TEST ///
 | |
| #include "lfs.h"
 | |
| #include "emubd/lfs_emubd.h"
 | |
| #include <stdio.h>
 | |
| #include <string.h>
 | |
| #include <stdlib.h>
 | |
| 
 | |
| 
 | |
| // test stuff
 | |
| static void test_log(const char *s, uintmax_t v) {{
 | |
|     printf("%s: %jd\n", s, v);
 | |
| }}
 | |
| 
 | |
| static void test_assert(const char *file, unsigned line,
 | |
|         const char *s, uintmax_t v, uintmax_t e) {{
 | |
|     static const char *last[6] = {{0, 0}};
 | |
|     if (v != e || !(last[0] == s || last[1] == s ||
 | |
|             last[2] == s || last[3] == s ||
 | |
|             last[4] == s || last[5] == s)) {{
 | |
|         test_log(s, v);
 | |
|         last[0] = last[1];
 | |
|         last[1] = last[2];
 | |
|         last[2] = last[3];
 | |
|         last[3] = last[4];
 | |
|         last[4] = last[5];
 | |
|         last[5] = s;
 | |
|     }}
 | |
| 
 | |
|     if (v != e) {{
 | |
|         fprintf(stderr, "\033[31m%s:%u: assert %s failed with %jd, "
 | |
|                 "expected %jd\033[0m\n", file, line, s, v, e);
 | |
|         exit(-2);
 | |
|     }}
 | |
| }}
 | |
| 
 | |
| #define test_assert(s, v, e) test_assert(__FILE__, __LINE__, s, v, e)
 | |
| 
 | |
| 
 | |
| // utility functions for traversals
 | |
| static int __attribute__((used)) test_count(void *p, lfs_block_t b) {{
 | |
|     (void)b;
 | |
|     unsigned *u = (unsigned*)p;
 | |
|     *u += 1;
 | |
|     return 0;
 | |
| }}
 | |
| 
 | |
| 
 | |
| // lfs declarations
 | |
| lfs_t lfs;
 | |
| lfs_emubd_t bd;
 | |
| lfs_file_t file[4];
 | |
| lfs_dir_t dir[4];
 | |
| struct lfs_info info;
 | |
| 
 | |
| uint8_t buffer[1024];
 | |
| uint8_t wbuffer[1024];
 | |
| uint8_t rbuffer[1024];
 | |
| lfs_size_t size;
 | |
| lfs_size_t wsize;
 | |
| lfs_size_t rsize;
 | |
| 
 | |
| uintmax_t test;
 | |
| 
 | |
| #ifndef LFS_READ_SIZE
 | |
| #define LFS_READ_SIZE 16
 | |
| #endif
 | |
| 
 | |
| #ifndef LFS_PROG_SIZE
 | |
| #define LFS_PROG_SIZE LFS_READ_SIZE
 | |
| #endif
 | |
| 
 | |
| #ifndef LFS_BLOCK_SIZE
 | |
| #define LFS_BLOCK_SIZE 512
 | |
| #endif
 | |
| 
 | |
| #ifndef LFS_BLOCK_COUNT
 | |
| #define LFS_BLOCK_COUNT 1024
 | |
| #endif
 | |
| 
 | |
| #ifndef LFS_BLOCK_CYCLES
 | |
| #define LFS_BLOCK_CYCLES 1024
 | |
| #endif
 | |
| 
 | |
| #ifndef LFS_CACHE_SIZE
 | |
| #define LFS_CACHE_SIZE 64
 | |
| #endif
 | |
| 
 | |
| #ifndef LFS_LOOKAHEAD_SIZE
 | |
| #define LFS_LOOKAHEAD_SIZE 16
 | |
| #endif
 | |
| 
 | |
| const struct lfs_config cfg = {{
 | |
|     .context = &bd,
 | |
|     .read  = &lfs_emubd_read,
 | |
|     .prog  = &lfs_emubd_prog,
 | |
|     .erase = &lfs_emubd_erase,
 | |
|     .sync  = &lfs_emubd_sync,
 | |
| 
 | |
|     .read_size      = LFS_READ_SIZE,
 | |
|     .prog_size      = LFS_PROG_SIZE,
 | |
|     .block_size     = LFS_BLOCK_SIZE,
 | |
|     .block_count    = LFS_BLOCK_COUNT,
 | |
|     .block_cycles   = LFS_BLOCK_CYCLES,
 | |
|     .cache_size     = LFS_CACHE_SIZE,
 | |
|     .lookahead_size = LFS_LOOKAHEAD_SIZE,
 | |
| }};
 | |
| 
 | |
| 
 | |
| // Entry point
 | |
| int main(void) {{
 | |
|     lfs_emubd_create(&cfg, "blocks");
 | |
| 
 | |
| {tests}
 | |
| 
 | |
|     lfs_emubd_destroy(&cfg);
 | |
| }}
 |