1 /* $Id: psxss.h,v 1.1 2002/04/10 21:30:21 ea Exp $ */
8 #include <psx/lpcproto.h>
10 #ifdef __PSXSS_ON_W32__
14 #define NAME_BUFFER_SIZE 64
16 /* PSXSS GLOBAL DATA */
18 typedef struct _SERVER_DIRECTORY
22 UNICODE_STRING usName
;
26 #define PSXSS_THREADS_PER_PORT 2
28 typedef struct _SERVER_PORT
32 UNICODE_STRING usName
;
33 PTHREAD_START_ROUTINE EntryPoint
;
37 } ThreadInfo
[PSXSS_THREADS_PER_PORT
];
39 } SERVER_PORT
, * PSERVER_PORT
;
41 #define SERVER_DIRECTORY_COUNT 3
42 #define SERVER_PORT_COUNT 3
44 typedef struct _SERVER
47 SERVER_DIRECTORY Directory
[SERVER_DIRECTORY_COUNT
];
48 SERVER_PORT Port
[SERVER_PORT_COUNT
];
52 #define PSX_PORT_API 0
53 #define PSX_PORT_SBAPI 1
54 #define PSX_PORT_SESSION 2
56 #define PSX_DIRECTORY_POSIX 0
57 #define PSX_DIRECTORY_SESSIONS 1
58 #define PSX_DIRECTORY_SYSTEM 2
60 extern SERVER Server
; /* server/misc/init.c */
62 /* System call type */
63 typedef NTSTATUS (STDCALL
*PSX_SYSTEM_CALL
)(PPSX_MAX_MESSAGE
);
65 /* System calls table */
67 extern PSX_SYSTEM_CALL SystemCall
[]; /* server/call/syscall.c */
69 /* Listener's Threads */
70 VOID STDCALL
ApiPortListener (PVOID
);
71 VOID STDCALL
SbApiPortListener (PVOID
);
72 VOID STDCALL
SessionPortListener (PVOID
);
76 typedef struct _PSX_TERMINAL
80 } PSX_TERMINAL
, * PPSX_TERMINAL
;
86 PROCESS_STATUS_INITIALIZATION
,
88 PROCESS_STATUS_WAITING
,
94 typedef DWORD PSX_SECURITY
; /* TODO */
98 typedef struct _PSX_PROCESS
101 HANDLE hProcess
; /* hProcess */
102 PROCESS_STATUS Status
;
103 struct _PSX_PROCESS
* Parent
;
104 struct _PSX_SESSION
* Session
;
105 PPSX_TERMINAL ControlTty
;
106 PSX_SECURITY Security
;
108 } PSX_PROCESS
, * PPSX_PROCESS
;
114 SESSION_STATUS_INITIALIZATION
,
115 SESSION_STATUS_READY
,
116 SESSION_STATUS_SHUTDOWN
,
121 typedef struct _PSX_SESSION
124 ULONG ReferenceCount
;
125 SESSION_STATUS Status
;
129 ULONG ulPortIdentifier
;
132 ULONG Id
; /* csrterm pid */
133 HANDLE hPort
; /* LPC port owned by csrterm: \POSIX+\Sessions\P{Id} */
135 HANDLE Handle
; /* Section owned by csrterm: \POSIX+\Sessions\D{Id} */
141 CRITICAL_SECTION Lock
;
142 struct _PSX_SESSION
* Previous
;
143 struct _PSX_SESSION
* Next
;
145 } PSX_SESSION
, * PPSX_SESSION
;
149 VOID STDCALL
debug_print (LPWSTR Template
, ...);
150 NTSTATUS STDCALL
PsxInitializeSessions (VOID
); /* ob/session.c */
151 NTSTATUS STDCALL
PsxCreateSession (PLPC_MAX_MESSAGE
,HANDLE
,ULONG
);
152 NTSTATUS STDCALL
PsxInitializeProcesses (VOID
); /* ob/process.c */
153 NTSTATUS STDCALL
PsxCreateProcess (PLPC_MAX_MESSAGE
,HANDLE
,ULONG
);
155 #endif /* ndef _PSX_PSXSS_H */