62 lines
1.7 KiB
C
62 lines
1.7 KiB
C
#include <include/xCache.h>
|
|
#include <include/pssmpk.h>
|
|
#include <include/register.h>
|
|
#include <internal/nCache.h>
|
|
#include <internal/pssConfig.h>
|
|
#include <include/reserveResources.h>
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#define CHECK(expr) do { \
|
|
if (!(expr)) { \
|
|
fprintf(stderr, "CHECK failed: %s:%d: %s\n", __FILE__, __LINE__, #expr); \
|
|
return EXIT_FAILURE; \
|
|
} \
|
|
} while (0)
|
|
|
|
int main(void)
|
|
{
|
|
MyCache_s mycache;
|
|
Buffer_s *buffer;
|
|
Buffer_s *found;
|
|
|
|
configStartup();
|
|
nssInitializeSpinLockCode();
|
|
CHECK(COMN_RegisterLibraryResourceTags("nwnss.cache") == zOK);
|
|
|
|
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);
|
|
CHECK(buffer != NULL);
|
|
CHECK(buffer->pBuf.data != NULL);
|
|
CHECK(buffer->pBuf.mycache == &mycache);
|
|
CHECK(buffer->pBuf.fileBlk == 7);
|
|
strcpy((char *)buffer->pBuf.data, "mars-nwe");
|
|
cacheMarkDirty(buffer);
|
|
CHECK((buffer->state & CACHE_DIRTY) != 0);
|
|
cacheFlush(buffer);
|
|
CHECK((buffer->state & CACHE_DIRTY) == 0);
|
|
CACHE_RELEASE(buffer);
|
|
|
|
found = cacheFind(&mycache, 7);
|
|
CHECK(found == buffer);
|
|
cacheTossIfThere(&mycache, 7);
|
|
CHECK(cacheFind(&mycache, 7) == NULL);
|
|
|
|
CACHE_Shutdown();
|
|
MPKNSS_UNLOCK();
|
|
return EXIT_SUCCESS;
|
|
}
|