mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 08:42:40 +01:00 
			
		
		
		
	Generated v2 prefixes
This commit is contained in:
		
							
								
								
									
										32
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								.travis.yml
									
									
									
									
									
								
							| @@ -208,6 +208,38 @@ jobs: | ||||
|     script: | ||||
|       - make test TFLAGS+="-k --valgrind" | ||||
|  | ||||
|   # test compilation in read-only mode | ||||
|   - stage: test | ||||
|     env: | ||||
|       - NAME=littlefs-readonly | ||||
|       - CC="arm-linux-gnueabi-gcc --static -mthumb" | ||||
|       - CFLAGS="-Werror -DLFS2_READONLY" | ||||
|     if: branch !~ -prefix$ | ||||
|     install: | ||||
|       - *install-common | ||||
|       - sudo apt-get install | ||||
|             gcc-arm-linux-gnueabi | ||||
|             libc6-dev-armel-cross | ||||
|       - arm-linux-gnueabi-gcc --version | ||||
|     # report-size will compile littlefs and report the size | ||||
|     script: [*report-size] | ||||
|  | ||||
|   # test compilation in thread-safe mode | ||||
|   - stage: test | ||||
|     env: | ||||
|       - NAME=littlefs-threadsafe | ||||
|       - CC="arm-linux-gnueabi-gcc --static -mthumb" | ||||
|       - CFLAGS="-Werror -DLFS2_THREADSAFE" | ||||
|     if: branch !~ -prefix$ | ||||
|     install: | ||||
|       - *install-common | ||||
|       - sudo apt-get install | ||||
|             gcc-arm-linux-gnueabi | ||||
|             libc6-dev-armel-cross | ||||
|       - arm-linux-gnueabi-gcc --version | ||||
|     # report-size will compile littlefs and report the size | ||||
|     script: [*report-size] | ||||
|  | ||||
|   # self-host with littlefs-fuse for fuzz test | ||||
|   - stage: test | ||||
|     env: | ||||
|   | ||||
| @@ -222,6 +222,11 @@ License Identifiers that are here available: http://spdx.org/licenses/ | ||||
|   want this, but it is handy for demos.  You can see it in action | ||||
|   [here][littlefs-js-demo]. | ||||
|    | ||||
| - [littlefs-python] - A Python wrapper for littlefs. The project allows you | ||||
|   to create images of the filesystem on your PC. Check if littlefs will fit | ||||
|   your needs, create images for a later download to the target memory or | ||||
|   inspect the content of a binary image of the target memory. | ||||
|  | ||||
| - [mklfs] - A command line tool built by the [Lua RTOS] guys for making | ||||
|   littlefs images from a host PC. Supports Windows, Mac OS, and Linux. | ||||
|  | ||||
| @@ -250,3 +255,4 @@ License Identifiers that are here available: http://spdx.org/licenses/ | ||||
| [LittleFileSystem]: https://os.mbed.com/docs/mbed-os/v5.12/apis/littlefilesystem.html | ||||
| [SPIFFS]: https://github.com/pellepl/spiffs | ||||
| [Dhara]: https://github.com/dlbeer/dhara | ||||
| [littlefs-python]: https://pypi.org/project/littlefs-python/ | ||||
|   | ||||
| @@ -207,7 +207,7 @@ int lfs2_testbd_prog(const struct lfs2_config *cfg, lfs2_block_t block, | ||||
|         bd->power_cycles -= 1; | ||||
|         if (bd->power_cycles == 0) { | ||||
|             // sync to make sure we persist the last changes | ||||
|             assert(lfs2_testbd_rawsync(cfg) == 0); | ||||
|             LFS2_ASSERT(lfs2_testbd_rawsync(cfg) == 0); | ||||
|             // simulate power loss | ||||
|             exit(33); | ||||
|         } | ||||
| @@ -254,7 +254,7 @@ int lfs2_testbd_erase(const struct lfs2_config *cfg, lfs2_block_t block) { | ||||
|         bd->power_cycles -= 1; | ||||
|         if (bd->power_cycles == 0) { | ||||
|             // sync to make sure we persist the last changes | ||||
|             assert(lfs2_testbd_rawsync(cfg) == 0); | ||||
|             LFS2_ASSERT(lfs2_testbd_rawsync(cfg) == 0); | ||||
|             // simulate power loss | ||||
|             exit(33); | ||||
|         } | ||||
|   | ||||
							
								
								
									
										40
									
								
								lfs2.h
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								lfs2.h
									
									
									
									
									
								
							| @@ -9,6 +9,7 @@ | ||||
|  | ||||
| #include <stdint.h> | ||||
| #include <stdbool.h> | ||||
| #include "lfs2_util.h" | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" | ||||
| @@ -21,7 +22,7 @@ extern "C" | ||||
| // Software library version | ||||
| // Major (top-nibble), incremented on backwards incompatible changes | ||||
| // Minor (bottom-nibble), incremented on feature additions | ||||
| #define LFS2_VERSION 0x00020002 | ||||
| #define LFS2_VERSION 0x00020003 | ||||
| #define LFS2_VERSION_MAJOR (0xffff & (LFS2_VERSION >> 16)) | ||||
| #define LFS2_VERSION_MINOR (0xffff & (LFS2_VERSION >>  0)) | ||||
|  | ||||
| @@ -123,20 +124,25 @@ enum lfs2_type { | ||||
| enum lfs2_open_flags { | ||||
|     // open flags | ||||
|     LFS2_O_RDONLY = 1,         // Open a file as read only | ||||
| #ifndef LFS2_READONLY | ||||
|     LFS2_O_WRONLY = 2,         // Open a file as write only | ||||
|     LFS2_O_RDWR   = 3,         // Open a file as read and write | ||||
|     LFS2_O_CREAT  = 0x0100,    // Create a file if it does not exist | ||||
|     LFS2_O_EXCL   = 0x0200,    // Fail if a file already exists | ||||
|     LFS2_O_TRUNC  = 0x0400,    // Truncate the existing file to zero size | ||||
|     LFS2_O_APPEND = 0x0800,    // Move to end of file on every write | ||||
| #endif | ||||
|  | ||||
|     // internally used flags | ||||
| #ifndef LFS2_READONLY | ||||
|     LFS2_F_DIRTY   = 0x010000, // File does not match storage | ||||
|     LFS2_F_WRITING = 0x020000, // File has been written since last flush | ||||
| #endif | ||||
|     LFS2_F_READING = 0x040000, // File has been read since last flush | ||||
|     LFS2_F_ERRED   = 0x080000, // An error occured during write | ||||
| #ifndef LFS2_READONLY | ||||
|     LFS2_F_ERRED   = 0x080000, // An error occurred during write | ||||
| #endif | ||||
|     LFS2_F_INLINE  = 0x100000, // Currently inlined in directory entry | ||||
|     LFS2_F_OPENED  = 0x200000, // File has been opened | ||||
| }; | ||||
|  | ||||
| // File seek flags | ||||
| @@ -174,6 +180,16 @@ struct lfs2_config { | ||||
|     // are propogated to the user. | ||||
|     int (*sync)(const struct lfs2_config *c); | ||||
|  | ||||
| #ifdef LFS2_THREADSAFE | ||||
|     // Lock the underlying block device. Negative error codes | ||||
|     // are propogated to the user. | ||||
|     int (*lock)(const struct lfs2_config *c); | ||||
|  | ||||
|     // Unlock the underlying block device. Negative error codes | ||||
|     // are propogated to the user. | ||||
|     int (*unlock)(const struct lfs2_config *c); | ||||
| #endif | ||||
|  | ||||
|     // Minimum size of a block read. All read operations will be a | ||||
|     // multiple of this value. | ||||
|     lfs2_size_t read_size; | ||||
| @@ -399,6 +415,7 @@ typedef struct lfs2 { | ||||
|  | ||||
| /// Filesystem functions /// | ||||
|  | ||||
| #ifndef LFS2_READONLY | ||||
| // Format a block device with the littlefs | ||||
| // | ||||
| // Requires a littlefs object and config struct. This clobbers the littlefs | ||||
| @@ -407,6 +424,7 @@ typedef struct lfs2 { | ||||
| // | ||||
| // Returns a negative error code on failure. | ||||
| int lfs2_format(lfs2_t *lfs2, const struct lfs2_config *config); | ||||
| #endif | ||||
|  | ||||
| // Mounts a littlefs | ||||
| // | ||||
| @@ -426,12 +444,15 @@ int lfs2_unmount(lfs2_t *lfs2); | ||||
|  | ||||
| /// General operations /// | ||||
|  | ||||
| #ifndef LFS2_READONLY | ||||
| // Removes a file or directory | ||||
| // | ||||
| // If removing a directory, the directory must be empty. | ||||
| // Returns a negative error code on failure. | ||||
| int lfs2_remove(lfs2_t *lfs2, const char *path); | ||||
| #endif | ||||
|  | ||||
| #ifndef LFS2_READONLY | ||||
| // Rename or move a file or directory | ||||
| // | ||||
| // If the destination exists, it must match the source in type. | ||||
| @@ -439,6 +460,7 @@ int lfs2_remove(lfs2_t *lfs2, const char *path); | ||||
| // | ||||
| // Returns a negative error code on failure. | ||||
| int lfs2_rename(lfs2_t *lfs2, const char *oldpath, const char *newpath); | ||||
| #endif | ||||
|  | ||||
| // Find info about a file or directory | ||||
| // | ||||
| @@ -461,6 +483,7 @@ int lfs2_stat(lfs2_t *lfs2, const char *path, struct lfs2_info *info); | ||||
| lfs2_ssize_t lfs2_getattr(lfs2_t *lfs2, const char *path, | ||||
|         uint8_t type, void *buffer, lfs2_size_t size); | ||||
|  | ||||
| #ifndef LFS2_READONLY | ||||
| // Set custom attributes | ||||
| // | ||||
| // Custom attributes are uniquely identified by an 8-bit type and limited | ||||
| @@ -470,13 +493,16 @@ lfs2_ssize_t lfs2_getattr(lfs2_t *lfs2, const char *path, | ||||
| // Returns a negative error code on failure. | ||||
| int lfs2_setattr(lfs2_t *lfs2, const char *path, | ||||
|         uint8_t type, const void *buffer, lfs2_size_t size); | ||||
| #endif | ||||
|  | ||||
| #ifndef LFS2_READONLY | ||||
| // Removes a custom attribute | ||||
| // | ||||
| // If an attribute is not found, nothing happens. | ||||
| // | ||||
| // Returns a negative error code on failure. | ||||
| int lfs2_removeattr(lfs2_t *lfs2, const char *path, uint8_t type); | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /// File operations /// | ||||
| @@ -525,6 +551,7 @@ int lfs2_file_sync(lfs2_t *lfs2, lfs2_file_t *file); | ||||
| lfs2_ssize_t lfs2_file_read(lfs2_t *lfs2, lfs2_file_t *file, | ||||
|         void *buffer, lfs2_size_t size); | ||||
|  | ||||
| #ifndef LFS2_READONLY | ||||
| // Write data to file | ||||
| // | ||||
| // Takes a buffer and size indicating the data to write. The file will not | ||||
| @@ -533,6 +560,7 @@ lfs2_ssize_t lfs2_file_read(lfs2_t *lfs2, lfs2_file_t *file, | ||||
| // Returns the number of bytes written, or a negative error code on failure. | ||||
| lfs2_ssize_t lfs2_file_write(lfs2_t *lfs2, lfs2_file_t *file, | ||||
|         const void *buffer, lfs2_size_t size); | ||||
| #endif | ||||
|  | ||||
| // Change the position of the file | ||||
| // | ||||
| @@ -541,10 +569,12 @@ lfs2_ssize_t lfs2_file_write(lfs2_t *lfs2, lfs2_file_t *file, | ||||
| lfs2_soff_t lfs2_file_seek(lfs2_t *lfs2, lfs2_file_t *file, | ||||
|         lfs2_soff_t off, int whence); | ||||
|  | ||||
| #ifndef LFS2_READONLY | ||||
| // Truncates the size of the file to the specified size | ||||
| // | ||||
| // Returns a negative error code on failure. | ||||
| int lfs2_file_truncate(lfs2_t *lfs2, lfs2_file_t *file, lfs2_off_t size); | ||||
| #endif | ||||
|  | ||||
| // Return the position of the file | ||||
| // | ||||
| @@ -567,10 +597,12 @@ lfs2_soff_t lfs2_file_size(lfs2_t *lfs2, lfs2_file_t *file); | ||||
|  | ||||
| /// Directory operations /// | ||||
|  | ||||
| #ifndef LFS2_READONLY | ||||
| // Create a directory | ||||
| // | ||||
| // Returns a negative error code on failure. | ||||
| int lfs2_mkdir(lfs2_t *lfs2, const char *path); | ||||
| #endif | ||||
|  | ||||
| // Open a directory | ||||
| // | ||||
| @@ -632,6 +664,7 @@ lfs2_ssize_t lfs2_fs_size(lfs2_t *lfs2); | ||||
| // Returns a negative error code on failure. | ||||
| int lfs2_fs_traverse(lfs2_t *lfs2, int (*cb)(void*, lfs2_block_t), void *data); | ||||
|  | ||||
| #ifndef LFS2_READONLY | ||||
| #ifdef LFS2_MIGRATE | ||||
| // Attempts to migrate a previous version of littlefs | ||||
| // | ||||
| @@ -646,6 +679,7 @@ int lfs2_fs_traverse(lfs2_t *lfs2, int (*cb)(void*, lfs2_block_t), void *data); | ||||
| // Returns a negative error code on failure. | ||||
| int lfs2_migrate(lfs2_t *lfs2, const struct lfs2_config *cfg); | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
|   | ||||
| @@ -106,7 +106,7 @@ def main(args): | ||||
|             struct.unpack('<HH', superblock[1].data[0:4].ljust(4, b'\xff')))) | ||||
|     print("%-47s%s" % ("littlefs v%s.%s" % version, | ||||
|         "data (truncated, if it fits)" | ||||
|         if not any([args.no_truncate, args.tags, args.log, args.all]) else "")) | ||||
|         if not any([args.no_truncate, args.log, args.all]) else "")) | ||||
|  | ||||
|     # print gstate | ||||
|     print("gstate 0x%s" % ''.join('%02x' % c for c in gstate)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user