From 143f5e1f74b16fdc120e312305290a318ea26271 Mon Sep 17 00:00:00 2001 From: Emanuele Aliberti Date: Mon, 2 May 2005 14:15:56 +0000 Subject: [PATCH] Move VMS subtree in the proper place. svn path=/trunk/; revision=14948 --- vms/include/vms/lpcproto.h | 10 ++ vms/lib/vmsdll/dllmain.c | 39 +++++ vms/lib/vmsdll/lib/stubs.c | 1 + vms/lib/vmsdll/makefile | 44 ++++++ vms/lib/vmsdll/readme.txt | 7 + vms/lib/vmsdll/rms/stubs.c | 0 vms/lib/vmsdll/sys/stubs.c | 30 ++++ vms/lib/vmsdll/vmsdll.def | 32 +++++ vms/lib/vmsdll/vmsdll.rc | 4 + vms/makefile | 120 ++++++++++++++++ vms/server/init.c | 275 ++++++++++++++++++++++++++++++++++++ vms/server/makefile | 24 ++++ vms/server/server.c | 68 +++++++++ vms/server/vmsss.c | 46 ++++++ vms/server/vmsss.h | 15 ++ vms/server/vmsss.rc | 4 + vms/tools/mksystab/makefile | 5 + 17 files changed, 724 insertions(+) create mode 100644 vms/include/vms/lpcproto.h create mode 100644 vms/lib/vmsdll/dllmain.c create mode 100644 vms/lib/vmsdll/lib/stubs.c create mode 100644 vms/lib/vmsdll/makefile create mode 100644 vms/lib/vmsdll/readme.txt create mode 100644 vms/lib/vmsdll/rms/stubs.c create mode 100644 vms/lib/vmsdll/sys/stubs.c create mode 100644 vms/lib/vmsdll/vmsdll.def create mode 100644 vms/lib/vmsdll/vmsdll.rc create mode 100644 vms/makefile create mode 100644 vms/server/init.c create mode 100644 vms/server/makefile create mode 100644 vms/server/server.c create mode 100644 vms/server/vmsss.c create mode 100644 vms/server/vmsss.h create mode 100644 vms/server/vmsss.rc create mode 100644 vms/tools/mksystab/makefile diff --git a/vms/include/vms/lpcproto.h b/vms/include/vms/lpcproto.h new file mode 100644 index 00000000000..5b947cb2ac4 --- /dev/null +++ b/vms/include/vms/lpcproto.h @@ -0,0 +1,10 @@ +#ifndef __VMS_SYS_LPCPROTO_H +#define __VMS_SYS_LPCPROTO_H + +#define VMS_LPCPROTO_VERSION 1 + +#define VMS_OBNS_ROOT L"\\VMS" +#define VMS_API_PORT_NAME L"\\VMS\\ApiPort" +#define VMS_SBAPI_PORT_NAME L"\\VMS\\SbApiPort" + +#endif diff --git a/vms/lib/vmsdll/dllmain.c b/vms/lib/vmsdll/dllmain.c new file mode 100644 index 00000000000..3321decd89b --- /dev/null +++ b/vms/lib/vmsdll/dllmain.c @@ -0,0 +1,39 @@ +/* $Id: dllmain.c,v 1.5 2002/11/24 18:42:15 robd Exp $ + * + * dllmain.c + * + * A stub DllMain function which will be called by DLLs which do not + * have a user supplied DllMain. + * + * Contributors: + * Created by Colin Peters + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRENTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAMED. This includes but is not limited to warrenties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * $Revision: 1.5 $ + * $Author: robd $ + * $Date: 2002/11/24 18:42:15 $ + * + */ + +#include + + +/* LIBRARY ENTRY POINT ********************************************************/ + +BOOL +WINAPI +DllMain(HANDLE hDll, DWORD dwReason, LPVOID lpReserved) +{ + return TRUE; +} + +/* EOF */ diff --git a/vms/lib/vmsdll/lib/stubs.c b/vms/lib/vmsdll/lib/stubs.c new file mode 100644 index 00000000000..4f94b881f4c --- /dev/null +++ b/vms/lib/vmsdll/lib/stubs.c @@ -0,0 +1 @@ +void lib$find_file () { } diff --git a/vms/lib/vmsdll/makefile b/vms/lib/vmsdll/makefile new file mode 100644 index 00000000000..37ca5b6e6b8 --- /dev/null +++ b/vms/lib/vmsdll/makefile @@ -0,0 +1,44 @@ +# $Id$ +# +PATH_TO_TOP = ../../../reactos + +TARGET_TYPE = dynlink + +TARGET_NAME = vmsdll + +TARGET_CFLAGS = -Wall -Werror -fno-builtin \ + -D__USE_W32API \ + -D_WIN32_IE=0x0500 \ + -D_WIN32_WINNT=0x501 \ + -DWINVER=0x600 \ + +TARGET_LFLAGS = -nostartfiles -nostdlib + +TARGET_SDKLIBS = ntdll.a + +LIB_OBJECTS = \ + lib\stubs.o + +RMS_OBJECTS = \ + rms\stubs.o + +MISC_OBJECTS = \ + dllmain.o + +SYS_OBJECTS = \ + sys\stubs.o + +TARGET_OBJECTS = \ + $(LIB_OBJECTS) \ + $(RMS_OBJECTS) \ + $(SYS_OBJECTS) \ + $(MISC_OBJECTS) + +DEP_OBJECTS = $(TARGET_OBJECTS) + +include $(PATH_TO_TOP)/rules.mak + +include $(TOOLS_PATH)/helper.mk + +include $(TOOLS_PATH)/depend.mk + diff --git a/vms/lib/vmsdll/readme.txt b/vms/lib/vmsdll/readme.txt new file mode 100644 index 00000000000..eb2466f5dc7 --- /dev/null +++ b/vms/lib/vmsdll/readme.txt @@ -0,0 +1,7 @@ +VMSDLL - ReactOS VMS+ Environment Subsystem + +lib = Library APIs + +rms = Record Management Services APIs + +sys = System APIs \ No newline at end of file diff --git a/vms/lib/vmsdll/rms/stubs.c b/vms/lib/vmsdll/rms/stubs.c new file mode 100644 index 00000000000..e69de29bb2d diff --git a/vms/lib/vmsdll/sys/stubs.c b/vms/lib/vmsdll/sys/stubs.c new file mode 100644 index 00000000000..70a58212b86 --- /dev/null +++ b/vms/lib/vmsdll/sys/stubs.c @@ -0,0 +1,30 @@ +/* $Id$ */ +void sys$ascefc (void) {} +void sys$asctim (void) {} +void sys$assign (void) {} +void sys$bintim (void) {} +void sys$clref (void) {} +void sys$crelnm (void) {} +void sys$crelnt (void) {} +void sys$dclast (void) {} +void sys$enq (void) {} +void sys$forcex (void) {} +void sys$gettim (void) {} +void sys$hiber (void) {} +void sys$numtim (void) {} +void sys$qio (void) {} +void sys$qiow (void) {} +void sys$readef (void) {} +void sys$schdwk (void) {} +void sys$setef (void) {} +void sys$setast (void) {} +void sys$setime (void) {} +void sys$setimr (void) {} +void sys$setpri (void) {} +void sys$setprn (void) {} +void sys$synch (void) {} +void sys$trnlnm (void) {} +void sys$waitfr (void) {} +void sys$wake (void) {} + +/* EOF */ diff --git a/vms/lib/vmsdll/vmsdll.def b/vms/lib/vmsdll/vmsdll.def new file mode 100644 index 00000000000..d585c68fc80 --- /dev/null +++ b/vms/lib/vmsdll/vmsdll.def @@ -0,0 +1,32 @@ +LIBRARY vmsdll.dll +EXPORTS +; LIB +lib$find_file +; SYS +sys$ascefc +sys$asctim +sys$assign +sys$bintim +sys$clref +sys$crelnm +sys$crelnt +sys$dclast +sys$enq +sys$forcex +sys$gettim +sys$hiber +sys$numtim +sys$qio +sys$qiow +sys$readef +sys$schdwk +sys$setef +sys$setast +sys$setime +sys$setimr +sys$setpri +sys$setprn +sys$synch +sys$trnlnm +sys$waitfr +sys$wake diff --git a/vms/lib/vmsdll/vmsdll.rc b/vms/lib/vmsdll/vmsdll.rc new file mode 100644 index 00000000000..9d21ec98dac --- /dev/null +++ b/vms/lib/vmsdll/vmsdll.rc @@ -0,0 +1,4 @@ +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS/VMS API Client Library\0" +#define REACTOS_STR_INTERNAL_NAME "vmsdll\0" +#define REACTOS_STR_ORIGINAL_FILENAME "vmdsll.dll\0" +#include diff --git a/vms/makefile b/vms/makefile new file mode 100644 index 00000000000..88c1f9c3c99 --- /dev/null +++ b/vms/makefile @@ -0,0 +1,120 @@ +# $Id$ +# +# ReactOS VMS Personality +# + +PATH_TO_TOP = ../reactos + +include $(PATH_TO_TOP)/rules.mak + +VMS_PATH = . + +VMS_OTHER = server + +VMS_TOOLS = mksystab + +VMS_LIBS = vmsdll + +VMS_APPS = # vmsw32 + +VMS_MODULES = $(VMS_OTHER) $(VMS_TOOLS) $(VMS_LIBS) $(VMS_APPS) + +all: implib $(VMS_MODULES) + +implib: $(VMS_MODULES:%=%_implib) + +clean: $(VMS_MODULES:%=%_clean) + +install: $(VMS_MODULES:%=%_install) + +.PHONY: all implib clean + + +# +# Other VMS+ Modules +# +$(VMS_OTHER): %: + make -f Makefile -C $(VMS_PATH)/$* + +$(VMS_OTHER:%=%_implib): %_implib: + make -f Makefile -C $(VMS_PATH)/$* implib + +$(VMS_OTHER:%=%_clean): %_clean: + make -f Makefile -C $(VMS_PATH)/$* clean + +$(VMS_OTHER:%=%_dist): %_dist: + make -f Makefile -C $(VMS_PATH)/$* dist + +$(VMS_OTHER:%=%_install): %_install: + make -f Makefile -C $(VMS_PATH)/$* install + +.PHONY: $(VMS_OTHER) $(VMS_OTHER:%=%_implib) $(VMS_OTHER:%=%_clean) $(VMS_OTHER:%=%_install) $(VMS_OTHER:%=%_dist) + + +# +# VMS+ Tools +# +$(VMS_TOOLS): %: + make -f Makefile -C $(VMS_PATH)/tools/$* + +$(VMS_TOOLS:%=%_implib): %_implib: + make -f Makefile -C $(VMS_PATH)/tools/$* implib + +$(VMS_TOOLS:%=%_clean): %_clean: + make -f Makefile -C $(VMS_PATH)/tools/$* clean + +$(VMS_TOOLS:%=%_dist): %_dist: + make -f Makefile -C $(VMS_PATH)/tools/$* dist + +$(VMS_TOOLS:%=%_install): %_install: + make -f Makefile -C $(VMS_PATH)/tools/$* install + +.PHONY: $(VMS_LIBS) $(VMS_LIBS:%=%_implib) $(VMS_LIBS:%=%_clean) $(VMS_LIBS:%=%_install) $(VMS_LIBS:%=%_dist) + + +# +# VMS+ DLLs +# +$(VMS_LIBS): %: + make -f Makefile -C $(VMS_PATH)/lib/$* + +$(VMS_LIBS:%=%_implib): %_implib: + make -f Makefile -C $(VMS_PATH)/lib/$* implib + +$(VMS_LIBS:%=%_clean): %_clean: + make -f Makefile -C $(VMS_PATH)/lib/$* clean + +$(VMS_LIBS:%=%_dist): %_dist: + make -f Makefile -C $(VMS_PATH)/lib/$* dist + +$(VMS_LIBS:%=%_install): %_install: + make -f Makefile -C $(VMS_PATH)/lib/$* install + +.PHONY: $(VMS_LIBS) $(VMS_LIBS:%=%_implib) $(VMS_LIBS:%=%_clean) $(VMS_LIBS:%=%_install) $(VMS_LIBS:%=%_dist) + + +# +# VMS+ Programs +# +$(VMS_APPS): %: + make -f Makefile -C $(VMS_PATH)/apps/$* + +$(VMS_APPS:%=%_implib): %_implib: + make -f Makefile -C $(VMS_PATH)/apps/$* implib + +$(VMS_APPS:%=%_clean): %_clean: + make -f Makefile -C $(VMS_PATH)/apps/$* clean + +$(VMS_APPS:%=%_dist): %_dist: + make -f Makefile -C $(VMS_PATH)/apps/$* dist + +$(VMS_APPS:%=%_install): %_install: + make -f Makefile -C $(VMS_PATH)/apps/$* install + +.PHONY: $(VMS_APPS) $(VMS_APPS:%=%_implib) $(VMS_APPS:%=%_clean) $(VMS_APPS:%=%_install) $(VMS_APPS:%=%_dist) + + +etags: + find . -name "*.[ch]" -print | etags --language=c - + +# EOF diff --git a/vms/server/init.c b/vms/server/init.c new file mode 100644 index 00000000000..fb712ee723f --- /dev/null +++ b/vms/server/init.c @@ -0,0 +1,275 @@ +/* $Id: $ + * + * init.c - VMS Enviroment Subsystem Server - Initialization + * + * ReactOS Operating System + * + * -------------------------------------------------------------------- + * + * This software is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING.LIB. If not, write + * to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, + * MA 02139, USA. + * + * -------------------------------------------------------------------- + */ +#include "vmsss.h" + +//#define NDEBUG +#include + + +HANDLE VmsSbApiPort = (HANDLE) 0; // \VMS\SbApiPort +HANDLE SmCalledBack = (HANDLE) 0; // signalled when SM connects to \VMS\SbApiPort +HANDLE SmVmsSbApiPort = (HANDLE) 0; // server side (our one) port for SM conn request +HANDLE SmApiPort = (HANDLE) 0; // client side of \SmApiPort + +HANDLE VmsSessionPort = (HANDLE) 0; // pseudo terminals call here for a new session +HANDLE VmsApiPort = (HANDLE) 0; // VMS processes call here for system calls + +/********************************************************************** + * SB API Port Thread + *********************************************************************/ +static VOID STDCALL +VmsSbApiPortThread (PVOID x) +{ + HANDLE Port = (HANDLE) x; + NTSTATUS Status = STATUS_SUCCESS; + LPC_MAX_MESSAGE ConnectionRequest = {{0}}; + + DPRINT("VMS: %s: called\n", __FUNCTION__); + + Status = NtListenPort (Port, & ConnectionRequest.Header); + if(!NT_SUCCESS(Status)) + { + DPRINT("VMS: %s: NtListenPort failed (Status=0x%08lx)\n", + __FUNCTION__, Status); + }else{ + DPRINT("VMS: %s received a connection request\n", __FUNCTION__); + Status = NtAcceptConnectPort (& SmVmsSbApiPort, + 0, + & ConnectionRequest.Header, + TRUE, /* accept it */ + NULL, + NULL); + if(!NT_SUCCESS(Status)) + { + DPRINT("VMS: %s: NtAcceptConnectPort failed (Status=0x%08lx)\n", + __FUNCTION__, Status); + }else{ + DPRINT("VMS: %s accepted the connection request\n", __FUNCTION__); + Status = NtCompleteConnectPort (SmVmsSbApiPort); + if(!NT_SUCCESS(Status)) + { + DPRINT("VMS: %s: NtCompleteConnectPort failed (Status=0x%08lx)\n", + __FUNCTION__, Status); + }else{ + DPRINT("VMS: %s completed the connection request\n", __FUNCTION__); + Status = NtSetEvent (SmCalledBack, NULL); + DPRINT("VMS: %s signalled the main thread to initialize the subsystem\n", __FUNCTION__); + DPRINT("VMS: %s enters main loop\n", __FUNCTION__); + while (TRUE) + { + } + } + } + } + NtClose (Port); + NtTerminateThread (NtCurrentThread(), Status); +} +/********************************************************************** + * API Port Thread + *********************************************************************/ +static VOID STDCALL +VmsApiPortThread (PVOID x) +{ + HANDLE Port = (HANDLE) x; + NTSTATUS Status = STATUS_SUCCESS; + + DPRINT("VMS: %s: called\n", __FUNCTION__); + while (TRUE) + { + } + NtClose (Port); + NtTerminateThread (NtCurrentThread(), Status); +} + +/********************************************************************** + * NAME PRIVATE + * VmspCreateObDirectory/1 + */ +static NTSTATUS FASTCALL +VmspCreateObDirectory (PWSTR DirectoryName) +{ + UNICODE_STRING usDirectoryName = {0}; + OBJECT_ATTRIBUTES DirectoryAttributes = {0}; + NTSTATUS Status = STATUS_SUCCESS; + HANDLE hDirectory = (HANDLE) 0; + + DPRINT("VMS: %s called\n", __FUNCTION__); + + RtlInitUnicodeString (& usDirectoryName, + DirectoryName); + InitializeObjectAttributes (& DirectoryAttributes, + & usDirectoryName, + 0, NULL, NULL); + Status = NtCreateDirectoryObject (& hDirectory, + DIRECTORY_CREATE_SUBDIRECTORY, + & DirectoryAttributes); + if(!NT_SUCCESS(Status)) + { + DPRINT("VMS: %s: NtCreateDirectoryObject failed (Status=0x%08lx)\n", + __FUNCTION__, Status); + return Status; + } + NtClose (hDirectory); + return STATUS_SUCCESS; +} + +/********************************************************************** + * NAME PRIVATE + * VmspCreatePort/1 + */ +static NTSTATUS STDCALL +VmspCreatePort (IN OUT PHANDLE pPortHandle, + IN PWSTR PortName, + IN ULONG MaxDataSize, + IN ULONG MaxMessageSize, + IN PTHREAD_START_ROUTINE ListeningThread) +{ + UNICODE_STRING usPortName = {0}; + OBJECT_ATTRIBUTES PortAttributes = {0}; + NTSTATUS Status = STATUS_SUCCESS; + + DPRINT("VMS: %s called\n", __FUNCTION__); + + if(NULL == ListeningThread) + { + return STATUS_INVALID_PARAMETER; + } + + RtlInitUnicodeString (& usPortName, PortName); + Status = NtCreatePort (pPortHandle, + & PortAttributes, + MaxDataSize, + MaxMessageSize, + 0); + if(!NT_SUCCESS(Status)) + { + DPRINT("VMS: %s: NtCreatePort failed (Status=0x%08lx)\n", __FUNCTION__, Status); + return Status; + } + Status = RtlCreateUserThread (NtCurrentProcess(), + NULL, + FALSE, + 0, 0, 0, + ListeningThread, + pPortHandle, + NULL, NULL); + if(!NT_SUCCESS(Status)) + { + DPRINT("VMS: %s: RtlCreateUserThread failed (Status=0x%08lx)\n", __FUNCTION__, Status); + return Status; + } + return Status; +} + +/********************************************************************** + * VmsInitializeServer/0 + */ +NTSTATUS +VmsInitializeServer(VOID) +{ + NTSTATUS Status = STATUS_SUCCESS; + WCHAR NameBuffer [32]; + + DPRINT("VMS: %s called\n", __FUNCTION__); + + /* Create the \VMS directory */ + wcscpy (NameBuffer, L"\\VMS"); + Status = VmspCreateObDirectory (NameBuffer); + if(!NT_SUCCESS(Status)) + { + DPRINT("VMS: %s: VmspCreateObDirectory failed!\n", __FUNCTION__); + }else{ + /* Create the \VMS\SbApiPort port */ + wcscat (NameBuffer, L"\\SbApiPort"); + Status = VmspCreatePort (& VmsSbApiPort, + NameBuffer, + 0x104, + 0x148, + VmsSbApiPortThread); + if(!NT_SUCCESS(Status)) + { + DPRINT("VMS %s: VmspCreatePort failed (Status=%08lx)\n", + __FUNCTION__, Status); + return Status; + }else{ + OBJECT_ATTRIBUTES EventAttributes; + + InitializeObjectAttributes (& EventAttributes, + NULL, + 0, + NULL, + NULL); + Status = NtCreateEvent (& SmCalledBack, + EVENT_ALL_ACCESS, + & EventAttributes, + SynchronizationEvent, + FALSE); + if(!NT_SUCCESS(Status)) + { + DPRINT("VMS: %s: NtCreateEvent failed (Status=0x%08lx)\n", + __FUNCTION__, Status); + return Status; + }else{ + UNICODE_STRING VmsSbApiPortName; + + RtlInitUnicodeString (& VmsSbApiPortName, NameBuffer); + Status = SmConnectApiPort (& VmsSbApiPortName, + VmsSbApiPort, + 77, /* VMS CUI */ + & SmApiPort); + if(!NT_SUCCESS(Status)) + { + DPRINT("VMS: %s: SmConnectApiPort failed (Status=0x%08lx)\n", + __FUNCTION__, Status); + return Status; + }else{ + Status = NtWaitForSingleObject (SmCalledBack, + FALSE, + INFINITE); + /* OK initialize the VMS subsystem */ + wcscpy (& NameBuffer[4], L"\\ApiPort"); + Status = VmspCreatePort (& VmsApiPort, + NameBuffer, + 0x104, + 0x148, + VmsApiPortThread); + /* TODO */ + + wcscpy (& NameBuffer[4], L"\\Session"); + Status = VmspCreateObDirectory (NameBuffer); + /* TODO */ + + Status = SmCompleteSession (SmApiPort, + VmsSbApiPort, + VmsApiPort); + } + } + } + } + return STATUS_SUCCESS; +} + +/* EOF */ diff --git a/vms/server/makefile b/vms/server/makefile new file mode 100644 index 00000000000..66d447d1b72 --- /dev/null +++ b/vms/server/makefile @@ -0,0 +1,24 @@ +# $Id: $ +# +# ReactOS VMS+ Environment Subsystem Server +# + +PATH_TO_TOP = ../../reactos + +TARGET_TYPE = program + +TARGET_APPTYPE = native + +TARGET_NAME = vmsss + +TARGET_SDKLIBS = ntdll.a smdll.a + +TARGET_CFLAGS = -Iinclude -I../include + +TARGET_OBJECTS = vmsss.o init.o server.o + +include $(PATH_TO_TOP)/rules.mak + +include $(TOOLS_PATH)/helper.mk + +# EOF diff --git a/vms/server/server.c b/vms/server/server.c new file mode 100644 index 00000000000..eb49b14deaa --- /dev/null +++ b/vms/server/server.c @@ -0,0 +1,68 @@ +/* $Id: $ + * + * init.c - VMS Enviroment Subsystem Server - Initialization + * + * ReactOS Operating System + * + * -------------------------------------------------------------------- + * + * This software is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING.LIB. If not, write + * to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, + * MA 02139, USA. + * + * -------------------------------------------------------------------- + */ +#define __USE_NT_LPC__ +#include "vmsss.h" + +//#define NDEBUG +#include + + +/********************************************************************** + * NAME PRIVATE + * VmspCreatePort/1 + */ +NTSTATUS VmsRunServer (VOID) +{ + NTSTATUS Status = STATUS_SUCCESS; + LPC_MAX_MESSAGE Request; + PLPC_MESSAGE Reply = NULL; + ULONG MessageType = 0; + + while (TRUE) + { + Status = NtReplyWaitReceivePort (VmsApiPort, + 0, + Reply, + & Request); + if(NT_SUCCESS(Status)) + { + MessageType = PORT_MESSAGE_TYPE(Request); + DPRINT("VMS: %s received a message (Type=%d)\n", + __FUNCTION__, MessageType); + switch(MessageType) + { + default: + continue; + } + }else{ + DPRINT("VMS: %s: NtReplyWaitReceivePort failed (Status=%08lx)\n", + __FUNCTION__, Status); + } + } + return Status; +} + +/* EOF */ diff --git a/vms/server/vmsss.c b/vms/server/vmsss.c new file mode 100644 index 00000000000..4f807353393 --- /dev/null +++ b/vms/server/vmsss.c @@ -0,0 +1,46 @@ +/* $Id: $ + * + * vmsss.c - VMS Enviroment Subsystem Server + * + * ReactOS Operating System + * + * -------------------------------------------------------------------- + * + * This software is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING.LIB. If not, write + * to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, + * MA 02139, USA. + * + * -------------------------------------------------------------------- + */ +#include "vmsss.h" + +#define NDEBUG +#include + +/* Native image's entry point */ + +VOID STDCALL +NtProcessStartup(PPEB Peb) +{ + NTSTATUS Status = STATUS_SUCCESS; + + Status = VmsInitializeServer(); + if(STATUS_SUCCESS != Status) + { + DPRINT("VMS: VmsInitializeServer failed! Aborting. (Status=%lx)\n", Status); + } + Status = VmsRunServer(); + NtTerminateProcess(NtCurrentProcess(),Status); +} +/* EOF */ diff --git a/vms/server/vmsss.h b/vms/server/vmsss.h new file mode 100644 index 00000000000..57c34cd5c3c --- /dev/null +++ b/vms/server/vmsss.h @@ -0,0 +1,15 @@ +#ifndef _VMSSS_H_INCLUDED_ +#define _VMSSS_H_INCLUDED_ + +#define NTOS_MODE_USER +#include +#include + +/* init.c */ +extern HANDLE VmsApiPort; +NTSTATUS VmsInitializeServer(VOID); + +/* server.c */ +NTSTATUS VmsRunServer(VOID); + +#endif /* ndef _VMSSS_H_INCLUDED_ */ diff --git a/vms/server/vmsss.rc b/vms/server/vmsss.rc new file mode 100644 index 00000000000..82ae31e9cae --- /dev/null +++ b/vms/server/vmsss.rc @@ -0,0 +1,4 @@ +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS/VMS Environment Subsystem Server\0" +#define REACTOS_STR_INTERNAL_NAME "vmsss\0" +#define REACTOS_STR_ORIGINAL_FILENAME "vmsss.exe\0" +#include diff --git a/vms/tools/mksystab/makefile b/vms/tools/mksystab/makefile new file mode 100644 index 00000000000..32959745953 --- /dev/null +++ b/vms/tools/mksystab/makefile @@ -0,0 +1,5 @@ +all: implib + +implib: + +clean: