NT4/private/ntos/lfs/logpgsup.c
2020-09-30 17:12:29 +02:00

106 lines
2.6 KiB
C
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
LogPgSup.c
Abstract:
This module implements support for manipulating log pages.
Author:
Brian Andrew [BrianAn] 20-June-1991
Revision History:
--*/
#include "lfsprocs.h"
//
// The debug trace level
//
#define Dbg (DEBUG_TRACE_LOG_PAGE_SUP)
#ifdef ALLOC_PRAGMA
#pragma alloc_text(PAGE, LfsNextLogPageOffset)
#endif
VOID
LfsNextLogPageOffset (
IN PLFCB Lfcb,
IN LONGLONG CurrentLogPageOffset,
OUT PLONGLONG NextLogPageOffset,
OUT PBOOLEAN Wrapped
)
/*++
Routine Description:
This routine will compute the offset in the log file of the next log
page.
Arguments:
Lfcb - This is the file control block for the log file.
CurrentLogPageOffset - This is the file offset of the current log page.
NextLogPageOffset - Address to store the next log page to use.
Wrapped - This is a pointer to a boolean variable that, if present,
we use to indicate whether we wrapped in the log file.
Return Value:
None.
--*/
{
PAGED_CODE();
DebugTrace( +1, Dbg, "LfsNextLogPageOffset: Entered\n", 0 );
DebugTrace( 0, Dbg, "Lfcb -> %08lx\n", Lfcb );
DebugTrace( 0, Dbg, "CurrentLogPageOffset (Low) -> %08lx\n", CurrentLogPageOffset.LowPart );
DebugTrace( 0, Dbg, "CurrentLogPageOffset (High) -> %08lx\n", CurrentLogPageOffset.HighPart );
DebugTrace( 0, Dbg, "Wrapped -> %08lx\n", Wrapped );
//
// We add the log page size to the current log offset.
//
LfsTruncateOffsetToLogPage( Lfcb, CurrentLogPageOffset, &CurrentLogPageOffset );
*NextLogPageOffset = CurrentLogPageOffset + Lfcb->LogPageSize; //**** xxAdd( CurrentLogPageOffset, Lfcb->LogPageSize );
//
// If the result is larger than the file, we use the first page offset
// in the file.
//
if ( *NextLogPageOffset >= Lfcb->FileSize ) { //**** xxGeq( *NextLogPageOffset, Lfcb->FileSize )
*NextLogPageOffset = Lfcb->FirstLogPage;
*Wrapped = TRUE;
} else {
*Wrapped = FALSE;
}
DebugTrace( 0, Dbg, "NextLogPageOffset (Low) -> %08lx\n", NextLogPageOffset->LowPart );
DebugTrace( 0, Dbg, "NextLogPageOffset (High) -> %08lx\n", NextLogPageOffset->HighPart );
DebugTrace( 0, Dbg, "Wrapped -> %08x\n", *Wrapped );
DebugTrace( -1, Dbg, "LfsNextLogPageOffset: Exit\n", 0 );
return;
}