[ros-diffs] [tfaber] 52330: [KMTESTS] - reference streamout.c and provide a wctomb stub to have an any-IRQL vsnprintf implementation for the test framework

tfaber at svn.reactos.org tfaber at svn.reactos.org
Sat Jun 18 11:03:28 UTC 2011


Author: tfaber
Date: Sat Jun 18 11:03:28 2011
New Revision: 52330

URL: http://svn.reactos.org/svn/reactos?rev=52330&view=rev
Log:
[KMTESTS]
- reference streamout.c and provide a wctomb stub to have an any-IRQL vsnprintf implementation for the test framework

Added:
    branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/printf_stubs.c   (with props)
Modified:
    branches/GSoC_2011/KMTestSuite/kmtests/CMakeLists.txt
    branches/GSoC_2011/KMTestSuite/kmtests/include/kmt_test.h

Modified: branches/GSoC_2011/KMTestSuite/kmtests/CMakeLists.txt
URL: http://svn.reactos.org/svn/reactos/branches/GSoC_2011/KMTestSuite/kmtests/CMakeLists.txt?rev=52330&r1=52329&r2=52330&view=diff
==============================================================================
--- branches/GSoC_2011/KMTestSuite/kmtests/CMakeLists.txt [iso-8859-1] (original)
+++ branches/GSoC_2011/KMTestSuite/kmtests/CMakeLists.txt [iso-8859-1] Sat Jun 18 11:03:28 2011
@@ -21,11 +21,17 @@
 add_library(kmtest_drv SHARED ${KMTEST_DRV_SOURCE})
 
 set_module_type(kmtest_drv kernelmodedriver)
-target_link_libraries(kmtest_drv ${PSEH_LIB})
+target_link_libraries(kmtest_drv kmtest_printf ${PSEH_LIB})
 add_importlibs(kmtest_drv ntoskrnl hal)
 set_property(TARGET kmtest_drv PROPERTY COMPILE_DEFINITIONS KMT_KERNEL_MODE)
 
 add_cd_file(TARGET kmtest_drv DESTINATION reactos/system32/drivers FOR all)
+
+add_library(kmtest_printf
+    kmtest_drv/printf_stubs.c
+    ${REACTOS_SOURCE_DIR}/lib/sdk/crt/printf/streamout.c)
+set_property(TARGET kmtest_printf PROPERTY COMPILE_DEFINITIONS _LIBCNT_ _USER32_WSPRINTF wctomb=KmtWcToMb)
+set_property(TARGET kmtest_printf PROPERTY INCLUDE_DIRECTORIES ${REACTOS_SOURCE_DIR}/lib/sdk/crt/include)
 
 #
 # kmtest.exe loader application

Modified: branches/GSoC_2011/KMTestSuite/kmtests/include/kmt_test.h
URL: http://svn.reactos.org/svn/reactos/branches/GSoC_2011/KMTestSuite/kmtests/include/kmt_test.h?rev=52330&r1=52329&r2=52330&view=diff
==============================================================================
--- branches/GSoC_2011/KMTestSuite/kmtests/include/kmt_test.h [iso-8859-1] (original)
+++ branches/GSoC_2011/KMTestSuite/kmtests/include/kmt_test.h [iso-8859-1] Sat Jun 18 11:03:28 2011
@@ -8,7 +8,9 @@
 #ifndef _KMTEST_TEST_H_
 #define _KMTEST_TEST_H_
 
-typedef void KMT_TESTFUNC(void);
+#include <stdarg.h>
+
+typedef VOID KMT_TESTFUNC(VOID);
 
 typedef struct
 {
@@ -74,6 +76,12 @@
     KmtMemCpy(&Buffer->LogBuffer[OldLength], String, Length);
 }
 
+#ifdef KMT_KERNEL_MODE
+INT __cdecl KmtVSNPrintF(PSTR Buffer, SIZE_T BufferMaxLength, PCSTR Format, va_list Arguments);
+#elif defined KMT_USER_MODE
+#define KmtVSNPrintF vsnprintf
+#endif /* defined KMT_USER_MODE */
+
 #endif /* defined KMT_DEFINE_TEST_FUNCTIONS */
 
 #endif /* !defined _KMTEST_TEST_H_ */

Added: branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/printf_stubs.c
URL: http://svn.reactos.org/svn/reactos/branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/printf_stubs.c?rev=52330&view=auto
==============================================================================
--- branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/printf_stubs.c (added)
+++ branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/printf_stubs.c [iso-8859-1] Sat Jun 18 11:03:28 2011
@@ -1,0 +1,40 @@
+/*
+ * PROJECT:         ReactOS kernel-mode tests
+ * LICENSE:         GPLv2+ - See COPYING in the top level directory
+ * PURPOSE:         Kernel-Mode Test Suite stub functions for any-IRQL vsnprintf
+ * PROGRAMMER:      Thomas Faber <thfabba at gmx.de>
+ */
+
+#undef wctomb
+#include <stdarg.h>
+#include <stdio.h>
+#include <wchar.h>
+
+int __cdecl KmtWcToMb(char *mbchar, wchar_t wchar)
+{
+    *mbchar = wchar;
+    return 1;
+}
+
+int __cdecl streamout(FILE *stream, const char *format, va_list argptr);
+
+int __cdecl KmtVSNPrintF(char *buffer, size_t count, const char *format, va_list argptr)
+{
+    int result;
+    FILE stream;
+
+    stream._base = (char *)buffer;
+    stream._ptr = stream._base;
+    stream._charbuf = 0;
+    stream._cnt = count;
+    stream._bufsiz = 0;
+    stream._flag = _IOSTRG | _IOWRT;
+    stream._tmpfname = 0;
+
+    result = streamout(&stream, format, argptr);
+
+    /* Only zero terminate if there is enough space left */
+    if (stream._cnt) *(char *)stream._ptr = '\0';
+
+    return result;
+}

Propchange: branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/printf_stubs.c
------------------------------------------------------------------------------
    svn:eol-style = native




More information about the Ros-diffs mailing list