static FAST_MUTEX ViewLock;
+#ifndef LIBCAPTIVE
void * alloca(size_t size);
NTSTATUS STDCALL
CcRosInternalFreeCacheSegment(PCACHE_SEGMENT CacheSeg);
+#endif /* LIBCAPTIVE */
/* FUNCTIONS *****************************************************************/
+#ifndef LIBCAPTIVE
+
NTSTATUS STATIC
CcRosFlushCacheSegment(PCACHE_SEGMENT CacheSegment)
{
return(STATUS_SUCCESS);
}
+#endif /* LIBCAPTIVE */
+
NTSTATUS STDCALL
CcRosReleaseCacheSegment(PBCB Bcb,
PCACHE_SEGMENT CacheSeg,
return(NULL);
}
+#ifndef LIBCAPTIVE
+
NTSTATUS
CcRosMarkDirtyCacheSegment(PBCB Bcb, ULONG FileOffset)
{
return(STATUS_SUCCESS);
}
+#endif /* LIBCAPTIVE */
+
NTSTATUS STATIC
CcRosCreateCacheSegment(PBCB Bcb,
ULONG FileOffset,
PCACHE_SEGMENT* CacheSeg,
BOOLEAN Lock)
{
+#ifndef LIBCAPTIVE
ULONG i;
+#endif /* LIBCAPTIVE */
PCACHE_SEGMENT current;
PLIST_ENTRY current_entry;
NTSTATUS Status;
{
KeBugCheck(0);
}
+#ifndef LIBCAPTIVE
for (i = 0; i < (Bcb->CacheSegmentSize / PAGE_SIZE); i++)
{
PHYSICAL_ADDRESS Page;
KeBugCheck(0);
}
}
+#else /* !LIBCAPTIVE */
+ /* libcaptive MmCreateMemoryArea() returns already allocated memory */
+#endif /* !LIBCAPTIVE */
if (!Lock)
{
ExReleaseFastMutex(¤t->Lock);
return(STATUS_SUCCESS);
}
+#ifndef LIBCAPTIVE
+
NTSTATUS
CcRosGetCacheSegmentChain(PBCB Bcb,
ULONG FileOffset,
return(STATUS_SUCCESS);
}
+#endif /* LIBCAPTIVE */
+
NTSTATUS
CcRosGetCacheSegment(PBCB Bcb,
ULONG FileOffset,
CacheSeg));
}
+#ifndef LIBCAPTIVE
+
STATIC VOID
CcFreeCachePage(PVOID Context, MEMORY_AREA* MemoryArea, PVOID Address,
PHYSICAL_ADDRESS PhysAddr, SWAPENTRY SwapEntry, BOOLEAN Dirty)
return NULL;
}
+#endif /* LIBCAPTIVE */
+
VOID
CcInitView(VOID)
{
InitializeListHead(&DirtySegmentListHead);
InitializeListHead(&CacheSegmentLRUListHead);
ExInitializeFastMutex(&ViewLock);
+#ifndef LIBCAPTIVE
MmInitializeMemoryConsumer(MC_CACHE, CcRosTrimCache);
CcInitCacheZeroPage();
+#endif /* LIBCAPTIVE */
}
/* EOF */