[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH] Add override for console log level
From: Owen Smith <owen.smith@xxxxxxxxxx> Use the registry DWORD value called "ConsoleLogLevel" at "HKLM\System\CurrentControlSet\services\xenbus\Parameters" to override the default console logging output of: LOG_LEVEL_INFO | LOG_LEVEL_WARNING | LOG_LEVEL_ERROR | LOG_LEVEL_CRITICAL Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> --- src/xenbus/driver.c | 39 +++++++++++++++++++++++++++++++++++++++ src/xenbus/driver.h | 5 +++++ src/xenbus/fdo.c | 17 +++++++++-------- 3 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/xenbus/driver.c b/src/xenbus/driver.c index bbbda6c..270b60f 100644 --- a/src/xenbus/driver.c +++ b/src/xenbus/driver.c @@ -48,6 +48,7 @@ typedef struct _XENBUS_DRIVER { PDRIVER_OBJECT DriverObject; HANDLE ParametersKey; + ULONG ConsoleLogLevel; MUTEX Mutex; LIST_ENTRY List; @@ -122,6 +123,30 @@ DriverGetParametersKey( return __DriverGetParametersKey(); } +static FORCEINLINE VOID +__DriverSetConsoleLogLevel( + IN ULONG LogLevel + ) +{ + Driver.ConsoleLogLevel = LogLevel; +} + +static FORCEINLINE ULONG +__DriverGetConsoleLogLevel( + VOID + ) +{ + return Driver.ConsoleLogLevel; +} + +ULONG +DriverGetConsoleLogLevel( + VOID + ) +{ + return __DriverGetConsoleLogLevel(); +} + #define MAXNAMELEN 128 static FORCEINLINE VOID @@ -568,6 +593,8 @@ DriverUnload( RtlZeroMemory(&Driver.List, sizeof (LIST_ENTRY)); RtlZeroMemory(&Driver.Mutex, sizeof (MUTEX)); + __DriverSetConsoleLogLevel(0); + ParametersKey = __DriverGetParametersKey(); RegistryCloseKey(ParametersKey); @@ -680,6 +707,7 @@ DriverEntry( HANDLE ServiceKey; HANDLE ParametersKey; ULONG Index; + ULONG LogLevel; NTSTATUS status; ASSERT3P(__DriverGetDriverObject(), ==, NULL); @@ -721,6 +749,17 @@ DriverEntry( __DriverSetParametersKey(ParametersKey); + status = RegistryQueryDwordValue(ParametersKey, + "ConsoleLogLevel", + &LogLevel); + if (!NT_SUCCESS(status)) + LogLevel = (ULONG)(LOG_LEVEL_INFO | + LOG_LEVEL_WARNING | + LOG_LEVEL_ERROR | + LOG_LEVEL_CRITICAL); + + __DriverSetConsoleLogLevel(LogLevel); + RegistryCloseKey(ServiceKey); status = XenTouch(__MODULE__, diff --git a/src/xenbus/driver.h b/src/xenbus/driver.h index dd81e4c..5f26c0d 100644 --- a/src/xenbus/driver.h +++ b/src/xenbus/driver.h @@ -42,6 +42,11 @@ DriverGetParametersKey( VOID ); +extern ULONG +DriverGetConsoleLogLevel( + VOID + ); + extern VOID DriverRequestReboot( VOID diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c index 0aeea3d..d44521b 100644 --- a/src/xenbus/fdo.c +++ b/src/xenbus/fdo.c @@ -2656,6 +2656,7 @@ __FdoD3ToD0( IN PXENBUS_FDO Fdo ) { + ULONG LogLevel; NTSTATUS status; Trace("====>\n"); @@ -2680,14 +2681,14 @@ __FdoD3ToD0( Fdo->Channel, FALSE); - status = LogAddDisposition(LOG_LEVEL_INFO | - LOG_LEVEL_WARNING | - LOG_LEVEL_ERROR | - LOG_LEVEL_CRITICAL, - FdoOutputBuffer, - Fdo, - &Fdo->LogDisposition); - ASSERT(NT_SUCCESS(status)); + LogLevel = DriverGetConsoleLogLevel(); + if (LogLevel != 0) { + status = LogAddDisposition(LogLevel, + FdoOutputBuffer, + Fdo, + &Fdo->LogDisposition); + ASSERT(NT_SUCCESS(status)); + } status = XENBUS_STORE(WatchAdd, &Fdo->StoreInterface, -- 2.8.3 _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |