diff --git a/include/core/include/reserveResources.h b/include/core/include/reserveResources.h index efc1077..bdcaa84 100644 --- a/include/core/include/reserveResources.h +++ b/include/core/include/reserveResources.h @@ -83,11 +83,11 @@ extern Latch_s ReserveResource; /* Used to pre-alloc or reserve * cache buffers */ -#if 0 +#if 1 #define RESERVE_RSRC(_num) GRAB( &ReserveResource, (_num)) #define RELEASE_RSRC(_num) DROP( &ReserveResource, (_num)) #define FSM_RESERVE_RSRC(_num, _fsm, _action) \ - FSM_GRAB( &ReserveResource, (_num), (_fsm), (_action)) + FSM_GRAB( &ReserveResource, (_num), (_fsm), (voidfunc_t)(_action)) #else #define RESERVE_RSRC(_num) ((void) 0) #define RELEASE_RSRC(_num) ((void) 0) diff --git a/src/core/nss/cache/cache.c b/src/core/nss/cache/cache.c index c849cd9..608cc7c 100644 --- a/src/core/nss/cache/cache.c +++ b/src/core/nss/cache/cache.c @@ -35,11 +35,13 @@ #include #include #include +#include #include #include CIRhead_t WaitForCacheQ; Latch_s ReserveBuffers; +Latch_s ReserveResource; Buffer_s CACHE_SparseBuffer; CacheControl_s Cache = {0}; @@ -103,6 +105,7 @@ STATUS CACHE_Startup(void) CIR_INIT(LinuxWaitQ); CIR_INIT(Cache.waitQ); INIT_LATCH(&ReserveBuffers); + INIT_COUNT(&ReserveResource, -PRERESERVE_FOR_BEAST_FLUSH); memset(&CACHE_SparseBuffer, 0, sizeof(CACHE_SparseBuffer)); CACHE_SparseBuffer.pBuf.data = NULL; diff --git a/tests/core/cache/test_nwcore_cache.c b/tests/core/cache/test_nwcore_cache.c index 4b9d278..dbb4486 100644 --- a/tests/core/cache/test_nwcore_cache.c +++ b/tests/core/cache/test_nwcore_cache.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -27,6 +28,14 @@ int main(void) MPKNSS_LOCK(); CHECK(CACHE_Startup() == zOK); + CHECK(NUM_RESOURCES() == -PRERESERVE_FOR_BEAST_FLUSH); + INC_RSRC_CHECK(PRERESERVE_FOR_BEAST_FLUSH + NAME_RESERVE); + CHECK(HAVE_RESOURCES(NAME_RESERVE - 1)); + RESERVE_RSRC(NAME_RESERVE); + CHECK(NUM_RESOURCES() == 0); + RELEASE_RSRC(NAME_RESERVE); + CHECK(NUM_RESOURCES() == NAME_RESERVE); + initMyCache(&mycache, NULL, 12, "cache-test"); buffer = cacheAllocBuffer(&mycache, 7, 11, defaultSignal, CACHE_WRITE);