Commit Graph

681 Commits

Author SHA1 Message Date
Alex Ionescu
e0eea608a6 ntoskrnl header cleanups
svn path=/trunk/; revision=17847
2005-09-14 01:44:19 +00:00
Alex Ionescu
e8dcb74344 ntoskrnl header cleanups
svn path=/trunk/; revision=17846
2005-09-14 01:05:50 +00:00
Alex Ionescu
a6f1511ecb ntoskrnl header cleanups
svn path=/trunk/; revision=17845
2005-09-13 23:48:54 +00:00
Alex Ionescu
11272023e5 Part 1 of <many> ntoskrnl header cleanups
svn path=/trunk/; revision=17844
2005-09-13 23:28:21 +00:00
Alex Ionescu
7a5244c46d Some work-in-progress improvements and rethought of system-level code...notable improvemnts till now are: -The KTHREAD alterted flag is now properly set to FALSE during APC delivery during traps, -More support for PKEXCEPTION_FRAME has been added for future PPC/IA64/etc compatibility -Context to/from TrapFrame functions have been greatly fixed to allow for edited frames, special cases, exceptions and also have the necessary support for supporting sanitation based on PreviousMode - KDBG now shows the proper CS/SS at all times, previous hack was removed. - Systemcall code was optimized a bit and the trap code was made a lot more generic so that in can be made into macros (it currently isn't, for debugging purposes). - V86 Mode trap frame bias has now been added to make trap code a lot more generic and shareable in the future. -More support and fixes for future Debugging capabilities have been added. - Random other scalability and stability code. This is still being worked on, syscall.S looks nasty for now (visually)
svn path=/trunk/; revision=17838
2005-09-13 19:33:49 +00:00
Alex Ionescu
b9020b11dd Major refactoring of the exception handling code + misc fixes:
- Fix/add prototypes for RtlCaptureContext, RtlDispatchException and RtlUnwind
	- Fix EXCEPTION_REGISTRATION_RECORD structure and PEXCEPTION_ROUTINE
	- Add w32api excpt.h (based on mingw) with PSDK compatibility fixes
	- Fix seriously broken User-Mode Ldr thunk and APC Callback prototypes
	- Fix KiUserExceptionDispatcher
	- Remove useless NTDLL entrypoint
	- Implement NTDLL Ki* callbacks in ASM
	- Implement RtlCaptureContext
	- Fix RtlRaiseException to handle cases when a user-mode debugger is present
	- Fix RtlRaiseStatus as above, plus set the exception address and capture context
	- Little cleanup of RTL headers
	- Implement RtlpGetStackLimits, RtlpGetExceptionList, RtlpSetExceptionList, RtlpGetExceptionAddress in ASM
	- Fix RtlDispatchException, add cases for exceptions in the DPC stack and validate the validity of the 
exception frames. Add support for exception logging by the global flag. Use TRAP_FRAME/EXCPETION_FRAME instead of 
Context.
	- Fix RtlUnwind logic, support cases where it's called with custom arguments instead of NULL.
	- Reimplement RtlpCaptureContext to work properly, convert exception handler calling functions to INTEL syntax 
and fix some bugs (like checking for the right unwind flag, clearing volatile register values, etc. Also use some 
optimizations to increase speed.
	- Modify some kernel functions (like KeContextToTrapFrame, KiDispatchException, KiInitializeUserApc, etc.) to 
support a PKEXCEPTION_FRAME for future PPC compatibility.
	- Reimplement RtlCaptureUnicodeString/FreeUnicodeString as inlined probe macros and optimize them.
	- Export ExRaiseStatus/Exception as Rtl*
	- Reimplement NtContinue to have more platform-independent code, and to protect and validate user-mode context 
and parameters with SEH.
	- Implement KiRaiseException, add SEH to all user-mode parameters and when copying data to the user-mode stack.
	- Fix KiInitializeUserApc to use KeTrapFrameToContext, to save the debug registers, not to deliver APCs during 
v86 mode, and to protect user-mode stack operations in SEH and probing. Also make it generate the proper stack for the 
user-mode callback. 
	- Implement KiUnexpectedInterrupt and KiCoprocessorError
	- Reimplement NtRaiseException in ASM to take advantage of optimizations due to the trap frame being in the 
stack when called through System call interface.
	- Fix Ntcontinue to respect AlertThread paramter
	- Fix some functiosn to return with KiServiceExit2 instead of KiServiceExit when required/needed
	- Fix KiDispatchException's logic, fix hacks when calling KeUserExceptionDispatcher, use correct context 
flags,...
	- Make NTDLL Ki* callbacks have SEH to protect them and return to kernel-mode with notification of any 
exceptions (the kernel-mode code to handle this isn't written yet though)

svn path=/trunk/; revision=17811
2005-09-11 22:32:20 +00:00
Alex Ionescu
51f0dfd307 - NDK compatibility fixes for MSDDK. Use NTAPI instead of STDCALL, and use NTSYSAPI instead of NTOSAPI.
- Remove some functions/types in NDK that were already documented in DDK/IFS.
- Fixup syscall structures for the table and fix protoype of KeAdd/RemoveServiceDescriptorTable.

svn path=/trunk/; revision=17651
2005-09-05 04:48:20 +00:00
Alex Ionescu
ff6172bd8f - Various fixes to headers, such as fixing some LPC prototypes, adding/correcting some structures, adding some missing definitions, etc...
svn path=/trunk/; revision=17638
2005-09-04 18:00:59 +00:00
Hartmut Birr
37dced9725 Allocated the message reply buffer according to the size of the message.
svn path=/trunk/; revision=17581
2005-08-28 11:58:06 +00:00
Thomas Bluemel
38caf3038e rename IsKernelPointer to IsPointerOffset
svn path=/trunk/; revision=17477
2005-08-22 15:20:49 +00:00
Thomas Bluemel
bd73d35e4d added a macro IsKernelPointer() to test whether a pointer value points to the kernel address space. This is needed because on IA-64 the MSB is not necessarily set for pointers to the kernel address space.
svn path=/trunk/; revision=17474
2005-08-22 13:38:30 +00:00
Thomas Bluemel
5e348c00c1 - use inlined probing macros for basic types
- minor optimizations by comparing the processor mode against KernelMode (==0) instead of UserMode (==1)

svn path=/trunk/; revision=17467
2005-08-21 19:04:23 +00:00
Thomas Bluemel
84f88f6480 use inlined probing macros for basic types
svn path=/trunk/; revision=17466
2005-08-21 17:38:07 +00:00
Thomas Bluemel
6e74d05c08 add macros to probe basic type pointers
svn path=/trunk/; revision=17461
2005-08-21 15:14:36 +00:00
Alex Ionescu
fa4888f2fc Add back MessageData to PQUEUED_MESSAGE. It was accidentally removed
svn path=/trunk/; revision=17424
2005-08-17 18:56:57 +00:00
Alex Ionescu
9f1cf7b990 Remove all non-official LPC structures/defines/hardcoded hacks, and use actual correct sizes and structures.
svn path=/trunk/; revision=17417
2005-08-16 23:05:33 +00:00
Royce Mitchell III
864eea72ca variable to enable per-BCB debugging
svn path=/trunk/; revision=17365
2005-08-13 13:11:59 +00:00
Alex Ionescu
479fa4e4ae - Use correct, documented, LPC Message structure (PORT_MESSAGE). Fix all caller code to use new member names and structure names.
svn path=/trunk/; revision=17275
2005-08-11 02:58:54 +00:00
Alex Ionescu
be97362b23 - Fix DEVICE_NODE definition to remove ROS-only fields
- Move RTL_HEAP_PARAMETERS to umtypes.h
- Fix PROCESS_PRIORITY_CLASS_XXX definitions.
- Use PROCESS_PRIORITY_CLASS_INVALID in process creation code.
- Move and correct EX_PUSH_LOCK definition to ntifs.h
- Define KQUEUE along with KAPC_STATE if ntifs.h is not used, so that we don't force its usage
- Enable usage of EX_QUEUE_WORKER_INFO and EX_WORK_QUEUE without requiring the IFS.
- Fix definition of CsrClientConnectToServer
- Update NDK FIXME list
- Define and use a list of Bus Type GUIDs instead of saving the GUID in a ROS-only field of DEVICE_NODE.
- Use a IRP_MN_QUERY_CAPABILITIES PnP IRP to get the Address of a DeviceNode, intead of saving it inside a ROS-only field.

svn path=/trunk/; revision=17272
2005-08-11 00:01:17 +00:00
Alex Ionescu
61ffdb3516 - Last patch was incomplete, apologies. SVN @ 5AM = bad idea.
- Do not report that ROS is running on 0 active processors, that's a bad idea.
- Actually check the affinity mask set by NtSetInformationThread
- Fix the check in KeSetAffinityThread
- Give a valid affinity to the system thread (corresponding to the active cpu affinity set).

This removes all bugchecks from the kernel32 thread winetest.

svn path=/trunk/; revision=17235
2005-08-09 08:50:57 +00:00
Alex Ionescu
c2a85cd273 - Implement KeQueryBasePriorityThread to return the actual Base Priority Increment (or Saturation Increment) to NtQueryInformationThread. The value win32 works with is actually (usually) the difference between process and thread Base Priorities.
This fixes another WINE test.

svn path=/trunk/; revision=17231
2005-08-09 06:23:16 +00:00
Thomas Bluemel
3ed0977d46 revert my last changes back to Alex's version of ObpCaptureObjectAttributes as I'm being an incompetent ass. This will introduce several vulnerabilities and bugs again.
svn path=/trunk/; revision=17217
2005-08-08 16:58:30 +00:00
Thomas Bluemel
a3abeb83af - reverted ObpCaptureObjectAttributes back to my old implementation (slightly modified and extended) because that one at least does what it's supposed to correctly
svn path=/trunk/; revision=17205
2005-08-08 15:39:35 +00:00
Thomas Bluemel
afcb29cc7c directly translate handles to indexes in ex/handle.c
svn path=/trunk/; revision=17191
2005-08-07 23:43:58 +00:00
Hartmut Birr
6faab780d4 - Changed MmGetContinuousPages from using an alignment to using a boundary.
- Removed MmAllocateContiguousAlignedMemory. 

svn path=/trunk/; revision=17185
2005-08-07 23:07:17 +00:00
Alex Ionescu
3dac092c29 - Remove cid.c
- Do direct handle creation/deletion where needed.

svn path=/trunk/; revision=17182
2005-08-07 22:48:07 +00:00
Alex Ionescu
4c1eb86320 - Completely reimplement NtWaitForMultipleObjects:
- Check for invalid Objectcount and wait type
    - Don't use 2.6KB of stack space (kernel threads only get 4...)
    - Don't call ObReferenceObjectByHandle since it does a lot of superflous checks, continous locking/unlocking and makes us extremly slow for a large wait and also doesn't give us the full flexibility we need.
    - Detect if a Waitall is being done with the same object duplicated.
    - Protect wait with SEH.
- General fixes for all NtWaitXXX:
    - Use DefaultObject from Object Header and remove all previous associated hacks, including the IO_TYPE hack. The DefaultObject will either be NULL, an offset to an internal Object Event, or a pointer to a default event. We handle all three.
    - Guard the KeWaitXXX call with SEH since it can raise exceptions.
- Fix all object type intiailizers regarding DefaultObject.

svn path=/trunk/; revision=17179
2005-08-07 21:29:51 +00:00
Alex Ionescu
b1b87307bb - Initialize more fields when creating an Object Type
- Correct the Pool Charge for Object Types, select a Default Object, always use a security procedure, read global flag for maintaing type lists, set the pool type
- Initialize a Default Wait Object.
- Fix security callback for objects.
- Implement SeDefaultObjectMethod for security callbacks of objects which don't have a custom one.

svn path=/trunk/; revision=17176
2005-08-07 18:38:37 +00:00
Alex Ionescu
1bb6a5ce2c - Remove unused ldr/userldr.c
- Rename LdrLoadInitialProcess to Exp... and move to executive initialization.
- Removed ldr/init.c
- Renamed ldr/sysdll.c functions to Psp (correct naming) and deleted file.
- Renamed SystemDll... ntdll pointers to correct Ke names
- Use direct Ke names instead of going through an API call.
- Make ExpInit... functions STDCALL

svn path=/trunk/; revision=17053
2005-08-05 03:44:24 +00:00
Filip Navara
f4ff4e648a Fix a typo. Thanks to Hervé Poussineau for noticing.
svn path=/trunk/; revision=16946
2005-08-01 11:46:30 +00:00
Filip Navara
9b42911e3d Add pool type masks and use them.
svn path=/trunk/; revision=16945
2005-08-01 11:33:15 +00:00
Filip Navara
160b65f87e Setup quota blocks for processes.
svn path=/trunk/; revision=16943
2005-08-01 11:21:42 +00:00
Filip Navara
f89cc27ede Cleanup SID initialization and fill all SeExports fields.
svn path=/trunk/; revision=16936
2005-08-01 09:05:20 +00:00
Alex Ionescu
eb86553bed Decrease quantum during wait and during no-wait... mentionned by Shmuel Baron
svn path=/trunk/; revision=16907
2005-07-30 23:43:45 +00:00
Filip Navara
ca071d7417 - Replace MODULE_OBJECT with LDR_DATA_TABLE_ENTRY.
- Export PsGetCurrentThread and PsGetCurrentProcess.

svn path=/trunk/; revision=16894
2005-07-30 16:25:35 +00:00
Alex Ionescu
b8f8df7565 - Various Microsoft DDK/PSDK compatibility fixes and some MSVC stuff too.
- Fix PSECURITY_DESCRIPTOR_RELATIVE names.c
 - Don't use rtltypes.h as a replacement for normal stdlib headers.
 - Fix a HAL header fixme.

svn path=/trunk/; revision=16744
2005-07-26 14:00:45 +00:00
Alex Ionescu
7669e8fd6d - Disable APC Queuing & Flush APC queues during thread shutdown.
- Detect if Kernel APCs were pending during thread shutdown.
 - Call Lego Routine, if registered, during thread shutdown.

svn path=/trunk/; revision=16705
2005-07-23 17:40:48 +00:00
Thomas Bluemel
7aad44a4f5 - replaced IopCreateUnicodeString with RtlCreateUnicodeString
- allocate the DriverName from paged pool

svn path=/trunk/; revision=16694
2005-07-22 22:40:54 +00:00
Thomas Bluemel
9f2bf70ddb removed MmCopyFromCaller and MmCopyToCaller and depend on SEH instead
svn path=/trunk/; revision=16691
2005-07-22 20:52:31 +00:00
Thomas Bluemel
f479dd02aa - Removed the Rtlp* string functions from the shared rtl library since they don't make sense in umode
- Moved RtlpCreateUnicodeString to ntoskrnl for now, it however is depreciated but still used in various places
- Added RtlpAllocateMemory and RtlpFreeMemory for rtl memory allocations (from paged pool in ntoskrnl and from the process heap in ntdll) that replace the ExAllocatePool* and ExFreePool implementations in ntdll

svn path=/trunk/; revision=16673
2005-07-20 23:35:59 +00:00
Alex Ionescu
0452118dc0 - Created include/libs and moved all library headers there.
- Created include/drivers and moved driver headers there.
 - Brought back core.h as diskdump.h, and re-enabled diskdump...it seems even though I was told it doesn't work, it's still very much used.

svn path=/trunk/; revision=16657
2005-07-20 03:42:05 +00:00
Alex Ionescu
832b1aa035 - Move asm.h to NDK.
svn path=/trunk/; revision=16655
2005-07-20 00:33:06 +00:00
Alex Ionescu
22ef1b4558 - Update ASM header file with more offsets.
svn path=/trunk/; revision=16649
2005-07-19 20:56:38 +00:00
Hartmut Birr
d3493295ab Request the APC_INTERRUPT for the correct processor on smp machines.
svn path=/trunk/; revision=16625
2005-07-17 18:27:46 +00:00
Eric Kohl
8655ed62ef Move undocumented GUIDs to a new NDK header file.
svn path=/trunk/; revision=16464
2005-07-06 20:20:02 +00:00
Filip Navara
2773203033 Kernel base address and system space start can be distinct addresses, so use KERNEL_BASE and MmSystemRangeStart accordingly in the code.
svn path=/trunk/; revision=16447
2005-07-06 08:20:26 +00:00
Eric Kohl
89ac547ef5 - Move definitions from ntpnp.h into NDK and DDK
- Remove ntpnp.h

svn path=/trunk/; revision=16393
2005-07-03 15:21:19 +00:00
Alex Ionescu
2125679164 Move some internal headers to /reactos, set it as a default include path, move pseh and elf headers to their respective directories
svn path=/trunk/; revision=16358
2005-06-30 22:40:36 +00:00
Alex Ionescu
493ca2fe71 remove roscfg.h
svn path=/trunk/; revision=16353
2005-06-30 16:52:26 +00:00
Steven Edwards
9a714d7f55 remove inclusion of basetsd.h, I did not mean to commit this
svn path=/trunk/; revision=16316
2005-06-28 22:56:09 +00:00