[ros-dev] [ros-diffs] [tkreuzer] 34970: - update KPCR and KIPCR - add KeGetPcr() and update KeGetCurrentProcessorNumber
Alex Ionescu
ionucu at videotron.ca
Fri Aug 1 06:49:29 CEST 2008
There is no "KIPCR". It's a ReactOS hack to support the WDK.
On 31-Jul-08, at 12:44 PM, Timo Kreuzer wrote:
> You have probably noticed it's in the KIPCR, not the KPCR. I could
> not find KIPCR documented anywhere, but maybe you can give me a hint
> where to find one.
>
> Thanks,
> Timo
>
> Alex Ionescu schrieb:
>>
>> Kinda curious why you have "unknowns" in a documented structure.
>>
>> On 30-Jul-08, at 7:17 PM, tkreuzer at svn.reactos.org wrote:
>>
>>
>>> Author: tkreuzer
>>> Date: Wed Jul 30 21:16:59 2008
>>> New Revision: 34970
>>>
>>> URL: http://svn.reactos.org/svn/reactos?rev=34970&view=rev
>>> Log:
>>> - update KPCR and KIPCR
>>> - add KeGetPcr() and update KeGetCurrentProcessorNumber
>>>
>>> Modified:
>>> branches/ros-amd64-bringup/reactos/include/ddk/winddk.h
>>> branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h
>>>
>>> Modified: branches/ros-amd64-bringup/reactos/include/ddk/winddk.h
>>> URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/include/ddk/winddk.h?rev=34970&r1=34969&r2=34970&view=diff
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> ====================================================================
>>> --- branches/ros-amd64-bringup/reactos/include/ddk/winddk.h
>>> [iso-8859-1] (original)
>>> +++ branches/ros-amd64-bringup/reactos/include/ddk/winddk.h
>>> [iso-8859-1] Wed Jul 30 21:16:59 2008
>>> @@ -5516,23 +5516,38 @@
>>>
>>> typedef struct _KPCR
>>> {
>>> - NT_TIB NtTib;
>>> - struct _KPRCB *CurrentPrcb;
>>> - ULONG64 SavedRcx;
>>> - ULONG64 SavedR11;
>>> + union
>>> + {
>>> + NT_TIB NtTib;
>>> + struct
>>> + {
>>> + union _KGDTENTRY64 *GdtBase;
>>> + struct _KTSS64 *TssBase;
>>> + ULONG64 UserRsp;
>>> + struct _KPCR *Self;
>>> + struct _KPRCB *CurrentPrcb;
>>> + PKSPIN_LOCK_QUEUE LockArray;
>>> + PVOID Used_Self;
>>> + };
>>> + };
>>> + union _KIDTENTRY64 *IdtBase;
>>> + ULONG64 Unused[2];
>>> KIRQL Irql;
>>> UCHAR SecondLevelCacheAssociativity;
>>> - UCHAR Number;
>>> + UCHAR ObsoleteNumber;
>>> UCHAR Fill0;
>>> - ULONG Irr;
>>> - ULONG IrrActive;
>>> - ULONG Idr;
>>> + ULONG Unused0[3];
>>> USHORT MajorVersion;
>>> USHORT MinorVersion;
>>> ULONG StallScaleFactor;
>>> - union _KIDTENTRY64 *IdtBase;
>>> - union _KGDTENTRY64 *GdtBase;
>>> - struct _KTSS64 *TssBase;
>>> + PVOID Unused1[3];
>>> + ULONG KernelReserved[15];
>>> + ULONG SecondLevelCacheSize;
>>> + ULONG HalReserved[16];
>>> + ULONG Unused2;
>>> + PVOID KdVersionBlock;
>>> + PVOID Unused3;
>>> + ULONG PcrAlign1[24];
>>> } KPCR, *PKPCR;
>>>
>>> typedef struct _KFLOATING_SAVE {
>>> @@ -5552,10 +5567,17 @@
>>> VOID);
>>>
>>> FORCEINLINE
>>> +PKPCR
>>> +KeGetPcr(VOID)
>>> +{
>>> + return (PKPCR)__readgsqword(FIELD_OFFSET(KPCR, Self));
>>> +}
>>> +
>>> +FORCEINLINE
>>> ULONG
>>> KeGetCurrentProcessorNumber(VOID)
>>> {
>>> - return (ULONG)__readgsbyte(FIELD_OFFSET(KPCR, Number));
>>> + return (ULONG)__readgsword(0x184);
>>> }
>>>
>>> #elif defined(__PowerPC__)
>>>
>>> Modified: branches/ros-amd64-bringup/reactos/include/ndk/amd64/
>>> ketypes.h
>>> URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h?rev=34970&r1=34969&r2=34970&view=diff
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> ====================================================================
>>> --- branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h
>>> [iso-8859-1] (original)
>>> +++ branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h
>>> [iso-8859-1] Wed Jul 30 21:16:59 2008
>>> @@ -635,41 +635,42 @@
>>> NT_TIB NtTib;
>>> struct
>>> {
>>> - struct _EXCEPTION_REGISTRATION_RECORD
>>> *Used_ExceptionList;
>>> - PVOID Used_StackBase;
>>> - PVOID PerfGlobalGroupMask;
>>> - PVOID TssCopy;
>>> - ULONG ContextSwitches;
>>> - KAFFINITY SetMemberCopy;
>>> + union _KGDTENTRY64 *GdtBase;
>>> + struct _KTSS64 *TssBase;
>>> + ULONG64 UserRsp;
>>> + struct _KPCR *Self;
>>> + struct _KPRCB *CurrentPrcb;
>>> + PKSPIN_LOCK_QUEUE LockArray;
>>> PVOID Used_Self;
>>> };
>>> };
>>> - struct _KPCR *Self;
>>> - struct _KPRCB *Prcb;
>>> + union _KIDTENTRY64 *IdtBase;
>>> + ULONG64 Unused[2];
>>> KIRQL Irql;
>>> - ULONG IRR;
>>> - ULONG IrrActive;
>>> - ULONG IDR;
>>> - PVOID KdVersionBlock;
>>> - PKIDTENTRY IDT;
>>> - PKGDTENTRY GDT;
>>> - struct _KTSS *TSS;
>>> + UCHAR SecondLevelCacheAssociativity;
>>> + UCHAR ObsoleteNumber;
>>> + UCHAR Fill0;
>>> + ULONG Unused0[3];
>>> USHORT MajorVersion;
>>> USHORT MinorVersion;
>>> - KAFFINITY SetMember;
>>> ULONG StallScaleFactor;
>>> - UCHAR SparedUnused;
>>> - UCHAR Number;
>>> - UCHAR Reserved;
>>> - UCHAR L2CacheAssociativity;
>>> - ULONG VdmAlert;
>>> - ULONG KernelReserved[14];
>>> + PVOID Unused1[3];
>>> + ULONG KernelReserved[15];
>>> ULONG SecondLevelCacheSize;
>>> ULONG HalReserved[16];
>>> - ULONG InterruptMode;
>>> - UCHAR Spare1;
>>> - ULONG KernelReserved2[17];
>>> - KPRCB PrcbData;
>>> + ULONG Unused2;
>>> + ULONG Fill1;
>>> + PVOID KdVersionBlock; // 0x108
>>> + PVOID Unused3;
>>> + ULONG PcrAlign1[24];
>>> +
>>> + ULONG Unknown1; // 0x178
>>> + ULONG Unknown2;
>>> + ULONG Unknown3;
>>> + USHORT CpuNumber; // 0x184
>>> + // hack:
>>> + ULONG ContextSwitches;
>>> +
>>> } KIPCR, *PKIPCR;
>>> #pragma pack(pop)
>>>
>>>
>>>
>> Best regards,
>> Alex Ionescu
>>
>> _______________________________________________
>> Ros-dev mailing list
>> Ros-dev at reactos.org
>> http://www.reactos.org/mailman/listinfo/ros-dev
>>
>>
>
> _______________________________________________
> Ros-dev mailing list
> Ros-dev at reactos.org
> http://www.reactos.org/mailman/listinfo/ros-dev
Best regards,
Alex Ionescu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-dev/attachments/20080731/6f304e35/attachment-0001.html
More information about the Ros-dev
mailing list