mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 07:36:21 +00:00
POSIX+ says goodbye and leaves. It used to be fun, now it's just painful
svn path=/trunk/; revision=3653
This commit is contained in:
parent
a42476b9fb
commit
6efd5e3b01
166 changed files with 0 additions and 20265 deletions
|
@ -1,135 +0,0 @@
|
|||
/* $Id: pdata.h,v 1.6 2002/05/17 01:49:53 hyperion Exp $
|
||||
*/
|
||||
/*
|
||||
* psx/pdata.h
|
||||
*
|
||||
* POSIX+ subsystem process environment data structure
|
||||
*
|
||||
* This file is part of the ReactOS Operating System.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by KJK::Hyperion <noog@libero.it>
|
||||
*
|
||||
* 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 WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
#ifndef __PSX_PDATA_H_INCLUDED__
|
||||
#define __PSX_PDATA_H_INCLUDED__
|
||||
|
||||
/* INCLUDES */
|
||||
#include <ddk/ntddk.h>
|
||||
#include <ntdll/rtl.h>
|
||||
#include <limits.h>
|
||||
#include <psx/fdtable.h>
|
||||
|
||||
/* OBJECTS */
|
||||
|
||||
/* TYPES */
|
||||
typedef struct __tagPDX_PDATA
|
||||
{
|
||||
BOOL Spawned; /* TRUE if process has been created through __PdxSpawnPosixProcess() */
|
||||
int ArgCount; /* count of arguments passed to exec() */
|
||||
char **ArgVect; /* array of arguments passed to exec() */
|
||||
char ***Environment; /* pointer to user-provided environ variable */
|
||||
UNICODE_STRING NativePathBuffer; /* static buffer used by low-level calls for pathname conversions */
|
||||
UNICODE_STRING CurDir; /* current working directory */
|
||||
UNICODE_STRING RootPath; /* NT path to the process's root directory */
|
||||
HANDLE RootHandle; /* handle to the process's root directory */
|
||||
__fdtable_t FdTable; /* file descriptors table */
|
||||
/* WARNING: PRELIMINARY CODE FOR DEBUGGING PURPOSES ONLY - DO NOT CHANGE */
|
||||
CRITICAL_SECTION Lock;
|
||||
LONG TlsIndex;
|
||||
} __PDX_PDATA, * __PPDX_PDATA;
|
||||
|
||||
/* serialized process data block, used by __PdxSpawnPosixProcess() and __PdxExecThunk().
|
||||
The layout of buffers inside the Buffer byte array is as following:
|
||||
|
||||
ArgVect[0] + null byte
|
||||
ArgVect[1] + null byte
|
||||
...
|
||||
ArgVect[ArgCount - 1] + null byte
|
||||
Environment[0] + null byte
|
||||
Environment[1] + null byte
|
||||
...
|
||||
Environment[n - 1] + null byte (NOTE: the value of n is stored in ProcessData.Environment)
|
||||
CurDir.Buffer
|
||||
RootPath.Buffer
|
||||
FdTable.Descriptors[0]
|
||||
FdTable.Descriptors[1]
|
||||
...
|
||||
FdTable.Descriptors[FdTable.AllocatedDescriptors - 1]
|
||||
FdTable.Descriptors[x].ExtraData
|
||||
FdTable.Descriptors[y].ExtraData
|
||||
...
|
||||
padding for page boundary alignment
|
||||
*/
|
||||
typedef struct __tagPDX_SERIALIZED_PDATA
|
||||
{
|
||||
__PDX_PDATA ProcessData;
|
||||
ULONG AllocSize;
|
||||
BYTE Buffer[1];
|
||||
} __PDX_SERIALIZED_PDATA, *__PPDX_SERIALIZED_PDATA;
|
||||
|
||||
typedef struct __tagPDX_TDATA
|
||||
{
|
||||
__PPDX_PDATA ProcessData;
|
||||
int ErrNum;
|
||||
} __PDX_TDATA, * __PPDX_TDATA;
|
||||
|
||||
/* CONSTANTS */
|
||||
|
||||
/* PROTOTYPES */
|
||||
NTSTATUS STDCALL __PdxSerializeProcessData(IN __PPDX_PDATA, OUT __PPDX_SERIALIZED_PDATA *);
|
||||
NTSTATUS STDCALL __PdxUnserializeProcessData(IN OUT __PPDX_SERIALIZED_PDATA *, OUT __PPDX_PDATA * OPTIONAL);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
__PdxProcessDataToProcessParameters
|
||||
(
|
||||
OUT PRTL_USER_PROCESS_PARAMETERS *ProcessParameters,
|
||||
IN __PPDX_PDATA ProcessData,
|
||||
IN PUNICODE_STRING ImageFile
|
||||
);
|
||||
|
||||
/* MACROS */
|
||||
/* WARNING: PRELIMINARY CODE FOR DEBUGGING PURPOSES ONLY - DO NOT CHANGE */
|
||||
VOID __PdxSetProcessData(__PPDX_PDATA);
|
||||
__PPDX_PDATA __PdxGetProcessData(VOID);
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
|
||||
#define __PdxAcquirePdataLock() (RtlEnterCriticalSection(&__PdxGetProcessData()->Lock))
|
||||
#define __PdxReleasePdataLock() (RtlLeaveCriticalSection(&__PdxGetProcessData()->Lock))
|
||||
|
||||
#if 0
|
||||
#define __PdxAcquirePdataLock() (RtlAcquirePebLock())
|
||||
#define __PdxReleasePdataLock() (RtlReleasePebLock())
|
||||
|
||||
#define __PdxSetProcessData(PPDATA) ((void)((NtCurrentPeb()->SubSystemData) = (PPDATA)))
|
||||
#define __PdxGetProcessData() ((__PPDX_PDATA)(&(NtCurrentPeb()->SubSystemData)))
|
||||
#endif
|
||||
|
||||
#define __PdxGetNativePathBuffer() ((PUNICODE_STRING)(&(__PdxGetProcessData()->NativePathBuffer)))
|
||||
#define __PdxGetCurDir() ((PUNICODE_STRING)(&(__PdxGetProcessData()->CurDir)))
|
||||
#define __PdxGetRootPath() ((PUNICODE_STRING)(&(__PdxGetProcessData()->RootPath)))
|
||||
#define __PdxGetRootHandle() ((HANDLE)(__PdxGetProcessData()->RootHandle))
|
||||
#define __PdxGetFdTable() ((__fdtable_t *)(__PdxGetProcessData()->FdTable))
|
||||
|
||||
#define __PdxSetNativePathBuffer(BUF) ((void)((__PdxGetProcessData()->NativePathBuffer) = (BUF)))
|
||||
#define __PdxSetCurDir(CURDIR) ((void)((__PdxGetProcessData()->CurDir) = (CURDIR)))
|
||||
#define __PdxSetRootPath(ROOTPATH) ((void)((__PdxGetProcessData()->RootPath) = (ROOTPATH)))
|
||||
#define __PdxSetRootHandle(ROOTHANDLE) ((void)((__PdxGetProcessData()->RootHandle) = (ROOTHANDLE)))
|
||||
#define __PdxSetFdTable(FDTABLE) ((void)((__PdxGetProcessData()->FdTable) = (FDTABLE)))
|
||||
|
||||
#endif /* __PSX_PDATA_H_INCLUDED__ */
|
||||
|
||||
/* EOF */
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue