diff --git a/inc/fdb_def.h b/inc/fdb_def.h index b37f152..0675e2f 100644 --- a/inc/fdb_def.h +++ b/inc/fdb_def.h @@ -263,7 +263,11 @@ struct fdb_db { bool init_ok; /**< initialized successfully */ bool file_mode; /**< is file mode, default is false */ #ifdef FDB_USING_FILE_MODE - void *cur_file; /**< current file object */ +#if defined(FDB_USING_FILE_POSIX_MODE) + int cur_file; /**< current file object */ +#elif defined(FDB_USING_FILE_LIBC_MODE) + FILE *cur_file; /**< current file object */ +#endif uint32_t cur_sec; /**< current operate sector address */ #endif void (*lock)(fdb_db_t db); /**< lock the database operate */ @@ -325,3 +329,4 @@ typedef struct fdb_blob *fdb_blob_t; #endif #endif /* _FDB_DEF_H_ */ + diff --git a/samples/tsdb_sample.c b/samples/tsdb_sample.c index 26034b9..644b96d 100644 --- a/samples/tsdb_sample.c +++ b/samples/tsdb_sample.c @@ -65,7 +65,7 @@ void tsdb_sample(fdb_tsdb_t tsdb) fdb_tsl_iter_by_time(tsdb, from_time, to_time, query_by_time_cb, tsdb); /* query all FDB_TSL_WRITE status TSL's count in TSDB by time */ count = fdb_tsl_query_count(tsdb, from_time, to_time, FDB_TSL_WRITE); - FDB_INFO("query count is: %u\n", count); + FDB_INFO("query count is: %zu\n", count); } { /* SET the TSL status */ diff --git a/src/fdb.c b/src/fdb.c index 3749350..f2c9d6e 100644 --- a/src/fdb.c +++ b/src/fdb.c @@ -13,6 +13,7 @@ #include #include +#include #define FDB_LOG_TAG "" @@ -40,9 +41,9 @@ fdb_err_t _fdb_init_ex(fdb_db_t db, const char *name, const char *part_name, fdb FDB_ASSERT(db->sec_size != 0); FDB_ASSERT(db->max_size != 0); #ifdef FDB_USING_POSIX_MODE - db->cur_file = (void *)-1; + db->cur_file = -1; #else - db->cur_file = (void *)0; + db->cur_file = 0; #endif db->storage.dir = part_name; FDB_ASSERT(strlen(part_name) != 0) @@ -94,3 +95,4 @@ void _fdb_init_finish(fdb_db_t db, fdb_err_t result) db->name, (int)result); } } + diff --git a/src/fdb_file.c b/src/fdb_file.c index add5587..b4a2bad 100644 --- a/src/fdb_file.c +++ b/src/fdb_file.c @@ -34,10 +34,15 @@ static void get_db_file_path(fdb_db_t db, uint32_t addr, char *path, size_t size } #if defined(FDB_USING_FILE_POSIX_MODE) +#include +#include +#include +#include + static int open_db_file(fdb_db_t db, uint32_t addr, bool clean) { - uint32_t sec_addr = RT_ALIGN_DOWN(addr, db->sec_size); - int fd = (int)db->cur_file; + uint32_t sec_addr = FDB_ALIGN_DOWN(addr, db->sec_size); + int fd = db->cur_file; char path[DB_PATH_MAX]; if (sec_addr != db->cur_sec || fd <= 0 || clean) { @@ -49,7 +54,7 @@ static int open_db_file(fdb_db_t db, uint32_t addr, bool clean) } if (clean) { /* clean the old file */ - fd = open(path, O_RDWR | O_CREAT | O_TRUNC, 0); + fd = open(path, O_RDWR | O_CREAT | O_TRUNC, 0777); if (fd <= 0) { FDB_INFO("Error: open (%s) file failed.\n", path); } @@ -59,12 +64,12 @@ static int open_db_file(fdb_db_t db, uint32_t addr, bool clean) } } /* open the database file */ - fd = open(path, O_RDWR, 0); + fd = open(path, O_RDWR, 0777); db->cur_sec = sec_addr; } - db->cur_file = (void *)fd; + db->cur_file = fd; - return (int)db->cur_file; + return db->cur_file; } fdb_err_t _fdb_file_read(fdb_db_t db, uint32_t addr, void *buf, size_t size) @@ -207,3 +212,4 @@ fdb_err_t _fdb_file_erase(fdb_db_t db, uint32_t addr, size_t size) #endif /* defined(FDB_USING_FILE_LIBC_MODE) */ #endif /* FDB_USING_FILE_MODE */ + diff --git a/src/fdb_kvdb.c b/src/fdb_kvdb.c index 9abd0b7..7badbc3 100644 --- a/src/fdb_kvdb.c +++ b/src/fdb_kvdb.c @@ -62,7 +62,6 @@ #define KV_STATUS_TABLE_SIZE FDB_STATUS_TABLE_SIZE(FDB_KV_STATUS_NUM) -//TODO 文件模式如何支持 #define SECTOR_NUM (db_max_size(db) / db_sec_size(db)) #define SECTOR_HDR_DATA_SIZE (FDB_WG_ALIGN(sizeof(struct sector_hdr_data))) @@ -687,7 +686,7 @@ char *fdb_kv_get(fdb_kvdb_t db, const char *key) value[get_size] = '\0'; return value; } else if (blob.saved.len > FDB_STR_KV_VALUE_MAX_SIZE) { - FDB_INFO("Warning: The default string KV value buffer length (%d) is too less (%u).\n", FDB_STR_KV_VALUE_MAX_SIZE, + FDB_INFO("Warning: The default string KV value buffer length (%d) is too less (%zu).\n", FDB_STR_KV_VALUE_MAX_SIZE, blob.saved.len); } else { FDB_INFO("Warning: The KV value isn't string. Could not be returned\n"); @@ -976,7 +975,7 @@ static uint32_t new_kv(fdb_kvdb_t db, kv_sec_info_t sector, size_t kv_size) __retry: if ((empty_kv = alloc_kv(db, sector, kv_size)) == FAILED_ADDR && db->gc_request && !already_gc) { - FDB_DEBUG("Warning: Alloc an KV (size %u) failed when new KV. Now will GC then retry.\n", kv_size); + FDB_DEBUG("Warning: Alloc an KV (size %zu) failed when new KV. Now will GC then retry.\n", kv_size); gc_collect(db); already_gc = true; goto __retry; @@ -1045,7 +1044,7 @@ static void gc_collect(fdb_kvdb_t db) sector_iterator(db, §or, FDB_SECTOR_STORE_EMPTY, &empty_sec, NULL, gc_check_cb, false); /* do GC collect */ - FDB_DEBUG("The remain empty sector is %u, GC threshold is %d.\n", empty_sec, FDB_GC_EMPTY_SEC_THRESHOLD); + FDB_DEBUG("The remain empty sector is %zu, GC threshold is %d.\n", empty_sec, FDB_GC_EMPTY_SEC_THRESHOLD); if (empty_sec <= FDB_GC_EMPTY_SEC_THRESHOLD) { sector_iterator(db, §or, FDB_SECTOR_STORE_UNUSED, db, NULL, do_gc, false); } @@ -1340,7 +1339,7 @@ __reload: } _fdb_flash_read((fdb_db_t)db, kv->addr.value + len, (uint32_t *) buf, FDB_WG_ALIGN(size)); if (print_value) { - FDB_PRINT("%.*s", size, buf); + FDB_PRINT("%.*s", (int)size, buf); } else if (!fdb_is_str(buf, size)) { value_is_str = false; break; @@ -1384,7 +1383,7 @@ void fdb_kv_print(fdb_kvdb_t db) kv_iterator(db, &kv, &using_size, db, print_kv_cb); FDB_PRINT("\nmode: next generation\n"); - FDB_PRINT("size: %u/%u bytes.\n", using_size + (size_t)((SECTOR_NUM - FDB_GC_EMPTY_SEC_THRESHOLD) * SECTOR_HDR_DATA_SIZE), + FDB_PRINT("size: %zu/%zu bytes.\n", using_size + (size_t)((SECTOR_NUM - FDB_GC_EMPTY_SEC_THRESHOLD) * SECTOR_HDR_DATA_SIZE), (size_t)(db_max_size(db) - db_sec_size(db) * FDB_GC_EMPTY_SEC_THRESHOLD)); /* unlock the KV cache */ @@ -1405,7 +1404,7 @@ static void kv_auto_update(fdb_kvdb_t db) struct fdb_kv kv; size_t i, value_len; struct kvdb_sec_info sector; - FDB_DEBUG("Update the KV from version %u to %u.\n", saved_ver_num, setting_ver_num); + FDB_DEBUG("Update the KV from version %zu to %zu.\n", saved_ver_num, setting_ver_num); for (i = 0; i < db->default_kvs.num; i++) { /* add a new KV when it's not found */ if (!find_kv(db, db->default_kvs.kvs[i].key, &kv)) { @@ -1614,7 +1613,7 @@ fdb_err_t fdb_kvdb_init(fdb_kvdb_t db, const char *name, const char *part_name, } #endif /* FDB_KV_USING_CACHE */ - FDB_DEBUG("KVDB size is %u bytes.\n", db_max_size(db)); + FDB_DEBUG("KVDB size is %zu bytes.\n", (size_t)db_max_size(db)); result = _fdb_kv_load(db); @@ -1696,3 +1695,4 @@ bool fdb_kv_iterate(fdb_kvdb_t db, fdb_kv_iterator_t itr) } #endif /* defined(FDB_USING_KVDB) */ +