[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