这里更改版本号进行更改判断
static void kv_auto_update(fdb_kvdb_t db)//这个代码是自动更新的源码
{
size_t saved_ver_num, setting_ver_num = db->ver_num;
if (get_kv(db, VER_NUM_KV_NAME, &saved_ver_num, sizeof(size_t), NULL) > 0) {
/* check version number */
if (saved_ver_num != setting_ver_num) {//判断是否更新
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);
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)) {
/* It seems to be a string when value length is 0.
* This mechanism is for compatibility with older versions (less then V4.0). */
if (db->default_kvs.kvs[i].value_len == 0) {
value_len = strlen(db->default_kvs.kvs[i].value);
} else {
value_len = db->default_kvs.kvs[i].value_len;
}
sector.empty_kv = FAILED_ADDR;
create_kv_blob(db, §or, db->default_kvs.kvs[i].key, db->default_kvs.kvs[i].value, value_len);
}
}
} else {
/* version number not changed now return */
return;
}
}
set_kv(db, VER_NUM_KV_NAME, &setting_ver_num, sizeof(size_t));
}
问 FlashDB在哪里修改版本号实现自动更新?