Go to the documentation of this file.
110 #ifndef SPIFFS_NUCLEUS_H_
111 #define SPIFFS_NUCLEUS_H_
113 #define _SPIFFS_ERR_CHECK_FIRST (SPIFFS_ERR_INTERNAL - 1)
114 #define SPIFFS_ERR_CHECK_OBJ_ID_MISM (SPIFFS_ERR_INTERNAL - 1)
115 #define SPIFFS_ERR_CHECK_SPIX_MISM (SPIFFS_ERR_INTERNAL - 2)
116 #define SPIFFS_ERR_CHECK_FLAGS_BAD (SPIFFS_ERR_INTERNAL - 3)
117 #define _SPIFFS_ERR_CHECK_LAST (SPIFFS_ERR_INTERNAL - 4)
120 #define SPIFFS_VIS_COUNTINUE (SPIFFS_ERR_INTERNAL - 20)
122 #define SPIFFS_VIS_COUNTINUE_RELOAD (SPIFFS_ERR_INTERNAL - 21)
124 #define SPIFFS_VIS_END (SPIFFS_ERR_INTERNAL - 22)
127 #define SPIFFS_EV_IX_UPD (0)
129 #define SPIFFS_EV_IX_NEW (1)
131 #define SPIFFS_EV_IX_DEL (2)
133 #define SPIFFS_EV_IX_MOV (3)
135 #define SPIFFS_EV_IX_UPD_HDR (4)
137 #define SPIFFS_OBJ_ID_IX_FLAG ((spiffs_obj_id)(1UL<<(8*sizeof(spiffs_obj_id)-1)))
139 #define SPIFFS_UNDEFINED_LEN (u32_t)(-1)
141 #define SPIFFS_OBJ_ID_DELETED ((spiffs_obj_id)0)
142 #define SPIFFS_OBJ_ID_FREE ((spiffs_obj_id)-1)
146 #if defined(__GNUC__) || defined(__clang__) || defined(__TI_COMPILER_VERSION__)
148 #define SPIFFS_PACKED __attribute__((packed))
149 #elif defined(__ICCARM__) || defined(__CC_ARM)
151 #define SPIFFS_PACKED
155 #define SPIFFS_PACKED
161 #if !SPIFFS_USE_MAGIC_LENGTH
162 #define SPIFFS_MAGIC(fs, bix) \
163 ((spiffs_obj_id)(0x20140529 ^ SPIFFS_CFG_LOG_PAGE_SZ(fs)))
164 #else // SPIFFS_USE_MAGIC_LENGTH
165 #define SPIFFS_MAGIC(fs, bix) \
166 ((spiffs_obj_id)(0x20140529 ^ SPIFFS_CFG_LOG_PAGE_SZ(fs) ^ ((fs)->block_count - (bix))))
167 #endif // SPIFFS_USE_MAGIC_LENGTH
168 #endif // SPIFFS_USE_MAGIC
170 #define SPIFFS_CONFIG_MAGIC (0x20090315)
172 #if SPIFFS_SINGLETON == 0
173 #define SPIFFS_CFG_LOG_PAGE_SZ(fs) \
174 ((fs)->cfg.log_page_size)
175 #define SPIFFS_CFG_LOG_BLOCK_SZ(fs) \
176 ((fs)->cfg.log_block_size)
177 #define SPIFFS_CFG_PHYS_SZ(fs) \
178 ((fs)->cfg.phys_size)
179 #define SPIFFS_CFG_PHYS_ERASE_SZ(fs) \
180 ((fs)->cfg.phys_erase_block)
181 #define SPIFFS_CFG_PHYS_ADDR(fs) \
182 ((fs)->cfg.phys_addr)
186 #define SPIFFS_MAX_PAGES(fs) \
187 ( SPIFFS_CFG_PHYS_SZ(fs)/SPIFFS_CFG_LOG_PAGE_SZ(fs) )
189 #define SPIFFS_PAGES_PER_BLOCK(fs) \
190 ( SPIFFS_CFG_LOG_BLOCK_SZ(fs)/SPIFFS_CFG_LOG_PAGE_SZ(fs) )
192 #define SPIFFS_OBJ_LOOKUP_PAGES(fs) \
193 (MAX(1, (SPIFFS_PAGES_PER_BLOCK(fs) * sizeof(spiffs_obj_id)) / SPIFFS_CFG_LOG_PAGE_SZ(fs)) )
195 #define SPIFFS_IS_LOOKUP_PAGE(fs,pix) \
196 (((pix) % SPIFFS_PAGES_PER_BLOCK(fs)) < SPIFFS_OBJ_LOOKUP_PAGES(fs))
198 #define SPIFFS_OBJ_LOOKUP_MAX_ENTRIES(fs) \
199 (SPIFFS_PAGES_PER_BLOCK(fs)-SPIFFS_OBJ_LOOKUP_PAGES(fs))
201 #define SPIFFS_BLOCK_TO_PADDR(fs, block) \
202 ( SPIFFS_CFG_PHYS_ADDR(fs) + (block)* SPIFFS_CFG_LOG_BLOCK_SZ(fs) )
204 #define SPIFFS_OBJ_LOOKUP_ENTRY_TO_PIX(fs, block, entry) \
205 ((block)*SPIFFS_PAGES_PER_BLOCK(fs) + (SPIFFS_OBJ_LOOKUP_PAGES(fs) + entry))
207 #define SPIFFS_OBJ_LOOKUP_ENTRY_TO_PADDR(fs, block, entry) \
208 (SPIFFS_BLOCK_TO_PADDR(fs, block) + (SPIFFS_OBJ_LOOKUP_PAGES(fs) + entry) * SPIFFS_CFG_LOG_PAGE_SZ(fs) )
210 #define SPIFFS_PAGE_TO_PADDR(fs, page) \
211 ( SPIFFS_CFG_PHYS_ADDR(fs) + (page) * SPIFFS_CFG_LOG_PAGE_SZ(fs) )
213 #define SPIFFS_PADDR_TO_PAGE(fs, addr) \
214 ( ((addr) - SPIFFS_CFG_PHYS_ADDR(fs)) / SPIFFS_CFG_LOG_PAGE_SZ(fs) )
216 #define SPIFFS_PADDR_TO_PAGE_OFFSET(fs, addr) \
217 ( ((addr) - SPIFFS_CFG_PHYS_ADDR(fs)) % SPIFFS_CFG_LOG_PAGE_SZ(fs) )
219 #define SPIFFS_BLOCK_FOR_PAGE(fs, page) \
220 ( (page) / SPIFFS_PAGES_PER_BLOCK(fs) )
222 #define SPIFFS_PAGE_FOR_BLOCK(fs, block) \
223 ( (block) * SPIFFS_PAGES_PER_BLOCK(fs) )
225 #define SPIFFS_OBJ_LOOKUP_ENTRY_FOR_PAGE(fs, page) \
226 ( (page) % SPIFFS_PAGES_PER_BLOCK(fs) - SPIFFS_OBJ_LOOKUP_PAGES(fs) )
228 #define SPIFFS_DATA_PAGE_SIZE(fs) \
229 ( SPIFFS_CFG_LOG_PAGE_SZ(fs) - sizeof(spiffs_page_header) )
232 #define SPIFFS_ERASE_COUNT_PADDR(fs, bix) \
233 ( SPIFFS_BLOCK_TO_PADDR(fs, bix) + SPIFFS_OBJ_LOOKUP_PAGES(fs) * SPIFFS_CFG_LOG_PAGE_SZ(fs) - sizeof(spiffs_obj_id) )
236 #define SPIFFS_MAGIC_PADDR(fs, bix) \
237 ( SPIFFS_BLOCK_TO_PADDR(fs, bix) + SPIFFS_OBJ_LOOKUP_PAGES(fs) * SPIFFS_CFG_LOG_PAGE_SZ(fs) - sizeof(spiffs_obj_id)*2 )
239 #define SPIFFS_CHECK_MAGIC_POSSIBLE(fs) \
240 ( (SPIFFS_OBJ_LOOKUP_MAX_ENTRIES(fs) % (SPIFFS_CFG_LOG_PAGE_SZ(fs)/sizeof(spiffs_obj_id))) * sizeof(spiffs_obj_id) \
241 <= (SPIFFS_CFG_LOG_PAGE_SZ(fs)-sizeof(spiffs_obj_id)*2) )
246 #define SPIFFS_OBJ_HDR_IX_LEN(fs) \
247 ((SPIFFS_CFG_LOG_PAGE_SZ(fs) - sizeof(spiffs_page_object_ix_header))/sizeof(spiffs_page_ix))
249 #define SPIFFS_OBJ_IX_LEN(fs) \
250 ((SPIFFS_CFG_LOG_PAGE_SZ(fs) - sizeof(spiffs_page_object_ix))/sizeof(spiffs_page_ix))
252 #define SPIFFS_OBJ_IX_ENTRY(fs, spix) \
253 ((spix) < SPIFFS_OBJ_HDR_IX_LEN(fs) ? (spix) : (((spix)-SPIFFS_OBJ_HDR_IX_LEN(fs))%SPIFFS_OBJ_IX_LEN(fs)))
255 #define SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, spix) \
256 ((spix) < SPIFFS_OBJ_HDR_IX_LEN(fs) ? 0 : (1+((spix)-SPIFFS_OBJ_HDR_IX_LEN(fs))/SPIFFS_OBJ_IX_LEN(fs)))
258 #define SPIFFS_DATA_SPAN_IX_FOR_OBJ_IX_SPAN_IX(fs, spix) \
259 ( (spix) == 0 ? 0 : (SPIFFS_OBJ_HDR_IX_LEN(fs) + (((spix)-1) * SPIFFS_OBJ_IX_LEN(fs))) )
261 #if SPIFFS_FILEHDL_OFFSET
262 #define SPIFFS_FH_OFFS(fs, fh) ((fh) != 0 ? ((fh) + (fs)->cfg.fh_ix_offset) : 0)
263 #define SPIFFS_FH_UNOFFS(fs, fh) ((fh) != 0 ? ((fh) - (fs)->cfg.fh_ix_offset) : 0)
265 #define SPIFFS_FH_OFFS(fs, fh) ((spiffs_file)(fh))
266 #define SPIFFS_FH_UNOFFS(fs, fh) ((spiffs_file)(fh))
270 #define SPIFFS_OP_T_OBJ_LU (0<<0)
271 #define SPIFFS_OP_T_OBJ_LU2 (1<<0)
272 #define SPIFFS_OP_T_OBJ_IX (2<<0)
273 #define SPIFFS_OP_T_OBJ_DA (3<<0)
274 #define SPIFFS_OP_C_DELE (0<<2)
275 #define SPIFFS_OP_C_UPDT (1<<2)
276 #define SPIFFS_OP_C_MOVS (2<<2)
277 #define SPIFFS_OP_C_MOVD (3<<2)
278 #define SPIFFS_OP_C_FLSH (4<<2)
279 #define SPIFFS_OP_C_READ (5<<2)
280 #define SPIFFS_OP_C_WRTHRU (6<<2)
282 #define SPIFFS_OP_TYPE_MASK (3<<0)
283 #define SPIFFS_OP_COM_MASK (7<<2)
287 #define SPIFFS_PH_FLAG_USED (1<<0)
289 #define SPIFFS_PH_FLAG_FINAL (1<<1)
291 #define SPIFFS_PH_FLAG_INDEX (1<<2)
293 #define SPIFFS_PH_FLAG_DELET (1<<7)
295 #define SPIFFS_PH_FLAG_IXDELE (1<<6)
298 #define SPIFFS_CHECK_MOUNT(fs) \
301 #define SPIFFS_CHECK_CFG(fs) \
302 ((fs)->config_magic == SPIFFS_CONFIG_MAGIC)
304 #define SPIFFS_CHECK_RES(res) \
306 if ((res) < SPIFFS_OK) return (res); \
309 #define SPIFFS_API_CHECK_MOUNT(fs) \
310 if (!SPIFFS_CHECK_MOUNT((fs))) { \
311 (fs)->err_code = SPIFFS_ERR_NOT_MOUNTED; \
312 return SPIFFS_ERR_NOT_MOUNTED; \
315 #define SPIFFS_API_CHECK_CFG(fs) \
316 if (!SPIFFS_CHECK_CFG((fs))) { \
317 (fs)->err_code = SPIFFS_ERR_NOT_CONFIGURED; \
318 return SPIFFS_ERR_NOT_CONFIGURED; \
321 #define SPIFFS_API_CHECK_RES(fs, res) \
322 if ((res) < SPIFFS_OK) { \
323 (fs)->err_code = (res); \
327 #define SPIFFS_API_CHECK_RES_UNLOCK(fs, res) \
328 if ((res) < SPIFFS_OK) { \
329 (fs)->err_code = (res); \
334 #define SPIFFS_VALIDATE_OBJIX(ph, objid, spix) \
335 if (((ph).flags & SPIFFS_PH_FLAG_USED) != 0) return SPIFFS_ERR_IS_FREE; \
336 if (((ph).flags & SPIFFS_PH_FLAG_DELET) == 0) return SPIFFS_ERR_DELETED; \
337 if (((ph).flags & SPIFFS_PH_FLAG_FINAL) != 0) return SPIFFS_ERR_NOT_FINALIZED; \
338 if (((ph).flags & SPIFFS_PH_FLAG_INDEX) != 0) return SPIFFS_ERR_NOT_INDEX; \
339 if (((objid) & SPIFFS_OBJ_ID_IX_FLAG) == 0) return SPIFFS_ERR_NOT_INDEX; \
340 if ((ph).span_ix != (spix)) return SPIFFS_ERR_INDEX_SPAN_MISMATCH;
343 #define SPIFFS_VALIDATE_DATA(ph, objid, spix) \
344 if (((ph).flags & SPIFFS_PH_FLAG_USED) != 0) return SPIFFS_ERR_IS_FREE; \
345 if (((ph).flags & SPIFFS_PH_FLAG_DELET) == 0) return SPIFFS_ERR_DELETED; \
346 if (((ph).flags & SPIFFS_PH_FLAG_FINAL) != 0) return SPIFFS_ERR_NOT_FINALIZED; \
347 if (((ph).flags & SPIFFS_PH_FLAG_INDEX) == 0) return SPIFFS_ERR_IS_INDEX; \
348 if ((objid) & SPIFFS_OBJ_ID_IX_FLAG) return SPIFFS_ERR_IS_INDEX; \
349 if ((ph).span_ix != (spix)) return SPIFFS_ERR_DATA_SPAN_MISMATCH;
353 #define SPIFFS_VIS_CHECK_ID (1<<0)
355 #define SPIFFS_VIS_CHECK_PH (1<<1)
357 #define SPIFFS_VIS_NO_WRAP (1<<2)
359 #if SPIFFS_HAL_CALLBACK_EXTRA
361 #define SPIFFS_HAL_WRITE(_fs, _paddr, _len, _src) \
362 (_fs)->cfg.hal_write_f((_fs), (_paddr), (_len), (_src))
363 #define SPIFFS_HAL_READ(_fs, _paddr, _len, _dst) \
364 (_fs)->cfg.hal_read_f((_fs), (_paddr), (_len), (_dst))
365 #define SPIFFS_HAL_ERASE(_fs, _paddr, _len) \
366 (_fs)->cfg.hal_erase_f((_fs), (_paddr), (_len))
368 #else // SPIFFS_HAL_CALLBACK_EXTRA
370 #define SPIFFS_HAL_WRITE(_fs, _paddr, _len, _src) \
371 (_fs)->cfg.hal_write_f((_paddr), (_len), (_src))
372 #define SPIFFS_HAL_READ(_fs, _paddr, _len, _dst) \
373 (_fs)->cfg.hal_read_f((_paddr), (_len), (_dst))
374 #define SPIFFS_HAL_ERASE(_fs, _paddr, _len) \
375 (_fs)->cfg.hal_erase_f((_paddr), (_len))
377 #endif // SPIFFS_HAL_CALLBACK_EXTRA
381 #define SPIFFS_CACHE_FLAG_DIRTY (1<<0)
382 #define SPIFFS_CACHE_FLAG_WRTHRU (1<<1)
383 #define SPIFFS_CACHE_FLAG_OBJLU (1<<2)
384 #define SPIFFS_CACHE_FLAG_OBJIX (1<<3)
385 #define SPIFFS_CACHE_FLAG_DATA (1<<4)
386 #define SPIFFS_CACHE_FLAG_TYPE_WR (1<<7)
388 #define SPIFFS_CACHE_PAGE_SIZE(fs) \
389 (sizeof(spiffs_cache_page) + SPIFFS_CFG_LOG_PAGE_SZ(fs))
391 #define spiffs_get_cache(fs) \
392 ((spiffs_cache *)((fs)->cache))
394 #define spiffs_get_cache_page_hdr(fs, c, ix) \
395 ((spiffs_cache_page *)(&((c)->cpages[(ix) * SPIFFS_CACHE_PAGE_SIZE(fs)])))
397 #define spiffs_get_cache_page(fs, c, ix) \
398 ((u8_t *)(&((c)->cpages[(ix) * SPIFFS_CACHE_PAGE_SIZE(fs)])) + sizeof(spiffs_cache_page))
433 u32_t cpage_use_mask;
463 spiffs_cache_page *cache_page;
465 #if SPIFFS_TEMPORAL_FD_CACHE
473 spiffs_ix_map *ix_map;
508 #if SPIFFS_OBJ_META_LEN
522 const void *user_const_p,
void *user_var_p);
526 #define _spiffs_rd(fs, op, fh, addr, len, dst) \
527 spiffs_phys_rd((fs), (op), (fh), (addr), (len), (dst))
528 #define _spiffs_wr(fs, op, fh, addr, len, src) \
529 spiffs_phys_wr((fs), (op), (fh), (addr), (len), (src))
531 #define _spiffs_rd(fs, op, fh, addr, len, dst) \
532 spiffs_phys_rd((fs), (addr), (len), (dst))
533 #define _spiffs_wr(fs, op, fh, addr, len, src) \
534 spiffs_phys_wr((fs), (addr), (len), (src))
538 #define MIN(a,b) ((a) < (b) ? (a) : (b))
541 #define MAX(a,b) ((a) > (b) ? (a) : (b))
579 int starting_lu_entry,
583 const void *user_const_p,
592 #if SPIFFS_USE_MAGIC && SPIFFS_USE_MAGIC_LENGTH
595 #endif // SPIFFS_USE_MAGIC && SPIFFS_USE_MAGIC_LENGTH
605 const u8_t *conflicting_name);
610 int starting_lu_entry,
617 int starting_lu_entry,
676 u8_t *new_objix_hdr_data,
684 s32_t spiffs_populate_ix_map(
687 u32_t vec_entry_start,
688 u32_t vec_entry_end);
756 int *candidate_count,
782 #if SPIFFS_TEMPORAL_FD_CACHE
783 void spiffs_fd_temporal_cache_rehash(
785 const char *old_path,
786 const char *new_path);
790 void spiffs_cache_init(
793 void spiffs_cache_drop_page(
798 spiffs_cache_page *spiffs_cache_page_allocate_by_fd(
802 void spiffs_cache_fd_release(
804 spiffs_cache_page *cp);
806 spiffs_cache_page *spiffs_cache_page_get_by_fd(
814 u8_t check_all_objects);
825 #define _SPIFFS_MEMCPY(__d, __s, __l) do { \
826 intptr_t __a1 = (intptr_t)((u8_t*)(__s)); \
827 intptr_t __a2 = (intptr_t)((u8_t*)(__s)+(__l)); \
828 intptr_t __b1 = (intptr_t)((u8_t*)(__d)); \
829 intptr_t __b2 = (intptr_t)((u8_t*)(__d)+(__l)); \
830 if (__a1 <= __b2 && __b1 <= __a2) { \
831 printf("FATAL OVERLAP: memcpy from %lx..%lx to %lx..%lx\n", __a1, __a2, __b1, __b2); \
834 memcpy((__d),(__s),(__l)); \
837 #ifndef _SPIFFS_MEMCPY
838 #define _SPIFFS_MEMCPY(__d, __s, __l) do{memcpy((__d),(__s),(__l));}while(0)
840 #endif //_SPIFFS_TEST
u8_t name[SPIFFS_OBJ_NAME_LEN]
Definition: spiffs_nucleus.h:507
s32_t spiffs_obj_lu_find_id_and_span(spiffs *fs, spiffs_obj_id obj_id, spiffs_span_ix spix, spiffs_page_ix exclusion_pix, spiffs_page_ix *pix)
s32_t spiffs_page_allocate_data(spiffs *fs, spiffs_obj_id obj_id, spiffs_page_header *ph, u8_t *data, u32_t len, u32_t page_offs, u8_t finalize, spiffs_page_ix *pix)
s32_t spiffs_object_update_index_hdr(spiffs *fs, spiffs_fd *fd, spiffs_obj_id obj_id, spiffs_page_ix objix_hdr_pix, u8_t *new_objix_hdr_data, const u8_t name[], const u8_t meta[], u32_t size, spiffs_page_ix *new_pix)
s32_t spiffs_gc_erase_page_stats(spiffs *fs, spiffs_block_ix bix)
u32_t size
Definition: spiffs_nucleus.h:503
u32_t size
Definition: spiffs_nucleus.h:449
s32_t spiffs_object_read(spiffs_fd *fd, u32_t offset, u32_t len, u8_t *dst)
s32_t spiffs_obj_lu_find_id_and_span_by_phdr(spiffs *fs, spiffs_obj_id obj_id, spiffs_span_ix spix, spiffs_page_ix exclusion_pix, spiffs_page_ix *pix)
s32_t spiffs_fd_find_new(spiffs *fs, spiffs_fd **fd, const char *name)
spiffs_obj_id obj_id
Definition: spiffs_nucleus.h:485
u8_t flags
Definition: spiffs_nucleus.h:489
Definition: spiffs_nucleus.h:441
#define SPIFFS_OBJ_META_LEN
Definition: spiffs_config.h:165
spiffs_file file_nbr
Definition: spiffs_nucleus.h:445
unsigned char u8_t
Definition: params_test.h:82
u32_t offset
Definition: spiffs_nucleus.h:457
spiffs_page_ix objix_hdr_pix
Definition: spiffs_nucleus.h:451
void spiffs_cb_object_event(spiffs *fs, spiffs_page_object_ix *objix, int ev, spiffs_obj_id obj_id, spiffs_span_ix spix, spiffs_page_ix new_pix, u32_t new_size)
s32_t spiffs_object_truncate(spiffs_fd *fd, u32_t new_len, u8_t remove_object)
s32_t spiffs_obj_lu_find_entry_visitor(spiffs *fs, spiffs_block_ix starting_block, int starting_lu_entry, u8_t flags, spiffs_obj_id obj_id, spiffs_visitor_f v, const void *user_const_p, void *user_var_p, spiffs_block_ix *block_ix, int *lu_entry)
s32_t spiffs_gc_check(spiffs *fs, u32_t len)
s32_t spiffs_obj_lu_scan(spiffs *fs)
spiffs_page_ix cursor_objix_pix
Definition: spiffs_nucleus.h:453
u32_t size
Definition: spiffs.h:312
s32_t spiffs_phys_cpy(spiffs *fs, spiffs_file fh, u32_t dst, u32_t src, u32_t len)
s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len)
s32_t spiffs_lookup_consistency_check(spiffs *fs, u8_t check_all_objects)
struct SPIFFS_PACKED spiffs_page_header
spiffs_span_ix cursor_objix_spix
Definition: spiffs_nucleus.h:455
s32_t spiffs_page_consistency_check(spiffs *fs)
signed int s32_t
Definition: params_test.h:77
s16_t spiffs_file
Definition: spiffs.h:72
s32_t spiffs_page_delete(spiffs *fs, spiffs_page_ix pix)
u8_t spiffs_obj_type
Definition: spiffs.h:78
#define SPIFFS_CACHE
Definition: spiffs_config.h:95
spiffs_page_ix pix
Definition: spiffs.h:313
s32_t spiffs_phys_rd(spiffs *fs, u32_t addr, u32_t len, u8_t *dst)
spiffs_page_header p_hdr
Definition: spiffs_nucleus.h:499
s32_t spiffs_erase_block(spiffs *fs, spiffs_block_ix bix)
s32_t spiffs_object_open_by_id(spiffs *fs, spiffs_obj_id obj_id, spiffs_fd *f, spiffs_flags flags, spiffs_mode mode)
s32_t spiffs_phys_count_free_blocks(spiffs *fs)
s32_t spiffs_gc_clean(spiffs *fs, spiffs_block_ix bix)
u16_t spiffs_span_ix
Definition: spiffs_config.h:380
s32_t spiffs_fd_get(spiffs *fs, spiffs_file f, spiffs_fd **fd)
s32_t spiffs_object_create(spiffs *fs, spiffs_obj_id obj_id, const u8_t name[], const u8_t meta[], spiffs_obj_type type, spiffs_page_ix *objix_hdr_pix)
spiffs_flags flags
Definition: spiffs_nucleus.h:461
Definition: spiffs_nucleus.h:483
s32_t spiffs_object_open_by_page(spiffs *fs, spiffs_page_ix pix, spiffs_fd *f, spiffs_flags flags, spiffs_mode mode)
s32_t spiffs_fd_return(spiffs *fs, spiffs_file f)
struct SPIFFS_PACKED spiffs_page_object_ix
spiffs * fs
Definition: spiffs_nucleus.h:443
#define SPIFFS_ALIGNED_OBJECT_INDEX_TABLES
Definition: spiffs_config.h:235
s32_t(* spiffs_visitor_f)(spiffs *fs, spiffs_obj_id id, spiffs_block_ix bix, int ix_entry, const void *user_const_p, void *user_var_p)
Definition: spiffs_nucleus.h:521
spiffs_obj_id obj_id
Definition: spiffs_nucleus.h:447
s32_t spiffs_object_find_object_index_header_by_name(spiffs *fs, const u8_t name[SPIFFS_OBJ_NAME_LEN], spiffs_page_ix *pix)
struct SPIFFS_PACKED spiffs_page_object_ix_header
s32_t spiffs_object_modify(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len)
s32_t spiffs_obj_lu_find_free_obj_id(spiffs *fs, spiffs_obj_id *obj_id, const u8_t *conflicting_name)
s32_t spiffs_phys_wr(spiffs *fs, u32_t addr, u32_t len, u8_t *src)
s32_t spiffs_obj_lu_find_id(spiffs *fs, spiffs_block_ix starting_block, int starting_lu_entry, spiffs_obj_id obj_id, spiffs_block_ix *block_ix, int *lu_entry)
#define SPIFFS_OBJ_NAME_LEN
Definition: spiffs_config.h:151
s32_t spiffs_page_move(spiffs *fs, spiffs_file fh, u8_t *page_data, spiffs_obj_id obj_id, spiffs_page_header *page_hdr, spiffs_page_ix src_pix, spiffs_page_ix *dst_pix)
u16_t spiffs_obj_id
Definition: spiffs_config.h:376
u16_t spiffs_mode
Definition: spiffs.h:76
spiffs_obj_id obj_id
Definition: spiffs.h:309
spiffs_obj_type type
Definition: spiffs_nucleus.h:505
u32_t fdoffset
Definition: spiffs_nucleus.h:459
u16_t spiffs_block_ix
Definition: spiffs_config.h:369
unsigned short u16_t
Definition: params_test.h:80
spiffs_span_ix span_ix
Definition: spiffs_nucleus.h:487
u16_t spiffs_page_ix
Definition: spiffs_config.h:372
s32_t spiffs_gc_find_candidate(spiffs *fs, spiffs_block_ix **block_candidate, int *candidate_count, char fs_crammed)
s32_t spiffs_obj_lu_find_free(spiffs *fs, spiffs_block_ix starting_block, int starting_lu_entry, spiffs_block_ix *block_ix, int *lu_entry)
s32_t spiffs_gc_quick(spiffs *fs, u16_t max_free_pages)
s32_t spiffs_object_index_consistency_check(spiffs *fs)
u16_t spiffs_flags
Definition: spiffs.h:74
u8_t _align[4 -((sizeof(spiffs_page_header)&3)==0 ? 4 :(sizeof(spiffs_page_header)&3))]
Definition: spiffs_nucleus.h:501