1 /* $Id: init.c,v 1.1 1999/07/17 23:10:31 ea Exp $
5 * ReactOS Operating System
9 #include <internal/lpc.h>
11 struct _SERVER_DIRECTORIES
13 HANDLE Root
; /* MS & Interix(tm): \PSXSS\ */
14 HANDLE Session
; /* MS & Interix(tm): \PSXSS\PSXSES\ */
15 HANDLE System
; /* Interix(tm) only: \PSXSS\SYSTEM\ */
26 struct _SERVER_DIRECTORIES Directory
;
27 struct _SERVER_PORT Api
;
28 struct _SERVER_PORT SbApi
;
32 void Thread_Api(void*);
33 void Thread_SbApi(void*);
38 {INVALID_HANDLE_VALUE
,INVALID_HANDLE_VALUE
},
39 {INVALID_HANDLE_VALUE
,Thread_Api
},
40 {INVALID_HANDLE_VALUE
,Thread_SbApi
}
46 Thread_Api(void * pPort
)
50 port
= * (HANDLE
*) pPort
;
58 if (NT_SUCCESS(NtCompleteConnectPort(port
)))
68 Thread_SbApi(void * pPort
)
72 port
= * (HANDLE
*) pPort
;
80 if (NT_SUCCESS(NtCompleteConnectPort(port
)))
90 /***********************************************************************
94 * Initialize the POSIX+ subsystem server process. That is:
96 * 1. create the directory object "\PSXSS\";
97 * 2. create the API port "\PSXSS\ApiPort";
98 * 3. create the debug port "\PSXSS\SbApiPort";
99 * 4. create the sessions directory object "\PSXSS\PSXSES\";
100 * 5. create the system directory object "\PSXSS\SYSTEM\";
101 * 6. initialize port threads
104 * TRUE Initialization succeeded:
105 * FALSE Initialization failed.
108 * The "\PSXSS\SYSTEM\" directory object does not exist
109 * in the MS implementation, but appears in WNT's namespace
110 * when the Interix(tm) subsystem is installed.
113 InitializeServer(void)
116 OBJECT_ATTRIBUTES ObAttributes
;
121 * Create the directory object "\PSXSS\"
124 Status
= NtCreateDirectoryObject(
125 PSXSS_DIRECTORY_NAME_ROOT
126 & Server
.Directory
.Root
130 * Create the LPC port "\PSXSS\ApiPort"
135 PSXSS_PORT_NAME_APIPORT
,
140 0, /* desired access */
141 & ObAttributes
, /* object attributes */
142 NtCurrentProcess(), /* process' handle */
145 (void*) & Server
.Api
.Port
149 * Create the LPC port "\PSXSS\SbApiPort"
154 PSXSS_PORT_NAME_SBAPIPORT
,
157 Status
= NtCreateThread(
158 & Server
.SbApi
.Thread
,
160 (void*) & Server
.SbApi
.Port
164 * Create the POSIX+ session directory object
168 Status
= NtCreateDirectoryObject(
169 PSXSS_DIRECTORY_NAME_SESSIONS
170 & Server
.Directory
.Sessions
174 * Create the POSIX+ system directory object
178 Status
= NtCreateDirectoryObject(
179 PSXSS_DIRECTORY_NAME_SYSTEM
180 & Server
.Directory
.System