FireSync API
 All Classes Files Functions Variables Typedefs Friends Macros Modules Pages
kPageCache.h
Go to the documentation of this file.
1 
8 #ifndef K_FIRESYNC_PAGE_CACHE_H
9 #define K_FIRESYNC_PAGE_CACHE_H
10 
11 #include <kFireSync/kFsDef.h>
12 #include <kFireSync/Utils/kPageCache.x.h>
13 
23 //typedef kObject kPageCache; --forward-declared in kFsDef.x.h
24 
31 typedef kPointer kPageCacheItem;
32 
44 kFsFx(kStatus) kPageCache_Construct(kPageCache* cache, kSize pageCapacity, kSize pageSize, kSize spareSize, kAlloc allocator);
45 
53 
62 kFsFx(kStatus) kPageCache_InvalidatePage(kPageCache cache, kSize pageIndex);
63 
73 kFsFx(kStatus) kPageCache_InvalidateRange(kPageCache cache, kSize pageIndex, kSize pageCount);
74 
84 kFsFx(kStatus) kPageCache_FindPage(kPageCache cache, kSize pageIndex, kPageCacheItem* page);
85 
95 kFsFx(kStatus) kPageCache_AccessPage(kPageCache cache, kSize pageIndex, kPageCacheItem* page);
96 
110 kFsFx(kStatus) kPageCache_AllocatePage(kPageCache cache, kSize pageIndex, kPageCacheItem* page);
111 
122 kFsFx(kStatus) kPageCache_CopyToPageData(kPageCache cache, kPageCacheItem page, const kPointer source, kSize length);
123 
135 
146 kFsFx(kStatus) kPageCache_CopyToPageSpare(kPageCache cache, kPageCacheItem page, const kPointer source, kSize length);
147 
159 
168 {
169  kObj(kPageCache, cache);
170 
171  return obj->pageSize;
172 }
173 
182 {
183  kObj(kPageCache, cache);
184 
185  return obj->spareSize;
186 }
187 
197 {
198  kAssertType(cache, kPageCache);
199 
200  return ((kPageCacheEntry*)page)->data;
201 }
202 
212 {
213  kAssertType(cache, kPageCache);
214 
215  return ((kPageCacheEntry*)page)->spare;
216 }
217 
218 #endif
kPointer kPageCache_PageSpare(kPageCache cache, kPageCacheItem page)
Returns a pointer to a cache spare data buffer.
Definition: kPageCache.h:211
#define kAssertType(OBJECT, SYMBOL)
kStatus kPageCache_CopyFromPageData(kPageCache cache, kPageCacheItem page, kPointer dest, kSize length)
Copies page data out of a cache page.
kStatus kPageCache_Construct(kPageCache *cache, kSize pageCapacity, kSize pageSize, kSize spareSize, kAlloc allocator)
Constructs a kPageCache object.
kStatus kPageCache_Invalidate(kPageCache cache)
Invalidates the entire page cache.
kStatus kPageCache_AllocatePage(kPageCache cache, kSize pageIndex, kPageCacheItem *page)
Adds a page associated with the specified page index to the page cache.
kSize kPageCache_SpareSize(kPageCache cache)
Reports the spare size for the cache.
Definition: kPageCache.h:181
#define kInlineFx(TYPE)
kStatus kPageCache_CopyFromPageSpare(kPageCache cache, kPageCacheItem page, kPointer dest, kSize length)
Copies spare data out of a cache page spare area.
kPointer kPageCacheItem
Represents an entry within a kPageCache object.
kStatus kPageCache_AccessPage(kPageCache cache, kSize pageIndex, kPageCacheItem *page)
Finds the cache page associated with the specified page index (if present) and updates LRU informatio...
kStatus kPageCache_CopyToPageSpare(kPageCache cache, kPageCacheItem page, const kPointer source, kSize length)
Copies spare data into a cache page spare area.
#define kObj(TypeName_T, T_object)
Essential API declarations for the kFireSync library.
kPointer kPageCache_PageData(kPageCache cache, kPageCacheItem page)
Returns a pointer to a cache page data buffer.
Definition: kPageCache.h:196
Helper class to support the implementation of a RAM page cache for a flash storage device...
kSize kPageCache_PageSize(kPageCache cache)
Reports the page size for the cache.
Definition: kPageCache.h:167
kStatus kPageCache_FindPage(kPageCache cache, kSize pageIndex, kPageCacheItem *page)
Finds the cache page associated with the specified page index, if present.
kStatus kPageCache_InvalidatePage(kPageCache cache, kSize pageIndex)
Invalidates a specific page.
kStatus kPageCache_InvalidateRange(kPageCache cache, kSize pageIndex, kSize pageCount)
Invalidates a ranges of pages.
kStatus kPageCache_CopyToPageData(kPageCache cache, kPageCacheItem page, const kPointer source, kSize length)
Copies page data into a cache page.