From d2655eac7a4fb6074241a50de7a994e819dd6b38 Mon Sep 17 00:00:00 2001 From: nvt-se Date: Thu, 14 Jan 2010 21:16:58 +0000 Subject: [PATCH] make watchdog management slightly more abstract to simplify porting --- core/cfs/cfs-coffee.c | 30 ++++++++++++++++++------------ platform/sky/cfs-coffee-arch.h | 4 ++++ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/core/cfs/cfs-coffee.c b/core/cfs/cfs-coffee.c index dd6dd7e8e..3f2e4e80a 100644 --- a/core/cfs/cfs-coffee.c +++ b/core/cfs/cfs-coffee.c @@ -52,7 +52,13 @@ #include "cfs/cfs.h" #include "cfs-coffee-arch.h" #include "cfs/cfs-coffee.h" -#include "dev/watchdog.h" + +#ifndef COFFEE_WATCHDOG_START +#define COFFEE_WATCHDOG_START() +#endif +#ifndef COFFEE_WATCHDOG_STOP +#define COFFEE_WATCHDOG_STOP() +#endif #if COFFEE_START & (COFFEE_SECTOR_SIZE - 1) #error COFFEE_START must point to the first byte in a sector. @@ -284,7 +290,7 @@ collect_garbage(int mode) struct sector_status stats; coffee_page_t first_page, isolation_count; - watchdog_stop(); + COFFEE_WATCHDOG_STOP(); PRINTF("Coffee: Running the file system garbage collector in %s mode\n", mode == GC_RELUCTANT ? "reluctant" : "greedy"); @@ -322,7 +328,7 @@ collect_garbage(int mode) } } - watchdog_start(); + COFFEE_WATCHDOG_START(); } /*---------------------------------------------------------------------------*/ static coffee_page_t @@ -538,10 +544,10 @@ reserve(const char *name, coffee_page_t pages, coffee_page_t page; struct file *file; - watchdog_stop(); + COFFEE_WATCHDOG_STOP(); if(!allow_duplicates && find_file(name) != NULL) { - watchdog_start(); + COFFEE_WATCHDOG_START(); return NULL; } @@ -553,7 +559,7 @@ reserve(const char *name, coffee_page_t pages, collect_garbage(GC_GREEDY); page = find_contiguous_pages(pages); if(page == INVALID_PAGE) { - watchdog_start(); + COFFEE_WATCHDOG_START(); *gc_wait = 1; return NULL; } @@ -570,7 +576,7 @@ reserve(const char *name, coffee_page_t pages, file = load_file(page, &hdr); file->end = 0; - watchdog_start(); + COFFEE_WATCHDOG_START(); return file; } @@ -735,21 +741,21 @@ merge_log(coffee_page_t file_page, int extend) } offset = 0; - watchdog_stop(); + COFFEE_WATCHDOG_STOP(); do { char buf[hdr.log_record_size == 0 ? COFFEE_PAGE_SIZE : hdr.log_record_size]; n = cfs_read(fd, buf, sizeof(buf)); if(n < 0) { remove_by_page(new_file->page, 0, 0); cfs_close(fd); - watchdog_start(); + COFFEE_WATCHDOG_START(); return -1; } else if(n > 0) { COFFEE_WRITE(buf, n, absolute_offset(new_file->page, offset)); offset += n; } } while(n != 0); - watchdog_start(); + COFFEE_WATCHDOG_START(); for(i = 0; i < COFFEE_FD_SET_SIZE; i++) { if(coffee_fd_set[i].flags != COFFEE_FD_FREE && @@ -1208,12 +1214,12 @@ cfs_coffee_format(void) *next_free = 0; - watchdog_stop(); + COFFEE_WATCHDOG_STOP(); for(i = 0; i < COFFEE_SECTOR_COUNT; i++) { COFFEE_ERASE(i); PRINTF("."); } - watchdog_start(); + COFFEE_WATCHDOG_START(); /* Formatting invalidates the file information. */ memset(&protected_mem, 0, sizeof(protected_mem)); diff --git a/platform/sky/cfs-coffee-arch.h b/platform/sky/cfs-coffee-arch.h index 4525da174..1381ac66e 100644 --- a/platform/sky/cfs-coffee-arch.h +++ b/platform/sky/cfs-coffee-arch.h @@ -42,6 +42,7 @@ #include "contiki-conf.h" #include "dev/xmem.h" +#include "dev/watchdog.h" /* Coffee configuration parameters. */ #define COFFEE_SECTOR_SIZE 65536UL @@ -57,6 +58,9 @@ #define COFFEE_MICRO_LOGS 1 +#define COFFEE_WATCHDOG_START() watchdog_start() +#define COFFEE_WATCHDOG_STOP() watchdog_stop() + /* Flash operations. */ #define COFFEE_WRITE(buf, size, offset) \ xmem_pwrite((char *)(buf), (size), COFFEE_START + (offset))