This is an automated email from the ASF dual-hosted git repository. marko pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit f116a27260d05baa27903febe204db765da308dc Author: Nolan Lau <no...@juul.com> AuthorDate: Thu Oct 17 17:01:24 2019 -0700 Consolidating functionality. --- fs/fcb/src/fcb_getnext.c | 55 +--------------------------------------------- sys/log/full/src/log_fcb.c | 32 +++++++++++++-------------- 2 files changed, 16 insertions(+), 71 deletions(-) diff --git a/fs/fcb/src/fcb_getnext.c b/fs/fcb/src/fcb_getnext.c index f85c2f9..8075ba2 100644 --- a/fs/fcb/src/fcb_getnext.c +++ b/fs/fcb/src/fcb_getnext.c @@ -111,45 +111,7 @@ next_sector: } int -fcb_getnext_sector_nolock(struct fcb *fcb, struct fcb_entry *loc) -{ - int rc; - - if (loc->fe_area == NULL) { - /* - * Find the first one we have in flash. - */ - loc->fe_area = fcb->f_oldest; - } - if (loc->fe_elem_off == 0) { - /* - * If offset is zero, we serve the first entry from the area. - */ - loc->fe_elem_off = sizeof(struct fcb_disk_area); - rc = fcb_elem_info(fcb, loc); - } else { - rc = fcb_getnext_in_area(fcb, loc); - } - switch (rc) { - case 0: - return 0; - case FCB_ERR_CRC: - break; - default: - return FCB_ERR_NEXT_SECT; - } - while (rc == FCB_ERR_CRC) { - rc = fcb_getnext_in_area(fcb, loc); - if (rc == 0) { - return 0; - } - } - - return FCB_ERR_NEXT_SECT; -} - -int -fcb_getnext(struct fcb *fcb, struct fcb_entry *loc) + fcb_getnext(struct fcb *fcb, struct fcb_entry *loc) { int rc; @@ -162,18 +124,3 @@ fcb_getnext(struct fcb *fcb, struct fcb_entry *loc) return rc; } - -int -fcb_getnext_sector(struct fcb *fcb, struct fcb_entry *loc) -{ - int rc; - - rc = os_mutex_pend(&fcb->f_mtx, OS_WAIT_FOREVER); - if (rc && rc != OS_NOT_STARTED) { - return FCB_ERR_ARGS; - } - rc = fcb_getnext_sector_nolock(fcb, loc); - os_mutex_release(&fcb->f_mtx); - - return rc; -} diff --git a/sys/log/full/src/log_fcb.c b/sys/log/full/src/log_fcb.c index 23d9a96..e32d80f 100644 --- a/sys/log/full/src/log_fcb.c +++ b/sys/log/full/src/log_fcb.c @@ -498,6 +498,7 @@ log_fcb_walk_impl(struct log *log, log_walk_func_t walk_func, struct fcb *fcb; struct fcb_log *fcb_log; struct fcb_entry loc; + struct flash_area *fap; int rc; fcb_log = log->l_arg; @@ -515,6 +516,7 @@ log_fcb_walk_impl(struct log *log, log_walk_func_t walk_func, default: return rc; } + fap = loc.fe_area; #if MYNEWT_VAL(LOG_FCB_BOOKMARKS) /* If a minimum index was specified (i.e., we are not just retrieving the @@ -525,26 +527,22 @@ log_fcb_walk_impl(struct log *log, log_walk_func_t walk_func, } #endif - if (!area) - { - do { - rc = walk_func(log, log_offset, &loc, loc.fe_data_len); - if (rc != 0) { - if (rc < 0) { - return rc; - } else { - return 0; - } + do { + if (area) { + if (fap != loc.fe_area) { + return 0; } - } while (fcb_getnext(fcb, &loc) == 0); - } else { - do { - rc = walk_func(log, log_offset, &loc, loc.fe_data_len); - if (rc != 0) { + } + + rc = walk_func(log, log_offset, &loc, loc.fe_data_len); + if (rc != 0) { + if (rc < 0) { return rc; + } else { + return 0; } - } while (fcb_getnext_sector(fcb, &loc) == 0); - } + } + } while (fcb_getnext(fcb, &loc) == 0); return 0; }