[CSR][NTDLL] Move the CSR subsystem into its own "csr" sub-directory. (#4802)
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sun, 23 Oct 2022 16:02:38 +0000 (18:02 +0200)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sat, 29 Oct 2022 15:17:29 +0000 (17:17 +0200)
Move CSRSS, CSRSRV there, as well as CSR client calls from NTDLL into a "CSRLIB" library.

27 files changed:
dll/ntdll/CMakeLists.txt
dll/ntdll/include/ntdll.h
sdk/include/reactos/subsys/csr/csrsrv.h
subsystems/CMakeLists.txt
subsystems/csr/CMakeLists.txt [moved from subsystems/win32/CMakeLists.txt with 66% similarity]
subsystems/csr/csrlib/CMakeLists.txt [new file with mode: 0644]
subsystems/csr/csrlib/api.c [moved from dll/ntdll/csr/api.c with 83% similarity]
subsystems/csr/csrlib/capture.c [moved from dll/ntdll/csr/capture.c with 95% similarity]
subsystems/csr/csrlib/connect.c [moved from dll/ntdll/csr/connect.c with 96% similarity]
subsystems/csr/csrlib/csrdll.spec [new file with mode: 0644]
subsystems/csr/csrlib/csrlib.h [new file with mode: 0644]
subsystems/csr/csrsrv/CMakeLists.txt [moved from subsystems/win32/csrsrv/CMakeLists.txt with 81% similarity]
subsystems/csr/csrsrv/api.c [moved from subsystems/win32/csrsrv/api.c with 100% similarity]
subsystems/csr/csrsrv/api.h [moved from subsystems/win32/csrsrv/api.h with 100% similarity]
subsystems/csr/csrsrv/csrsrv.rc [moved from subsystems/win32/csrsrv/csrsrv.rc with 100% similarity]
subsystems/csr/csrsrv/csrsrv.spec [moved from subsystems/win32/csrsrv/csrsrv.spec with 100% similarity]
subsystems/csr/csrsrv/init.c [moved from subsystems/win32/csrsrv/init.c with 100% similarity]
subsystems/csr/csrsrv/procsup.c [moved from subsystems/win32/csrsrv/procsup.c with 100% similarity]
subsystems/csr/csrsrv/server.c [moved from subsystems/win32/csrsrv/server.c with 100% similarity]
subsystems/csr/csrsrv/session.c [moved from subsystems/win32/csrsrv/session.c with 100% similarity]
subsystems/csr/csrsrv/srv.h [moved from subsystems/win32/csrsrv/srv.h with 100% similarity]
subsystems/csr/csrsrv/status.h [moved from subsystems/win32/csrsrv/status.h with 100% similarity]
subsystems/csr/csrsrv/thredsup.c [moved from subsystems/win32/csrsrv/thredsup.c with 100% similarity]
subsystems/csr/csrsrv/wait.c [moved from subsystems/win32/csrsrv/wait.c with 100% similarity]
subsystems/csr/csrss/CMakeLists.txt [moved from subsystems/win32/csrss/CMakeLists.txt with 100% similarity]
subsystems/csr/csrss/csrss.c [moved from subsystems/win32/csrss/csrss.c with 100% similarity]
subsystems/csr/csrss/csrss.rc [moved from subsystems/win32/csrss/csrss.rc with 100% similarity]

index fbcd527..6d383bd 100644 (file)
@@ -18,9 +18,6 @@ include_directories(
     ${REACTOS_SOURCE_DIR}/sdk/include/reactos/subsys)
 
 list(APPEND SOURCE
-    csr/api.c
-    csr/capture.c
-    csr/connect.c
     dbg/dbgui.c
     ldr/ldrapi.c
     ldr/ldrinit.c
@@ -60,7 +57,7 @@ set_module_type(ntdll win32dll ENTRYPOINT 0)
 set_subsystem(ntdll console)
 ################# END  HACK #################
 
-target_link_libraries(ntdll rtl rtl_vista ntdllsys libcntpr uuid ${PSEH_LIB})
+target_link_libraries(ntdll csrlib rtl rtl_vista ntdllsys libcntpr uuid ${PSEH_LIB})
 
 if (STACK_PROTECTOR)
     target_sources(ntdll PRIVATE $<TARGET_OBJECTS:gcc_ssp_nt>)
index 61b656f..007d5f4 100644 (file)
@@ -43,9 +43,6 @@
 /* Internal NTDLL */
 #include "ntdllp.h"
 
-/* CSRSS Headers */
-#include <csr/csr.h>
-
 /* PSEH */
 #include <pseh/pseh2.h>
 
index 39fc5ad..4f63c9b 100644 (file)
@@ -23,7 +23,7 @@
 
 /* TYPES **********************************************************************/
 
-// Used in ntdll/csr/connect.c
+// Used in csr/connect.c
 #define CSR_CSRSS_SECTION_SIZE  65536
 
 typedef struct _CSR_NT_SESSION
index d77ca2f..ee58a57 100644 (file)
@@ -1,4 +1,4 @@
 
+add_subdirectory(csr)
 add_subdirectory(mvdm)
 add_subdirectory(win)
-add_subdirectory(win32)
similarity index 66%
rename from subsystems/win32/CMakeLists.txt
rename to subsystems/csr/CMakeLists.txt
index 59bf8c3..487c129 100644 (file)
@@ -1,3 +1,4 @@
 
+add_subdirectory(csrlib)
 add_subdirectory(csrsrv)
 add_subdirectory(csrss)
diff --git a/subsystems/csr/csrlib/CMakeLists.txt b/subsystems/csr/csrlib/CMakeLists.txt
new file mode 100644 (file)
index 0000000..7e8be93
--- /dev/null
@@ -0,0 +1,13 @@
+
+add_definitions(-D_NTSYSTEM_)
+
+include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/subsys/csr)
+
+list(APPEND SOURCE
+    api.c
+    capture.c
+    connect.c)
+
+add_library(csrlib ${SOURCE})
+add_pch(csrlib csrlib.h SOURCE)
+add_dependencies(csrlib psdk)
similarity index 83%
rename from dll/ntdll/csr/api.c
rename to subsystems/csr/csrlib/api.c
index b0ddf04..b1611d1 100644 (file)
@@ -1,22 +1,21 @@
 /*
- * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS kernel
- * FILE:            dll/ntdll/csr/api.c
- * PURPOSE:         CSR APIs exported through NTDLL
- * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * PROJECT:     ReactOS Client/Server Runtime SubSystem
+ * LICENSE:     GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
+ * PURPOSE:     CSR Client Library - API LPC Implementation
+ * COPYRIGHT:   Copyright 2005-2012 Alex Ionescu <alex@relsoft.net>
+ *              Copyright 2012-2022 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
  */
 
 /* INCLUDES *******************************************************************/
 
-#include <ntdll.h>
+#include "csrlib.h"
+
+#define NTOS_MODE_USER
+#include <ndk/psfuncs.h>
 
 #define NDEBUG
 #include <debug.h>
 
-/* GLOBALS ********************************************************************/
-
-extern HANDLE CsrApiPort;
-
 /* FUNCTIONS ******************************************************************/
 
 /*
similarity index 95%
rename from dll/ntdll/csr/capture.c
rename to subsystems/csr/csrlib/capture.c
index 9252a52..c5b6b10 100644 (file)
@@ -1,23 +1,18 @@
 /*
- * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS kernel
- * FILE:            dll/ntdll/csr/capture.c
- * PURPOSE:         Routines for probing and capturing CSR API Messages
- * PROGRAMMERS:     Alex Ionescu (alex@relsoft.net)
- *                  Hermes Belusca-Maito (hermes.belusca@sfr.fr)
+ * PROJECT:     ReactOS Client/Server Runtime SubSystem
+ * LICENSE:     GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
+ * PURPOSE:     CSR Client Library - CSR API Messages probing and capturing
+ * COPYRIGHT:   Copyright 2005 Alex Ionescu <alex@relsoft.net>
+ *              Copyright 2012-2022 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
  */
 
 /* INCLUDES *******************************************************************/
 
-#include <ntdll.h>
+#include "csrlib.h"
 
 #define NDEBUG
 #include <debug.h>
 
-/* GLOBALS ********************************************************************/
-
-extern HANDLE CsrPortHeap;
-
 /* FUNCTIONS ******************************************************************/
 
 /*
similarity index 96%
rename from dll/ntdll/csr/connect.c
rename to subsystems/csr/csrlib/connect.c
index 9803327..51d7c00 100644 (file)
@@ -1,17 +1,23 @@
 /*
- * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS kernel
- * FILE:            dll/ntdll/csr/connect.c
- * PURPOSE:         Routines for connecting and calling CSR
- * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * PROJECT:     ReactOS Client/Server Runtime SubSystem
+ * LICENSE:     GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
+ * PURPOSE:     CSR Client Library - CSR connection and calling
+ * COPYRIGHT:   Copyright 2005-2013 Alex Ionescu <alex@relsoft.net>
+ *              Copyright 2012-2022 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
  */
 
 /* INCLUDES *******************************************************************/
 
-#include <ntdll.h>
+#include "csrlib.h"
 
+#define NTOS_MODE_USER
+#include <ndk/ldrfuncs.h>
 #include <ndk/lpcfuncs.h>
-#include <csr/csrsrv.h>
+#include <ndk/mmfuncs.h>
+#include <ndk/obfuncs.h>
+#include <ndk/umfuncs.h>
+
+#include <csrsrv.h> // For CSR_CSRSS_SECTION_SIZE
 
 #define NDEBUG
 #include <debug.h>
@@ -30,8 +36,6 @@ typedef NTSTATUS
 
 PCSR_SERVER_API_ROUTINE CsrServerApiRoutine;
 
-#define UNICODE_PATH_SEP L"\\"
-
 /* FUNCTIONS ******************************************************************/
 
 NTSTATUS
@@ -80,8 +84,8 @@ CsrpConnectToServer(IN PWSTR ObjectDirectory)
     }
 
     /* Create the name */
-    RtlAppendUnicodeToString(&PortName, ObjectDirectory );
-    RtlAppendUnicodeToString(&PortName, UNICODE_PATH_SEP);
+    RtlAppendUnicodeToString(&PortName, ObjectDirectory);
+    RtlAppendUnicodeToString(&PortName, L"\\");
     RtlAppendUnicodeToString(&PortName, CSR_PORT_NAME);
 
     /* Create a section for the port memory */
diff --git a/subsystems/csr/csrlib/csrdll.spec b/subsystems/csr/csrlib/csrdll.spec
new file mode 100644 (file)
index 0000000..5d170a9
--- /dev/null
@@ -0,0 +1,17 @@
+@ stdcall CsrAllocateCaptureBuffer(long long)
+@ stdcall CsrAllocateMessagePointer(ptr long ptr)
+@ stdcall CsrCaptureMessageBuffer(ptr ptr long ptr)
+@ stdcall CsrCaptureMessageMultiUnicodeStringsInPlace(ptr long ptr)
+@ stdcall CsrCaptureMessageString(ptr str long long ptr)
+@ stdcall CsrCaptureTimeout(long ptr)
+@ stdcall CsrClientCallServer(ptr ptr long long)
+@ stdcall CsrClientConnectToServer(str long ptr ptr ptr)
+@ stdcall CsrFreeCaptureBuffer(ptr)
+@ stdcall CsrGetProcessId()
+@ stdcall CsrIdentifyAlertableThread()
+@ stdcall -version=0x502 CsrNewThread()
+@ stdcall -version=0x502 CsrProbeForRead(ptr long long)
+@ stdcall -version=0x502 CsrProbeForWrite(ptr long long)
+@ stdcall CsrSetPriorityClass(ptr ptr)
+@ stdcall -stub -version=0x600+ CsrVerifyRegion(ptr long)
+@ stdcall -stub -version=0x600+ RtlRegisterThreadWithCsrss()
diff --git a/subsystems/csr/csrlib/csrlib.h b/subsystems/csr/csrlib/csrlib.h
new file mode 100644 (file)
index 0000000..ed65a07
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * PROJECT:     ReactOS Client/Server Runtime SubSystem
+ * LICENSE:     GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
+ * PURPOSE:     CSR Client Library - Main Header
+ * COPYRIGHT:   Copyright 2022 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
+ */
+
+#ifndef _CSRLIB_H_
+#define _CSRLIB_H_
+
+/* INCLUDES ******************************************************************/
+
+/* PSDK/NDK Headers */
+#define WIN32_NO_STATUS
+//#include <windef.h>
+#define NTOS_MODE_USER
+#include <ndk/rtlfuncs.h>
+
+/* CSRSS Headers */
+#include <csr.h>
+
+/* GLOBALS ********************************************************************/
+
+extern HANDLE CsrApiPort;
+extern HANDLE CsrPortHeap;
+
+#endif /* _CSRLIB_H_ */
+
+/* EOF */
similarity index 81%
rename from subsystems/win32/csrsrv/CMakeLists.txt
rename to subsystems/csr/csrsrv/CMakeLists.txt
index 3ee512e..72fe79b 100644 (file)
@@ -1,5 +1,4 @@
 
-include_directories(${REACTOS_SOURCE_DIR}/subsystems/win32/csrss/include)
 include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/subsys)
 
 spec2def(csrsrv.dll csrsrv.spec ADD_IMPORTLIB)
@@ -20,7 +19,7 @@ add_library(csrsrv MODULE
     ${CMAKE_CURRENT_BINARY_DIR}/csrsrv.def)
 
 set_module_type(csrsrv nativedll)
-target_link_libraries(csrsrv ${PSEH_LIB} smlib)
+target_link_libraries(csrsrv smlib ${PSEH_LIB})
 add_importlibs(csrsrv ntdll)
 add_pch(csrsrv srv.h SOURCE)
 add_dependencies(csrsrv psdk bugcodes)