- Subsystemization of Process Creation code. Memory code done by new Mm functions (not all used yet),
Kernel code done by Ke*, etc.
- Written to be compatible with the information in "Windows Internals".
- Optimized and cleaned up.
- ObInsertObject is now called at the end, fixing a plethora of wrong things that were covered with FIXMEs.
- PEB is allocated with a Memory Area, and so will TEB soon, which allows 4KB allocation without 64KB gra
nularity.
- System DLL Mapping/Loading has been changed to be cached at system bootup, resulting in faster code.
Also changed Peb to report NT 5.0
NOTE: Messy, more to come soon. The full benefits of this patch won't be realized until the complete changes
are in.
svn path=/trunk/; revision=14660
---------------------------------------------------
- ps/cid.c:
* Moved CID Lookup functions here
- ps/security.c:
* Moved all security related functions here. Makes other files neater and security functions
easier to locate.
- ps/thread.c:
* Moved most of the Thread Scheduling/Dispatching code that belongs in the Kernel to /ke and
renamed functions from Ps to Ki.
* Implemented PsIsSystemThread.
* Removed Reaper Thread Init (now obsolete).
* Renamed PiDeleteThread to PspDeleteThread.
* Moved Thread State functions from tinfo.c to here.
- ps/process.c:
* Removed Query/Set Process functions and moved to ps/query.c
* Renamed PiDeletePRocess to PspDeleteProcess
* Removed obsoleted Process Termination functions, moved persistent one to kill.c
- ps/create.c:
* Moved the security APIs to security.c
* Correctly implemented PsCreateSystemThread to actually create system threads.
- ps/suspend.c
* Rewrote Nt Executive functions to use Kernel functions.
* Moved Ps* Routines into ke/kthread.c and fixed them. The implementation was wrong in
some aspects, especially the issue of the APC looping around the KeWaitXxx call and the
fact that the routines excluded/ignored the FreezeCount.
- ps/debug.c
* Fixed completely broken implementation of Get/SetThreadContext. The old version crashed
when called and did not work at all. Suspend Regression test now works.
* Moved Context<->TrapFrame functions to ke/i386/
* Combined Set/GetThreadContext APCs into a single one, and used special context structure.
- ps/query.c:
* Moved Thread/Process Query/Set Routines here.
- ps/tinfo.c:
* Removed.
- ps/kill.c
* Removed complicated Process Termination semantics and useless Attach/Detach in favor for
a much more lightweight function which performs the same tasks as before and actually works.
TaskManager can now terminate foreign processes.
* Rewrote Thread Reaping to use the HyperCritical Work Queue instead of manually controlled
thread. This results in much less code as well as an increase in speed and less micro
management. The reaper is PspReapRoutine. Closing CMD.EXE now works properly without
requiring masks that were added as hacks to allow it.
* Renamed PiTerminateProcessThreads to PspTerminateProcessThreads. Fixed it to work with new
termination code.
* Added PspDeleteProcess to handle Process Object deletion. Kills the CID Handle here as done
by Hartmut.
* Added PspDeletethread here.
* Renamed and rewrote PsTerminateCurrentThread to PspExitThread. Used NT Implementation out-
lined in Windows Internals, Chapter 13. Uses less locks, a more concise order of actions,
actually parses the Termination Ports, handles Dbgk notification. Timers are now rundown,
and Mutex rundown is in a dedicated Kernel function. Final termination handled by KeTerminate
Thread as documented.
* Renamed PsTerminateOtherThread to PspTerminateThreadByPointer and modified implementation to
be compatible with the changes above.
* Renamed and regrouped Process Termination into PspExitProcess. Also implemented as described
above, and moved each subsystem specific termination helper into its own subsytem.
* Improved NtTerminateProcess and added more debugging messages.
* Improved NtTerminateThread and added check against System Thread and made it compatible with
new implementation.
* Corrected PsTerminateSystemThread now that we support System Threads.
* Corrected NtRegisterThreadTerminatePort to use same structure name as on windows for the
port, and added tag to pool allocation (documented in pooltag.txt)
include/internal/*.h:
* Defined Scheduler Functions and misc new functions or renamed functions.
ke/apc.c:
* Fixed critical bug where APCs were not delivered at all if the thread wastion and cancels any timers that are associated
to a thread, as well as their APCs and DPCs.
REGRESSIONS FOUND: NONE
BUGS/REGRESSIOSN FIXED:
* Thread/Get Set Context now works.
* Suspend Regression test now works.
* Task manager can now kill foreign processes, even hung ones (like it should).
* ExitProcess/closing cmd.exe with the 'x' button now works correctly without hacks.
KNOWN ISSUES: I left a bit of a mess in the headers and some stuff still needs to be moved into the right
places. I just wanted to have this first part ready first, so that it won't get too big.
svn path=/trunk/; revision=14174
- Rewrote wait code. It is now cleaner, more optimized and faster. All waiting
functions are now clearly differentiated instead of sharing code. These functions
are called up to a dozen times a second, so having dedicated code for each of
them is a real boost in speed.
- Fixed several queue issues, made a dedicated queue wait/wake function (you are not
supposed to use KeWaitFor on a queue, and this is also a speed boost), and make it
compatible with new wait code.
- Optimized Work Queue code to be much smaller and better organized, by using an
array instead of hard-coded multiple static variables. Also, add support for the
real NT structures and implementation, paving the road for Dynamic Work Items, which
also have timeouts, and deadlock dection + debug info.
- Simplified PsBlockThread and made it compatible with wait code.
- Added support for priority boosting when unwaiting a thread; will use later, as well
as put proper boosting for dispatch objects.
- Inlined all dispatcher lock functions and header initialization for speed.
- Moved executive wait code into ob.
svn path=/trunk/; revision=14047
- implement generic executive handle tables (since there don't exist documents that describe the parameters of most of these functions (which are kernel internal only), i made them up as required)
- adjusted OB's handle manager to use ex handle tables
- adjusted the client id manager to use ex handle tables
svn path=/trunk/; revision=14007
- Removed ke/alert.c and moved its functions where they belong.
- Commented and organized KeInitializeThread.
- Began switch to true KOBJECT enumeration used in NT.
- Implemented KeAlertResumeThread and NtAlertResumeThread.
- Harmonized Formatting in ke/kthread.c
svn path=/trunk/; revision=13974
2. processes should acuire a cid handle for their unique process id
3. fixed several instances in structures where process ids were DWORD/ULONG instead of HANDLEs
svn path=/trunk/; revision=13301
2. implemented window station/desktop inheritance on thread/process startup
3. implemented process locking
4. fixed some fields in the EPROCESS structure
svn path=/trunk/; revision=11712
- apc.c: Fixed some bugs and used Dispatcher Lock. Simplified some functions and renamed/inlined others.
- wait.c: Fixed some assumptions about Dispatcher Lock and Waiting/Alertability
- process.c: Fully implemented KeStackAttachProcess and KeStackDetachProcess. Made all functions use PKPROCESS and not PEPROCESS.
Memory Manager: Fixed calls to KeAttachProcess/DetachProcess to typecast PKPROCESS
Process Manager: Removed call to empty function in apc.c
svn path=/trunk/; revision=11622
TODO: KiSwapApcEnvironment, Honour SpecialApcDisable.
Special thanks to Thomas and Filip.
Fixed I/O Manager Bugs. APCs were not created with the right parameters in the right places, or had useless parameters being sent.
Added mmdrv and midimap to bootcd.
Fixed KTHREAD defintion.
Fixed some thread alertability issue in thread creation.
svn path=/trunk/; revision=11610
- Move code from KiUpdateSystemTime to KeUpdateSystemTime.
- Move code from KiUpdateProcessThreadTime to KeUpdateRunTime.
- Honour thread quantums while scheduling.
svn path=/trunk/; revision=11488
2. get rid of all reactos-specific fields in the E/KTHREAD structure and make them match the 2k layout
3. identify threads (and later processes) using a client id table (which should propably be replaced by a global handle table instead)
4. disabled thread event pair functions by default (NT4 only) as they require a field in the ETHREAD structure that is not present in later versions
svn path=/trunk/; revision=11105
Implemented ExAllocatePoolWithQuota, ExAllocatePoolWithQuotaTag, PsChargePoolQuota, PsChargeProcessNonPagedPoolQuota, PsChargeProcessPagedPoolQuota, PsChargeProcessPoolQuota.
Also implemented a basic ExAllocatePoolWithTagPriority, but needs Special Pool support for Driver Verifier functionality. The allocation works however.
svn path=/trunk/; revision=10429
initializing to separate function IopInitializeBootDrivers in io/driver.c.
These functions has been renamed:
LdrInitializeBootStartDriver -> IopInitializeBuiltinDriver (moved to io/driver.c)
LdrLoadAutoConfigDrivers -> IopInitializeSystemDrivers
How the driver loading works now:
- The root bus driver is enumerated by IoInit2 and it causes all drivers marked
as boot start to be initialized and attached to respective device tree node.
- Other boot drivers are initialized by IopInitializeBootDrivers (called from
ExpInitializeExecutive).
- After creating system root link (by IoCreateSystemRootLink) the device
tree is travesed by IopInitializePnpServices and all non-boot start drivers
all loaded.
- At last, system start drivers are loaded by IopInitializeSystemDrivers.
svn path=/trunk/; revision=6325
Files that should now compile with Win 32 API headers:
* sysinfo.c
* time.c
* work.c
* zone.c
If you suddenly discover that something no longer works due to a missing struct member, it's probably because I've renamed it to match the Win 32 API headers.
svn path=/trunk/; revision=5151
Some of NTOSKRNL now compiles with __USE_W32API enabled. Note that this commit is purely so I know what to do, and also to allow other people to continue working on this if they wish to do so. I will continue hacking away at it.
It's not complete yet, but I've ensured that the changes I have made aren't incompatible with ReactOS as it stands at the moment. It compiles without __USE_W32API fine.
* Modified the tools/depend.mk file to force the use of forward slash (SEH variable?) otherwise it tries to run "toolsdepend.exe" without a slash.
* Moved a couple of routines from include/ddk/halfuncs.h to hal/halx86/include/hal.h
* Fixed conflicting types in ntoskrnl/ex/interlck.c
* Replaced .a with .u, #undef'd "lite" functions and defined NONAMELESSUNION in ntoskrnl/ex/resource.c so that it compiles with Win 32 API
* Added some more conditional defines to include/shared_data.h, ntoskrnl/include/internal/mm.h (and i386/mm.h), ntoskrnl/include/internal/ps.h
* Replaced .a with .u for OWNER_ENTRY and ERESOURCE in include/ddk/extypes.h (so they are compatible with Win 32 API headers)
* Various other small adjustments
Hope this works!
svn path=/trunk/; revision=5130
* ntoskrnl/ps/create.c (PiDeleteThread): Don't dereference
the thread's process while holding the thread list lock.
2002-08-17 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/mm/section.c (MmMapViewOfSection): Check there is
enough space for all parts of an image before mapping it; if
there isn't enough space free at the preferred base address
then try to choose a different one.
2002-08-17 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/mm/mpw.c (MmInitMpwThread): Run the MPW thread at
idle priority.
2002-08-17 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/mm/kmap.c (ExUnmapPage, ExAllocatePageWithPhysPage,
MiFreeNonPagedPoolRegion, MiAllocNonPagedPoolRegion): Maintain
a hint of the next free page; makes running with whole page
allocation more bearable.
2002-08-17 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/mm/anonmem.c (MmPageOutVirtualMemory): Show an
out of swap space message if we are out of swap space.
* ntoskrnl/mm/section.c (MmPageOutSectionView): Show an
out of swap space message if we are out of swap space.
* ntoskrnl/mm/pagefile.c (MmAllocSwapPage): Don't automatically
show an out of swap space message on failure.
* ntoskrnl/mm/pagefile.c (MmShowOutOfSpaceMessagePagingFile): New
function to notify the user that the pagefile is full.
2002-08-17 David Welch <welch@computer2.darkstar.org>
* drivers/lib/zlib/Makefile: Create a dummy zlib.sym
svn path=/trunk/; revision=3335
* ntoskrnl/mm/npool.c (ExAllocateWholePageBlock): Converted
to use PHYSICAL_ADDRESS type for page address.
2002-08-16 David Welch <welch@computer2.darkstar.org>
* subsys/win32k/ntuser/class.c (W32kCreateClass): Corrected
typo when calculating the offset into the class object to
put the class name string.
2002-08-16 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/ps/thread.c (PsDispatchThreadNoLock): Don't call
the reaper function directly; set an event to wake up a seperate
reaper thread.
* ntoskrnl/ps/thread.c (PsReaperThreadMain): New function that
waits for a notification and then calls PsReapThreads.
* ntoskrnl/ps/thread.c (PsInitThreadManagement): Create the
reaper thread.
svn path=/trunk/; revision=3333
* subsys/smss/init.c (SmPagingFilesQueryRoutine): If possible
take the size of the paging file from the registry.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/mm/section.c (MmCreateDataFileSection): Extend the
section if necessary.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/mm/pagefile.c (NtCreatePagingFile): Set the file
size using the FileAllocationInformation class.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/mm/anonmem.c (MmWritePageVirtualMemory): Implemented
function to write anonymous memory pages to the swap file.
* ntoskrnl/mm/anonmem.c (MmFreeVirtualMemoryPage): Free any
swap page associated with the page.
* ntoskrnl/mm/mpw.c (MmWriteDirtyPages): New function to find
pages to write to disk.
* ntoskrnl/mm/mpw.c (MmMpwThreadMain): Implemented MPW functionality.
* ntoskrnl/mm/rmap.c (MmWritePagePhysicalAddress): New function
to write a single page back to disk.
* ntoskrnl/mm/rmap.c (MmSetCleanAllRmaps, MmSetDirtyAllRmaps,
MmIsDirtyPageRmap): New rmap function to support the MPW thread.
* ntoskrnl/mm/section.c (MmWritePageSectionView): Implemented
function to write back section pages.
* ntoskrnl/mm/section.c (MmFreeSectionPage): Free any swap
entry associated with the page; mark pages shared with
the cache as dirty if necessary.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/ldr/loader.c (LdrPEProcessModule): Set name of
the module into the module text structure.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/io/rw.c (NtReadFile, NtWriteFile): Use the correct
test for whether to wait for the completion of i/o.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/cm/ntfunc.c (NtFlushKey): Request synchronous i/o
from NtOpenFile.
* ntoskrnl/cm/regfile (CmiInitPermanentRegistryHive): Request
synchronous i/o from NtCreateFile.
* ntoskrnl/dbg/kdb_stabs.c (LdrpLoadModuleSymbols): Request
synchronous i/o from NtOpenFile.
* ntoskrnl/ldr/sysdll.c (LdrpMapSystemDll): Request synchronous i/o
from NtOpenFile.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/cc/view.c (CcRosSuggestFreeCacheSegment): Maintain the
correct reference count.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/cc/view.c (CcRosFlushCacheSegment): New function to
write back a modified cache segment.
* ntoskrnl/cc/view.c (CcRosFlushDirtyPages): New function to
flush some dirty pages from the cache.
* ntoskrnl/cc/view.c (CcRosMarkDirtyCacheSegment): New function to
mark a cache segment modified while mapped into memory as dirty.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/cc/pin.c (CcMapData, CcUnpinData, CcSetDirtyPinnedData):
Store the dirty status in the BCB; don't write back dirty data
immediately.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* include/ntos/mm.h: Added SEC_XXXX defines from 'Windows NT/2000
Native API Reference'
2002-08-14 David Welch <welch@computer2.darkstar.org>
* drivers/fs/vfat/ea.c (VfatSetExtendedAttributes): Empty
placeholder for extended attribute functions.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* drivers/fs/vfat/finfo.c (VfatSetAllocationSizeInformation):
Added function to set allocation size.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* drivers/fs/vfat/fcb.c (vfatFCBInitializeCache): Renamed
to vfatFCBInitializeCacheFromVolume.
* drivers/fs/vfat/fcb.c (vfatMakeFCBFromDirEntry): Don't
initialise the cache with a file object representing the
volume unless the FCB is for a directory.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* drivers/fs/vfat/create.c (VfatPagingFileCreate): Added a
new function for handling paging file only code.
* drivers/fs/vfat/create.c (VfatSupersedeFile): Added a
new function for doing a file supersede.
* drivers/fs/vfat/create.c (VfatCreateFile): Reformatted and
adjusted control flow. Set allocation size and extended attributes
on create.
* drivers/fs/vfat/create.c (VfatCreate): Removed goto.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* drivers/fs/vfat/cleanup.c (VfatCleanupFile): Renamed
updEntry to VfatUpdateEntry.
* drivers/fs/vfat/close.c (VfatCloseFile): Renamed
updEntry to VfatUpdateEntry.
* drivers/fs/vfat/dirwr.c (updEntry): Renamed to
VfatUpdateEntry.
* drivers/fs/vfat/dirwr.c (addEntry): Renamed to
VfatAddEntry.
2002-08-14 David Welch <welch@computer2.darkstar.org>
* apps/tests/sectest/sectest.c (main): Fixed formatting.
svn path=/trunk/; revision=3331
* ntoskrnl/ps/create.c (NtCreateThread): Call PsSuspendThread
if NtCreateThread has CreateSuspended as TRUE.
* ntoskrnl/ps/suspend.c (PsSuspendThread, PsResumeThread,
PiSuspendThreadKernelRoutine): Fixed suspend functionality.
2002-08-09 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/ke/i386/usertrap.c (print_user_address): Copy
the LDR variable from the right address.
2002-08-09 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/ke/apc.c (KiDeliverNormalApc): Check for
kernel APCs pending on exit from the kernel.
* ntoskrnl/ke/apc.c (KiDeliverNormalApc, KiDeliverUserApc,
KiDeliverApc): Set the APC's inserted flag to FALSE after
removing it from the thread's queue.
2002-08-09 David Welch <welch@computer2.darkstar.org>
* lib/kernel32/thread/thread.c (ThreadStartup): Don't
call DLL entrypoints; this is done by LdrInitializeThunk.
* lib/ntdll/ldr/startup.c (LdrInitializeThunk): Call
DLLs in initialization order; take the loader lock before
calling.
2002-08-09 David Welch <welch@computer2.darkstar.org>
* apps/tests/thread/thread.c (main): Test suspend and
resume functionality.
svn path=/trunk/; revision=3324
* ntoskrnl/mm/section (NtQuerySection): Return the
right result length.
2002-08-08 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/ke/usertrap.c (print_user_address): Check for
a NULL LDR structure in the PEB; copy the LDR pointer in
safely.
2002-08-08 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/ke/apc.c (KiDeliverUserApc): Deliver all present
APCs; release the APC spinlock while acccessing user memory.
2002-08-08 David Welch <welch@computer2.darkstar.org>
* include/internal/ps.h: Adjusted offsets into the ETHREAD
structure.
* include/internal/ps.h: Removed redundant members from the
KTHREAD structure.
* ntoskrnl/ke/kthread.c (KeInitializeThread): Removed
redundant members from the KTHREAD structure.
2002-08-08 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/dbg/kdb.c (KdbEnterDebuggerException): New
function to enter the debugger on an exception.
* ntoskrnl/kd/kdebug.c (KdInitSystem): Initialize the
local kernel debugger if enabled.
* ntoskrnl/ke/catch.c (KiDispatchException): Enter the
local kernel debugger on an exception.
2002-08-08 David Welch <welch@computer2.darkstar.org>
* include/ntdll/ldr.h: Added definition for a DLL entrypoint.
* lib/kernel32/process/create.c (KlCreateFirstThread): Put
the argument to the NtProcessStartup function on the stack.
* lib/kernel32/process/create.c (KlInitPeb): Read the
base address of the new image from the PEB.
* lib/kernel32/process/create.c (CreateProcessW): Start the
first thread at the entrypoint of the new image.
* lib/ntdll/ldr/startup.c (LdrInitializeThunk): If the
function is called after the initial startup then just call the
entrypoints for the loaded DLLs with DLL_THREAD_ATTACH. Don't
call the entrypoint of the image.
* lib/ntdll/rtl/process.c (RtlpCreateFirstThread): Put the
argument to the NtProcessStartup function on the stack.
* lib/ntdll/rtl/process.c (KlInitPeb): Read the base address of
the new image from the PEB.
* lib/ntdll/rtl/process.c (RtlCreateUserProcess): Start the
first thread at the entrypoint of the new image.
* ntoskrnl/ke/i386/bthread.S (PsBeginThreadWithContextInternal):
Use the system call path to begin a usermode thread.
* ntoskrnl/ke/i386/thread.c (Ke386InitThreadWithContext): Convert
the supplied context into a trap frame.
* ntoskrnl/ldr/init.c (LdrLoadInitialProcess): Put the PEB argument
to the NtProcessStartup function on the new stack; start the
first thread at the entrypoint of the image.
* ntoskrnl/ps/create.c (NtCreateThread): Create an APC to call
LdrInitializeThunk in the context of a new thread before its
entrypoint.
2002-08-08 David Welch <welch@computer2.darkstar.org>
* drivers/fs/vfat/cleanup.c (VfatCleanupFile): Uninitialise
the cache on file cleanup.
* drivers/fs/vfat/fcb.c (vfatReleaseFcb): Don't uninitialise
the cache on file close.
* ntoskrnl/cc/copy.c: Renamed zero page global variable.
* ntoskrnl/cc/view.c: Added cache delete function.
svn path=/trunk/; revision=3323
* subsys/win32k/include/callback.h: Fixed callback argument
definitions.
* subsys/win32k/ntuser/winpos.c: Implemented some more of the windows
sizing/moving code.
* subsys/win32k/ntuser/painting.c: Implemented some more of the
window painting code.
* subsys/win32k/objects/coord.c: Implemented LPtoDP and DPtoLP.
* subsys/win32k/objects/region.c: Added stubs for some more
region functions.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/ps/process.c (NtCreateProcess): Duplicate the
process desktop handle as well.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/se/token.c: Don't call the ZwXXX variant of
system calls when in system context.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* ntoskrnl/Makefile: Added file with MDA output code.
* ntoskrnl/kd/kdebug.c: Recognize MDA as a destination for
debug output.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* lib/user32/windows/defwnd.c: Implemented some more of the
default window handler.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* lib/user32/misc/stubs.c: Removed some stubs to seperate files.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* lib/user32/user32.def: Export ScreenToClient otherwise we
get problems when code in user32 tries to call it.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* include/win32k/region.h: Added prototypes for some missing
region functions.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* include/win32k/ntuser.h: Added prototypes for some missing
NtUserXXX functions.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* include/user32/wininternal.h: Added some constants for
private GetDCEx styles that WINE needs.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* include/user32/callback.h: Fixed callbacks for messages with
parameters.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* include/napi/win32.h (W32THREAD): Added pointer to the
thread's desktop.
* include/napi/win32.h (W32PROCESS): Removed handle table,
added a pointer to the process's window station.
* subsys/win32k/ntuser/guicheck.c (W32kGuiCheck): Reference
a process's window station on the first win32k system call. Reference
a thread's desktop on the first win32k system call.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* include/messages.h: Added some missing WM_XXX constants.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* drivers/dd/ide/makefile: Compiling with debugging messages
needs libgcc to be linked in.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* iface/addsys/genw32k.c: Generate a variable with the
number of system calls.
* iface/native/genntdll.c: Generate a proper stack frame for
the user system call stubs.
* ntoskrnl/ke/i386/syscall.S: Generate a proper stack frame for
the handler for system calls.
2002-07-04 David Welch <welch@computer2.darkstar.org>
* Makefile: Build the GUI startup application.
* subsys/system/gstart/gstart.c: Application to start up
the GUI.
svn path=/trunk/; revision=3179
* ntoskrnl/ke/i386/exp.c (KiDoubleFaultHandler): Print CR3
correctly.
2002-06-04 David Welch <welch@whitehall1-5.seh.ox.ac.uk>
* ntoskrnl/include/internal/ps.h: Added KTHREAD_STACK_LIMIT definition.
* ntoskrnl/ke/i386/tskswitch.S (Ki386ContextSwitch): Force all the
pages of the kernel stack to be accessible from this process.
2002-06-04 David Welch <welch@cwcom.net>
* ntoskrnl/cc/view.c (ReadCacheSegmentChain): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/cc/copy.c (CcRosCreateCacheSegment): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/cc/copy.c (CcFreeCachePage): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/include/internal/mm.h: Changed prototypes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/include/internal/ps.h (KPROCESS): Changed type of
page directory base to PHYSICAL_ADDRESS.
* ntoskrnl/include/internal/i386/mm.h: Changed prototypes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/ke/kthread.c (KeFreeStackPage): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/ke/kthread.c (KeInitializeThread): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/ke/process.c (KeAttachProcess, KeDetachProcess): Changes
to use PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/ke/kernel.c (PcrPages, KeApplicationProcessorInit): Changes
to use PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/mm/balance.c (MM_ALLOCATION_REQUEST): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/mm/balance.c (MmReleasePageMemoryConsumer): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/mm/balance.c (MmRequestPageMemoryConsumer): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/mm/cont.c (MmFreeContinuousPage): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/mm/cont.c (MmAllocateContinuousAlignedMemory): Changes to
use PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/mm/freelist.c (MmTransferOwnershipPage,
MmGetLRUFirstUserPage, MmGetLRUNextUserPage, MmGetContinuousPages,
MmInitializePageList, MmSetFlagsPage, MmSetRmapListHeadPage,
MmGetRmapListHeadPage, MmMarkPageMapped, MmMarkPageUnmapped,
MmGetFlagsPage, MmSetSavedSwapEntryPage, MmGetSavedSwapEntryPage,
MmReferencePage, MmGetReferenceCountPage, MmIsUsablePage,
MmDereferencePage, MmGetLockCountPage, MmLockPage, MmUnlockPage,
MmAllocPage): Changes to use PHYSICAL_ADDRESS type for physical
addresses.
* ntoskrnl/mm/iospace.c (MmMapIoSpace): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/mm/kmap.c (ExAllocatePage, MiZeroPage, MiCopyFromUserPage,
ExAllocatePageWithPhysPage): Changes to use PHYSICAL_ADDRESS type for
physical addresses.
* ntoskrnl/mm/marea.c (MmFreeMemoryArea): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/mm/mdl.c (MmUnlockPages, MmMapLockedPages,
MmProbeAndLockPages): Changes to use PHYSICAL_ADDRESS type for
physical addresses.
* ntoskrnl/mm/mm.c (MmSharedDataPagePhysicalAddress,
MmCommitPagedPoolAddress, MmNotPresentFault): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/mm/mminit.c (MmInitVirtualMemory): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/mm/ncache.c (MmAllocateNonCachedMemory,
MmFreeNonCachedPage): Changes to use PHYSICAL_ADDRESS type for
physical addresses.
* ntoskrnl/mm/npool.c (grow_kernel_pool): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/mm/rmap.c (MmPageOutPhysicalAddress, MmInsertRmap,
MmDeleteAllRmaps, MmDeleteRmap): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/mm/section.c (MiReadPage, MmNotPresentFaultSectionView,
MmAccessFaultSectionView, MmPageOutDeleteMapping,
MmPageOutSectionView, MmFreeSectionPage): Changes to use
PHYSICAL_ADDRESS type for physical addresses.
* ntoskrnl/mm/slab.c (ExGrowSlabCache): Changes to use
PHYSICAL_ADDRESS type for physical address.
* ntoskrnl/mm/virtual.c (MmPageOutVirtualMemory,
MmNotPresentFaultVirtualMemory, MmFreeVirtualMemoryPage): Changes to
use PHYSICAL_ADDRESS type for physical address.
* ntoskrnl/mm/wset.c (MmTrimUserMemory): Changes to use
PHYSICAL_ADDRESS type for physical address.
* ntoskrnl/mm/page.c (Mmi386ReleaseMmInfo, MmCopyMmInfo,
MmGetPhysicalAddressForProcess, MmCreateVirtualMapping,
MmCreateVirtualMappingUnsafe, MmCreateVirtualMappingForProcess,
MmDeleteVirtualMapping): Changes to use PHYSICAL_ADDRESS type for
physical address.
* ntoskrnl/ps/process (PsInitProcessManagment): Changes to use
PHYSICAL_ADDRESS type for physical address.
* ntoskrnl/ps/thread.c (PsAllocateCallbackStack): Changes to use
PHYSICAL_ADDRESS type for physical address.
2002-06-04 David Welch <welch@cwcom.net>
* Lots of change since the ChangeLog was last updated.
svn path=/trunk/; revision=3000
Use ULONG_PTR for physical adresses and PVOID for virtual addresses.
Added several consistency checks in the memory memory manager.
svn path=/trunk/; revision=2946
- Created helper makefile for all targets
- Made most makefiles simpler by using the helper makefile
- Moved build tools into ./tools
Updated installation instructions
svn path=/trunk/; revision=2185
Implemented sequenced lists and lookaside lists.
Started on TCP/IP connection endpoints.
Save process window station in EPROCESS instead of PEB.
NOTICE: please do a make win32k_clean or you might experience a crash
svn path=/trunk/; revision=2036
Updated loadros to boot new kernel
Corrected thread priority bugs
Removed Linux port io
Added system call entry/exit that updates PreviousMode
Changes to allow ntoskrnl to be built without optimization
Updated make system
Added PCR
Most components can be built without special spec file
svn path=/trunk/; revision=1385
Tried to reduce dependancies between layers by moving ntoskrnl's private
header files inside its directory
Removed the need to include windows.h for ddk code
Removed obsolete testing code
svn path=/trunk/; revision=1213