Skip to content

Commit

Permalink
Enable WPP for module/zfs folder
Browse files Browse the repository at this point in the history
  • Loading branch information
Raj Kumar Soni authored and lundman committed Sep 2, 2021
1 parent c848dde commit e122a83
Show file tree
Hide file tree
Showing 8 changed files with 115 additions and 68 deletions.
2 changes: 1 addition & 1 deletion include/os/windows/spl/sys/debug.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ extern void printBuffer(const char *fmt, ...);
#define IOLog(...) printBuffer(__VA_ARGS__)
#define xprintf(...) KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, \
__VA_ARGS__))
#define TraceEvent(x, ...) printBuffer(__VA_ARGS__)
#define TraceEvent(x, ...)

#else // LUDICROUS_SPEED

Expand Down
33 changes: 13 additions & 20 deletions module/os/windows/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,17 +82,18 @@ install(FILES

file(GLOB CSOURCES CONFIGURE_DEPENDS "*.c")

function(set_file_properties)
function(add_macro_property)
foreach (I ${CSOURCES})
get_filename_component(OUTPUT_FILE_WE ${I} NAME_WE)
set_source_files_properties(${I} PROPERTIES COMPILE_FLAGS -DWPPFILE=${CMAKE_SOURCE_DIR}/out/build/${OUTPUT_FILE_WE}.tmh)
message(STATUS "FILES_IN ======: ${CMAKE_SOURCE_DIR}/out/build/${OUTPUT_FILE_WE}.tmh")
endforeach()
endfunction()

function(tracewpp OUTPUT_VAR OUTPUT_DIR SOURCE)
function(tracewpp OUTPUT_DIR SOURCE)
# [mlr] list of .tmh files to be generated -> TMH
set(WPP_DIR "C:\\Program Files (x86)\\Windows Kits\\10\\bin\\10.0.19041.0")
set(WPP_DIR "${WDK_ROOT}/bin/${WDK_VERSION}")

get_filename_component(FILEN ${SOURCE} NAME)
set(TMH_FILEN ${FILEN}.tmh)
set(TMH ${OUTPUT_DIR}/${TMH_FILEN})
Expand All @@ -110,37 +111,29 @@ function(tracewpp OUTPUT_VAR OUTPUT_DIR SOURCE)

set(TRACE "TraceEvent{FLAGS=MYDRIVER_ALL_INFO}(LEVEL, MSG, ...)")
set(DPRINT "dprintf{FLAGS=MYDRIVER_ALL_INFO, LEVEL=TRACE_INFO}(MSG, ...)")
set(CFGDIR "C:/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/wppconfig/rev1")
set(SCAN "C:/Program Files (x86)/Windows Kits/10/Include/wdf/kmdf/1.9/WdfTraceEnums.h")
set(CFGDIR1 "C:/Users/rsoni/Desktop/Desktop/openzfs/module/os/windows")
set(IC "C:/Users/rsoni/Desktop/Desktop/openzfs/include/os/windows/")
set(CFGDIR "${WPP_DIR}/wppconfig/rev1")
set(SCAN "${WDK_ROOT}/Include/wdf/kmdf/1.9/WdfTraceEnums.h")
set(WPP_MACRO "WPP_INLINE __inline")

execute_process(COMMAND "${NATIVE_WPP_DIR}\\x64\\tracewpp.exe"
execute_process(COMMAND "${NATIVE_WPP_DIR}/${WDK_PLATFORM}/tracewpp.exe"
-scan:${SCAN} /D${WPP_MACRO}
-cfgdir:${CFGDIR} -I${IC} -odir:${NATIVE_OUTPUT_DIR} -km -func:${TRACE}
-cfgdir:${CFGDIR} -I${CMAKE_CURRENT_BINARY_DIR} -odir:${NATIVE_OUTPUT_DIR} -km -func:${TRACE}
-func:${DPRINT} -gen:{km-default.tpl}*.tmh ${NATIVE_SOURCE})

# [mlr] export the value of TMH into OUTPUT_VAR.
set(${OUTPUT_VAR} ${TMH} PARENT_SCOPE)
endfunction()


function(wpp OUTPUT_VAR OUTPUT_DIR)
function(wpp OUTPUT_DIR)

add_macro_property()
# [mlr] invoke tracewpp() for each source file, adding the resulting file to a list
# named TMH.
message(STATUS "OUTPUT_DIR ======: ${OUTPUT_DIR}")

foreach ( I ${CSOURCES} )
tracewpp(J ${OUTPUT_DIR} ${I})
list(APPEND TMH ${J})
tracewpp(${OUTPUT_DIR} ${I})
endforeach()

source_group("WPP Files (generated)" REGULAR_EXPRESSION ".+\\.tmh$")

# [mlr] export the value of TMH into OUTPUT_VAR.
set(${OUTPUT_VAR} ${TMH} PARENT_SCOPE)
endfunction()

set_file_properties()
wpp(OUTPUT_VAR "${CMAKE_SOURCE_DIR}/out/build")
wpp("${CMAKE_SOURCE_DIR}/out/build")
33 changes: 13 additions & 20 deletions module/os/windows/spl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,18 @@ file(GLOB CSOURCES CONFIGURE_DEPENDS "*.c")

list(REMOVE_ITEM CSOURCES "${CMAKE_CURRENT_SOURCE_DIR}/spl-wmsum.c")

function(set_file_properties)
function(add_macro_property)
foreach (I ${CSOURCES})
get_filename_component(OUTPUT_FILE_WE ${I} NAME_WE)
set_source_files_properties(${I} PROPERTIES COMPILE_FLAGS -DWPPFILE=${CMAKE_SOURCE_DIR}/out/build/${OUTPUT_FILE_WE}.tmh)
message(STATUS "FILES_IN ======: ${CMAKE_SOURCE_DIR}/out/build/${OUTPUT_FILE_WE}.tmh")
endforeach()
endfunction()

function(tracewpp OUTPUT_VAR OUTPUT_DIR SOURCE)
function(tracewpp OUTPUT_DIR SOURCE)
# [mlr] list of .tmh files to be generated -> TMH
set(WPP_DIR "C:\\Program Files (x86)\\Windows Kits\\10\\bin\\10.0.19041.0")
set(WPP_DIR "${WDK_ROOT}/bin/${WDK_VERSION}")

get_filename_component(FILEN ${SOURCE} NAME)
set(TMH_FILEN ${FILEN}.tmh)
set(TMH ${OUTPUT_DIR}/${TMH_FILEN})
Expand All @@ -67,37 +68,29 @@ function(tracewpp OUTPUT_VAR OUTPUT_DIR SOURCE)

set(TRACE "TraceEvent{FLAGS=MYDRIVER_ALL_INFO}(LEVEL, MSG, ...)")
set(DPRINT "dprintf{FLAGS=MYDRIVER_ALL_INFO, LEVEL=TRACE_INFO}(MSG, ...)")
set(CFGDIR "C:/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/wppconfig/rev1")
set(SCAN "C:/Program Files (x86)/Windows Kits/10/Include/wdf/kmdf/1.9/WdfTraceEnums.h")
set(CFGDIR1 "C:/Users/rsoni/Desktop/Desktop/openzfs/module/os/windows")
set(IC "C:/Users/rsoni/Desktop/Desktop/openzfs/include/os/windows/")
set(CFGDIR "${WPP_DIR}/wppconfig/rev1")
set(SCAN "${WDK_ROOT}/Include/wdf/kmdf/1.9/WdfTraceEnums.h")
set(WPP_MACRO "WPP_INLINE __inline")

execute_process(COMMAND "${NATIVE_WPP_DIR}\\x64\\tracewpp.exe"
execute_process(COMMAND "${NATIVE_WPP_DIR}/${WDK_PLATFORM}/tracewpp.exe"
-scan:${SCAN} /D${WPP_MACRO}
-cfgdir:${CFGDIR} -I${IC} -odir:${NATIVE_OUTPUT_DIR} -km -func:${TRACE}
-cfgdir:${CFGDIR} -I${CMAKE_CURRENT_BINARY_DIR} -odir:${NATIVE_OUTPUT_DIR} -km -func:${TRACE}
-func:${DPRINT} -gen:{km-default.tpl}*.tmh ${NATIVE_SOURCE})

# [mlr] export the value of TMH into OUTPUT_VAR.
set(${OUTPUT_VAR} ${TMH} PARENT_SCOPE)
endfunction()


function(wpp OUTPUT_VAR OUTPUT_DIR)
function(wpp OUTPUT_DIR)

add_macro_property()
# [mlr] invoke tracewpp() for each source file, adding the resulting file to a list
# named TMH.
message(STATUS "OUTPUT_DIR ======: ${OUTPUT_DIR}")

foreach ( I ${CSOURCES} )
tracewpp(J ${OUTPUT_DIR} ${I})
list(APPEND TMH ${J})
tracewpp(${OUTPUT_DIR} ${I})
endforeach()

source_group("WPP Files (generated)" REGULAR_EXPRESSION ".+\\.tmh$")

# [mlr] export the value of TMH into OUTPUT_VAR.
set(${OUTPUT_VAR} ${TMH} PARENT_SCOPE)
endfunction()

set_file_properties()
wpp(OUTPUT_VAR "${CMAKE_SOURCE_DIR}/out/build")
wpp("${CMAKE_SOURCE_DIR}/out/build")
33 changes: 13 additions & 20 deletions module/os/windows/zfs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,18 @@ list(REMOVE_ITEM CSOURCES "${CMAKE_CURRENT_SOURCE_DIR}/zfs_vnops_os.c"
"${CMAKE_CURRENT_SOURCE_DIR}/zfs_windows_zvol.c"
"${CMAKE_CURRENT_SOURCE_DIR}/zvol_os.c")

function(set_file_properties)
function(add_macro_property)
foreach (I ${CSOURCES})
get_filename_component(OUTPUT_FILE_WE ${I} NAME_WE)
set_source_files_properties(${I} PROPERTIES COMPILE_FLAGS -DWPPFILE=${CMAKE_SOURCE_DIR}/out/build/${OUTPUT_FILE_WE}.tmh)
message(STATUS "FILES_IN ======: ${CMAKE_SOURCE_DIR}/out/build/${OUTPUT_FILE_WE}.tmh")
endforeach()
endfunction()

function(tracewpp OUTPUT_VAR OUTPUT_DIR SOURCE)
function(tracewpp OUTPUT_DIR SOURCE)
# [mlr] list of .tmh files to be generated -> TMH
set(WPP_DIR "C:\\Program Files (x86)\\Windows Kits\\10\\bin\\10.0.19041.0")
set(WPP_DIR "${WDK_ROOT}/bin/${WDK_VERSION}")

get_filename_component(FILEN ${SOURCE} NAME)
set(TMH_FILEN ${FILEN}.tmh)
set(TMH ${OUTPUT_DIR}/${TMH_FILEN})
Expand All @@ -72,37 +73,29 @@ function(tracewpp OUTPUT_VAR OUTPUT_DIR SOURCE)

set(TRACE "TraceEvent{FLAGS=MYDRIVER_ALL_INFO}(LEVEL, MSG, ...)")
set(DPRINT "dprintf{FLAGS=MYDRIVER_ALL_INFO, LEVEL=TRACE_INFO}(MSG, ...)")
set(CFGDIR "C:/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/wppconfig/rev1")
set(SCAN "C:/Program Files (x86)/Windows Kits/10/Include/wdf/kmdf/1.9/WdfTraceEnums.h")
set(CFGDIR1 "C:/Users/rsoni/Desktop/Desktop/openzfs/module/os/windows")
set(IC "C:/Users/rsoni/Desktop/Desktop/openzfs/include/os/windows/")
set(CFGDIR "${WPP_DIR}/wppconfig/rev1")
set(SCAN "${WDK_ROOT}/Include/wdf/kmdf/1.9/WdfTraceEnums.h")
set(WPP_MACRO "WPP_INLINE __inline")

execute_process(COMMAND "${NATIVE_WPP_DIR}\\x64\\tracewpp.exe"
execute_process(COMMAND "${NATIVE_WPP_DIR}/${WDK_PLATFORM}/tracewpp.exe"
-scan:${SCAN} /D${WPP_MACRO}
-cfgdir:${CFGDIR} -I${IC} -odir:${NATIVE_OUTPUT_DIR} -km -func:${TRACE}
-cfgdir:${CFGDIR} -I${CMAKE_CURRENT_BINARY_DIR} -odir:${NATIVE_OUTPUT_DIR} -km -func:${TRACE}
-func:${DPRINT} -gen:{km-default.tpl}*.tmh ${NATIVE_SOURCE})

# [mlr] export the value of TMH into OUTPUT_VAR.
set(${OUTPUT_VAR} ${TMH} PARENT_SCOPE)
endfunction()


function(wpp OUTPUT_VAR OUTPUT_DIR)
function(wpp OUTPUT_DIR)

add_macro_property()
# [mlr] invoke tracewpp() for each source file, adding the resulting file to a list
# named TMH.
message(STATUS "OUTPUT_DIR ======: ${OUTPUT_DIR}")

foreach ( I ${CSOURCES} )
tracewpp(J ${OUTPUT_DIR} ${I})
list(APPEND TMH ${J})
tracewpp(${OUTPUT_DIR} ${I})
endforeach()

source_group("WPP Files (generated)" REGULAR_EXPRESSION ".+\\.tmh$")

# [mlr] export the value of TMH into OUTPUT_VAR.
set(${OUTPUT_VAR} ${TMH} PARENT_SCOPE)
endfunction()

set_file_properties()
wpp(OUTPUT_VAR "${CMAKE_SOURCE_DIR}/out/build")
wpp("${CMAKE_SOURCE_DIR}/out/build")
2 changes: 2 additions & 0 deletions module/os/windows/zfs/zfs_debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,8 @@ __set_error(const char *file, const char *func, int line, int err)
*/
if (zfs_flags & ZFS_DEBUG_SET_ERROR)
__dprintf(B_FALSE, file, func, line, "error %lu", err);

TraceEvent(5, "%s:%s Line:%d Error:%d", file, func, line, err);
}

/*
Expand Down
7 changes: 4 additions & 3 deletions module/os/windows/zfs/zfs_ioctl_os.c
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,8 @@ DriverNotificationRoutine(_In_ struct _DEVICE_OBJECT *DeviceObject,
status = ObQueryNameString(DeviceObject, name_info,
sizeof (nibuf), &ret_len);
if (NT_SUCCESS(status)) {
dprintf("Filesystem %p: '%wZ'\n", DeviceObject, name_info);
dprintf("Filesystem %p: '%wZ'\n", DeviceObject,
&name_info->Name);
} else {
dprintf("Filesystem %p: '%wZ'\n", DeviceObject,
&DeviceObject->DriverObject->DriverName);
Expand All @@ -302,8 +303,8 @@ zfs_ioc_unregister_fs(void)
{
dprintf("%s\n", __func__);
if (zfs_module_busy != 0) {
dprintf("%s: datasets still busy: %llu pool(s)\n",
__func__, zfs_module_busy);
dprintf("%s: datasets still busy: %llu pool(s)\n", __func__,
zfs_module_busy);
return (zfs_module_busy);
}
if (fsDiskDeviceObject != NULL) {
Expand Down
11 changes: 7 additions & 4 deletions module/os/windows/zfs/zfs_windows_zvol_scsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -681,8 +681,10 @@ ScsiOpReadCapacity16(
blockSize = MP_BLOCK_SIZE;
maxBlocks = (zv->zv_volsize / blockSize) - 1;

dprintf("Block Size: 0x%x Total Blocks: 0x%llx\n", blockSize,
maxBlocks);
dprintf("%s:%d Block Size: 0x%x Total Blocks: 0x%llx targetid:%d "
"lun:%d, volname:%s, zv_volsize=%llu\n", __func__, __LINE__,
blockSize, maxBlocks, pSrb->TargetId, pSrb->Lun, zv->zv_name,
zv->zv_volsize);
REVERSE_BYTES(&readCapacity->BytesPerBlock, &blockSize);
REVERSE_BYTES_QUAD(&readCapacity->LogicalBlockAddress.QuadPart,
&maxBlocks);
Expand Down Expand Up @@ -951,8 +953,9 @@ wzvol_WkRtn(__in PVOID pWkParms)
": 0x%p\n", __func__, __LINE__, pSrb, pSrb->DataBuffer);

if (sectorOffset >= zv->zv_volsize) {
dprintf("%s: invalid starting sector: %d\n", __func__,
startingSector);
dprintf("%s:%d invalid starting sector: %d for zvol:%s, "
"volsize=%llu\n", __func__, __LINE__, startingSector,
zv->zv_name, zv->zv_volsize);
status = SRB_STATUS_INVALID_REQUEST;
goto Done;
}
Expand Down
62 changes: 62 additions & 0 deletions module/zfs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -126,3 +126,65 @@ wdk_add_library(zfskern
)

target_link_libraries(zfskern PRIVATE splkern icpkern zstdkern)

file(GLOB CSOURCES CONFIGURE_DEPENDS "*.c")

list(REMOVE_ITEM CSOURCES "${CMAKE_CURRENT_SOURCE_DIR}/txg.c")

function(add_macro_property)
foreach (I ${CSOURCES})
get_filename_component(OUTPUT_FILE_WE ${I} NAME_WE)
set_source_files_properties(${I} PROPERTIES COMPILE_FLAGS -DWPPFILE=${CMAKE_SOURCE_DIR}/out/build/${OUTPUT_FILE_WE}.tmh)
message(STATUS "FILES_IN ======: ${CMAKE_SOURCE_DIR}/out/build/${OUTPUT_FILE_WE}.tmh")
endforeach()
endfunction()

function(tracewpp OUTPUT_DIR SOURCE)
# [mlr] list of .tmh files to be generated -> TMH
set(WPP_DIR "${WDK_ROOT}/bin/${WDK_VERSION}")

get_filename_component(FILEN ${SOURCE} NAME)
set(TMH_FILEN ${FILEN}.tmh)
set(TMH ${OUTPUT_DIR}/${TMH_FILEN})
set(EXTENSIONS ".c")

# [mlr] cmake only converts the command name to the native path format. the
# path names to be used in arguments must be converted manually.

file(TO_NATIVE_PATH ${SOURCE} NATIVE_SOURCE)
file(TO_NATIVE_PATH ${WPP_DIR} NATIVE_WPP_DIR)
file(TO_NATIVE_PATH ${OUTPUT_DIR} NATIVE_OUTPUT_DIR)

# [mlr] note that if -preserveext: occurs after the source file specification, it has
# no effect.

set(TRACE "TraceEvent{FLAGS=MYDRIVER_ALL_INFO}(LEVEL, MSG, ...)")
set(DPRINT "dprintf{FLAGS=MYDRIVER_ALL_INFO, LEVEL=TRACE_INFO}(MSG, ...)")
set(CFGDIR "${WPP_DIR}/wppconfig/rev1")
set(SCAN "${WDK_ROOT}/Include/wdf/kmdf/1.9/WdfTraceEnums.h")
set(WPP_MACRO "WPP_INLINE __inline")

execute_process(COMMAND "${NATIVE_WPP_DIR}/${WDK_PLATFORM}/tracewpp.exe"
-scan:${SCAN} /D${WPP_MACRO}
-cfgdir:${CFGDIR} -I${CMAKE_CURRENT_BINARY_DIR} -odir:${NATIVE_OUTPUT_DIR} -km -func:${TRACE}
-func:${DPRINT} -gen:{km-default.tpl}*.tmh ${NATIVE_SOURCE})

endfunction()


function(wpp OUTPUT_DIR)

add_macro_property()
# [mlr] invoke tracewpp() for each source file, adding the resulting file to a list
# named TMH.
message(STATUS "OUTPUT_DIR ======: ${OUTPUT_DIR}")

foreach ( I ${CSOURCES} )
tracewpp(${OUTPUT_DIR} ${I})
endforeach()

endfunction()

if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
wpp("${CMAKE_SOURCE_DIR}/out/build")
endif()

0 comments on commit e122a83

Please sign in to comment.