VOID
CcInitializeVacbs(
)
{
SIZE_T VacbBytes;
PVACB NextVacb;
// 根据全局信息 计算缓存 即除以256KB
// 初始化缓存信息参数 挂入队列 等待使用
CcNumberVacbs = (MmSizeOfSystemCacheInPages >> (VACB_OFFSET_SHIFT - PAGE_SHIFT)) - 2;
VacbBytes = CcNumberVacbs * sizeof(VACB);
CcVacbs = (PVACB) ExAllocatePoolWithTag( NonPagedPool, VacbBytes, 'aVcC' );
if (CcVacbs != NULL)
{
CcBeyondVacbs = (PVACB)((PCHAR)CcVacbs + VacbBytes);
RtlZeroMemory( CcVacbs, VacbBytes );
InitializeListHead( &CcVacbLru );
InitializeListHead( &CcVacbFreeList );
for (NextVacb = CcVacbs; NextVacb < CcBeyondVacbs; NextVacb++)
{
InsertTailList( &CcVacbFreeList, &NextVacb->LruList );
}
}
}
本文介绍了一个初始化VACB缓存的过程,包括计算所需缓存数量、分配内存、初始化链表等步骤。通过该过程可以了解操作系统中缓存管理的基础实现。
1460

被折叠的 条评论
为什么被折叠?



