Использование littlefs - что такое функция sych? - PullRequest
0 голосов
/ 25 октября 2019

Функция синхронизации вызывается один раз, в функции в конце этого поста. Поскольку файл был записан, я не понимаю цели синхронизации. Мое единственное предположение: «Я полагаю, что синхронизация делает недействительными все кэши, чтобы они не перезаписывались?»Я много искал, например, код. Кто-нибудь знающий или даже объяснение синхронизации файлов может помочь. Спасибо. Вот функция, которая ее вызывает:

static int lfs_bd_flush(lfs_t *lfs,
    lfs_cache_t *pcache, lfs_cache_t *rcache, bool validate) {
if (pcache->block != 0xffffffff && pcache->block != 0xfffffffe) {
    LFS_ASSERT(pcache->block < lfs->cfg->block_count);
    lfs_size_t diff = lfs_alignup(pcache->size, lfs->cfg->prog_size);
    int err = lfs->cfg->prog(lfs->cfg, pcache->block,
            pcache->off, pcache->buffer, diff);
    if (err) {
        return err;
    }

    if (validate) {
        // check data on disk
        lfs_cache_drop(lfs, rcache);
        int res = lfs_bd_cmp(lfs,
                NULL, rcache, diff,
                pcache->block, pcache->off, pcache->buffer, diff);
        if (res < 0) {
            return res;
        }

        if (res != LFS_CMP_EQ) {
            return LFS_ERR_CORRUPT;
        }
    }

    lfs_cache_zero(lfs, pcache);
}

return 0;

}

...