ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
May
April
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
May 2005
----- 2025 -----
May 2025
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
26 participants
814 discussions
Start a n
N
ew thread
[gvg] 15430: For Xen, setup paging the way the kernel wants it and
by gvg@svn.reactos.com
For Xen, setup paging the way the kernel wants it and transfer control to the kernel Modified: branches/xen/reactos/boot/freeldr/freeldr/arch/i386/i386boot.c Modified: branches/xen/reactos/boot/freeldr/freeldr/arch/i386/i386boot.h Added: branches/xen/reactos/boot/freeldr/freeldr/arch/i386/i386mem.h Modified: branches/xen/reactos/boot/freeldr/freeldr/arch/i386/machxen.h Modified: branches/xen/reactos/boot/freeldr/freeldr/arch/i386/mb.S Modified: branches/xen/reactos/boot/freeldr/freeldr/arch/
…
[View More]
i386/xenboot.c Modified: branches/xen/reactos/boot/freeldr/freeldr/arch/i386/xenmem.c _____ Modified: branches/xen/reactos/boot/freeldr/freeldr/arch/i386/i386boot.c --- branches/xen/reactos/boot/freeldr/freeldr/arch/i386/i386boot.c 2005-05-20 08:06:27 UTC (rev 15429) +++ branches/xen/reactos/boot/freeldr/freeldr/arch/i386/i386boot.c 2005-05-20 10:33:27 UTC (rev 15430) @@ -14,33 +14,22 @@ #include <debug.h> #include "i386boot.h" +#include "i386mem.h" -/* Bits to shift to convert a Virtual Address into an Offset in the Page Table */ -#define PFN_SHIFT 12 - -/* Bits to shift to convert a Virtual Address into an Offset in the Page Directory */ -#define PDE_SHIFT 20 -#define PDE_SHIFT_PAE 18 - - -/* Converts a Phsyical Address Pointer into a Page Frame Number */ -#define PaPtrToPfn(p) \ - (((ULONG_PTR)&p) >> PFN_SHIFT) - -/* Converts a Phsyical Address into a Page Frame Number */ -#define PaToPfn(p) \ - ((p) >> PFN_SHIFT) - #define STARTUP_BASE 0xF0000000 #define HYPERSPACE_BASE 0xF0800000 #define APIC_BASE 0xFEC00000 +#ifdef XEN_VER +#define KPCR_BASE 0xFB000000 +#else #define KPCR_BASE 0xFF000000 +#endif #define LowMemPageTableIndex 0 -#define StartupPageTableIndex (STARTUP_BASE >> 20) / sizeof(HARDWARE_PTE_X86) -#define HyperspacePageTableIndex (HYPERSPACE_BASE >> 20) / sizeof(HARDWARE_PTE_X86) -#define KpcrPageTableIndex (KPCR_BASE >> 20) / sizeof(HARDWARE_PTE_X86) -#define ApicPageTableIndex (APIC_BASE >> 20) / sizeof(HARDWARE_PTE_X86) +#define StartupPageTableIndex (STARTUP_BASE >> PDN_SHIFT) +#define HyperspacePageTableIndex (HYPERSPACE_BASE >> PDN_SHIFT) +#define KpcrPageTableIndex (KPCR_BASE >> PDN_SHIFT) +#define ApicPageTableIndex (APIC_BASE >> PDN_SHIFT) #define LowMemPageTableIndexPae 0 #define StartupPageTableIndexPae (STARTUP_BASE >> 21) @@ -48,83 +37,32 @@ #define KpcrPageTableIndexPae (KPCR_BASE >> 21) #define ApicPageTableIndexPae (APIC_BASE >> 21) - -#define KernelEntryPoint (KernelEntry - KERNEL_BASE_PHYS) + KernelBase - -/* Unrelocated Kernel Base in Virtual Memory */ -extern ULONG_PTR KernelBase; - -/* Kernel Entrypoint in Physical Memory */ -extern ULONG_PTR KernelEntry; - -/* Page Directory and Tables for non-PAE Systems */ -extern ULONG_PTR startup_pagedirectory; -extern ULONG_PTR lowmem_pagetable; -extern ULONG_PTR kernel_pagetable; -extern ULONG_PTR hyperspace_pagetable; -extern ULONG_PTR _pae_pagedirtable; -extern ULONG_PTR apic_pagetable; -extern ULONG_PTR kpcr_pagetable; - -/* Page Directory and Tables for PAE Systems */ -extern ULONG_PTR startup_pagedirectorytable_pae; -extern ULONG_PTR startup_pagedirectory_pae; -extern ULONG_PTR lowmem_pagetable_pae; -extern ULONG_PTR kernel_pagetable_pae; -extern ULONG_PTR hyperspace_pagetable_pae; -extern ULONG_PTR pagedirtable_pae; -extern ULONG_PTR apic_pagetable_pae; -extern ULONG_PTR kpcr_pagetable_pae; - -typedef struct _HARDWARE_PTE_X86 { - ULONG Valid : 1; - ULONG Write : 1; - ULONG Owner : 1; - ULONG WriteThrough : 1; - ULONG CacheDisable : 1; - ULONG Accessed : 1; - ULONG Dirty : 1; - ULONG LargePage : 1; - ULONG Global : 1; - ULONG CopyOnWrite : 1; - ULONG Prototype : 1; - ULONG reserved : 1; - ULONG PageFrameNumber : 20; -} HARDWARE_PTE_X86, *PHARDWARE_PTE_X86; - -typedef struct _HARDWARE_PTE_X64 { - ULONG Valid : 1; - ULONG Write : 1; - ULONG Owner : 1; - ULONG WriteThrough : 1; - ULONG CacheDisable : 1; - ULONG Accessed : 1; - ULONG Dirty : 1; - ULONG LargePage : 1; - ULONG Global : 1; - ULONG CopyOnWrite : 1; - ULONG Prototype : 1; - ULONG reserved : 1; - ULONG PageFrameNumber : 20; - ULONG reserved2 : 31; - ULONG NoExecute : 1; -} HARDWARE_PTE_X64, *PHARDWARE_PTE_X64; - -typedef struct _PAGE_DIRECTORY_X86 { - HARDWARE_PTE_X86 Pde[1024]; -} PAGE_DIRECTORY_x86, *PPAGE_DIRECTORY_X86; - -typedef struct _PAGE_DIRECTORY_X64 { - HARDWARE_PTE_X64 Pde[2048]; -} PAGE_DIRECTORY_X64, *PPAGE_DIRECTORY_X64; - -typedef struct _PAGE_DIRECTORY_TABLE_X64 { - HARDWARE_PTE_X64 Pde[4]; -} PAGE_DIRECTORY_TABLE_X64, *PPAGE_DIRECTORY_TABLE_X64; - /* FUNCTIONS *****************************************************************/ /*++ + * i386BootAddrToPfn + * INTERNAL + * + * Translate an address to a page frame number + * + * Params: + * Addr - address to translate + * + * Returns: + * Frame number. + * + * Remarks: + * None. + * + *--*/ +ULONG +STDCALL +i386BootAddrToPfn(ULONG_PTR Addr) +{ + return PaToPfn(Addr); +} + +/*++ * i386BootStartup * INTERNAL * @@ -156,7 +94,7 @@ PaeModeEnabled = i386BootGetPaeMode(); /* Initialize the page directory */ - i386BootSetupPageDirectory(PaeModeEnabled); + i386BootSetupPageDirectory(PaeModeEnabled, TRUE, i386BootAddrToPfn); /* Initialize Paging, Write-Protection and Load NTOSKRNL */ i386BootSetupPae(PaeModeEnabled, Magic); @@ -257,7 +195,8 @@ *--*/ VOID FASTCALL -i386BootSetupPageDirectory(BOOLEAN PaeModeEnabled) +i386BootSetupPageDirectory(BOOLEAN PaeModeEnabled, BOOLEAN SetupApic, + ULONG (STDCALL *AddrToPfn)(ULONG_PTR Addr)) { PPAGE_DIRECTORY_X86 PageDir; PPAGE_DIRECTORY_TABLE_X64 PageDirTablePae; @@ -369,7 +308,7 @@ } else { /* Get the Kernel Table Index */ - KernelPageTableIndex = (KernelBase >> PDE_SHIFT) / sizeof(HARDWARE_PTE_X86); + KernelPageTableIndex = KernelBase >> PDN_SHIFT; /* Get the Startup Page Directory */ PageDir = (PPAGE_DIRECTORY_X86)&startup_pagedirectory; @@ -377,35 +316,37 @@ /* Set up the Low Memory PDE */ PageDir->Pde[LowMemPageTableIndex].Valid = 1; PageDir->Pde[LowMemPageTableIndex].Write = 1; - PageDir->Pde[LowMemPageTableIndex].PageFrameNumber = PaPtrToPfn(lowmem_pagetable); + PageDir->Pde[LowMemPageTableIndex].PageFrameNumber = (*AddrToPfn)((ULONG_PTR) &lowmem_pagetable); /* Set up the Kernel PDEs */ PageDir->Pde[KernelPageTableIndex].Valid = 1; PageDir->Pde[KernelPageTableIndex].Write = 1; - PageDir->Pde[KernelPageTableIndex].PageFrameNumber = PaPtrToPfn(kernel_pagetable); + PageDir->Pde[KernelPageTableIndex].PageFrameNumber = (*AddrToPfn)((ULONG_PTR) &kernel_pagetable); PageDir->Pde[KernelPageTableIndex + 1].Valid = 1; PageDir->Pde[KernelPageTableIndex + 1].Write = 1; - PageDir->Pde[KernelPageTableIndex + 1].PageFrameNumber = PaPtrToPfn(kernel_pagetable + 4096); + PageDir->Pde[KernelPageTableIndex + 1].PageFrameNumber = (*AddrToPfn)((ULONG_PTR) &kernel_pagetable + 4096); /* Set up the Startup PDE */ PageDir->Pde[StartupPageTableIndex].Valid = 1; PageDir->Pde[StartupPageTableIndex].Write = 1; - PageDir->Pde[StartupPageTableIndex].PageFrameNumber = PaPtrToPfn(startup_pagedirectory); + PageDir->Pde[StartupPageTableIndex].PageFrameNumber = (*AddrToPfn)((LONG_PTR) &startup_pagedirectory); /* Set up the Hyperspace PDE */ PageDir->Pde[HyperspacePageTableIndex].Valid = 1; PageDir->Pde[HyperspacePageTableIndex].Write = 1; - PageDir->Pde[HyperspacePageTableIndex].PageFrameNumber = PaPtrToPfn(hyperspace_pagetable); + PageDir->Pde[HyperspacePageTableIndex].PageFrameNumber = (*AddrToPfn)((LONG_PTR) &hyperspace_pagetable); /* Set up the Apic PDE */ - PageDir->Pde[ApicPageTableIndex].Valid = 1; - PageDir->Pde[ApicPageTableIndex].Write = 1; - PageDir->Pde[ApicPageTableIndex].PageFrameNumber = PaPtrToPfn(apic_pagetable); + if (SetupApic) { + PageDir->Pde[ApicPageTableIndex].Valid = 1; + PageDir->Pde[ApicPageTableIndex].Write = 1; + PageDir->Pde[ApicPageTableIndex].PageFrameNumber = (*AddrToPfn)((LONG_PTR) &apic_pagetable); + } /* Set up the KPCR PDE */ PageDir->Pde[KpcrPageTableIndex].Valid = 1; PageDir->Pde[KpcrPageTableIndex].Write = 1; - PageDir->Pde[KpcrPageTableIndex].PageFrameNumber = PaPtrToPfn(kpcr_pagetable); + PageDir->Pde[KpcrPageTableIndex].PageFrameNumber = (*AddrToPfn)((LONG_PTR) &kpcr_pagetable); /* Set up Low Memory PTEs */ PageDir = (PPAGE_DIRECTORY_X86)&lowmem_pagetable; @@ -414,7 +355,7 @@ PageDir->Pde[i].Valid = 1; PageDir->Pde[i].Write = 1; PageDir->Pde[i].Owner = 1; - PageDir->Pde[i].PageFrameNumber = PaToPfn(i * PAGE_SIZE); + PageDir->Pde[i].PageFrameNumber = (*AddrToPfn)(i * PAGE_SIZE); } /* Set up Kernel PTEs */ @@ -423,27 +364,29 @@ PageDir->Pde[i].Valid = 1; PageDir->Pde[i].Write = 1; - PageDir->Pde[i].PageFrameNumber = PaToPfn(KERNEL_BASE_PHYS + i * PAGE_SIZE); + PageDir->Pde[i].PageFrameNumber = (*AddrToPfn)(KERNEL_BASE_PHYS + i * PAGE_SIZE); } /* Set up APIC PTEs */ - PageDir = (PPAGE_DIRECTORY_X86)&apic_pagetable; - PageDir->Pde[0].Valid = 1; - PageDir->Pde[0].Write = 1; - PageDir->Pde[0].CacheDisable = 1; - PageDir->Pde[0].WriteThrough = 1; - PageDir->Pde[0].PageFrameNumber = PaToPfn(APIC_BASE); - PageDir->Pde[0x200].Valid = 1; - PageDir->Pde[0x200].Write = 1; - PageDir->Pde[0x200].CacheDisable = 1; - PageDir->Pde[0x200].WriteThrough = 1; - PageDir->Pde[0x200].PageFrameNumber = PaToPfn(APIC_BASE + KERNEL_BASE_PHYS); + if (SetupApic) { + PageDir = (PPAGE_DIRECTORY_X86)&apic_pagetable; + PageDir->Pde[0].Valid = 1; + PageDir->Pde[0].Write = 1; + PageDir->Pde[0].CacheDisable = 1; + PageDir->Pde[0].WriteThrough = 1; + PageDir->Pde[0].PageFrameNumber = (*AddrToPfn)(APIC_BASE); + PageDir->Pde[0x200].Valid = 1; + PageDir->Pde[0x200].Write = 1; + PageDir->Pde[0x200].CacheDisable = 1; + PageDir->Pde[0x200].WriteThrough = 1; + PageDir->Pde[0x200].PageFrameNumber = (*AddrToPfn)(APIC_BASE + KERNEL_BASE_PHYS); + } /* Set up KPCR PTEs */ PageDir = (PPAGE_DIRECTORY_X86)&kpcr_pagetable; PageDir->Pde[0].Valid = 1; PageDir->Pde[0].Write = 1; - PageDir->Pde[0].PageFrameNumber = 1; + PageDir->Pde[0].PageFrameNumber = (*AddrToPfn)(PAGE_SIZE); } return; } _____ Modified: branches/xen/reactos/boot/freeldr/freeldr/arch/i386/i386boot.h --- branches/xen/reactos/boot/freeldr/freeldr/arch/i386/i386boot.h 2005-05-20 08:06:27 UTC (rev 15429) +++ branches/xen/reactos/boot/freeldr/freeldr/arch/i386/i386boot.h 2005-05-20 10:33:27 UTC (rev 15430) @@ -1,6 +1,33 @@ #ifndef I386BOOT_H_INCLUDED #define I386BOOT_H_INCLUDED +#define KernelEntryPoint (KernelEntry - KERNEL_BASE_PHYS) + KernelBase + +/* Unrelocated Kernel Base in Virtual Memory */ +extern ULONG_PTR KernelBase; + +/* Kernel Entrypoint in Physical Memory */ +extern ULONG_PTR KernelEntry; + +/* Page Directory and Tables for non-PAE Systems */ +extern ULONG_PTR startup_pagedirectory; +extern ULONG_PTR lowmem_pagetable; +extern ULONG_PTR kernel_pagetable; +extern ULONG_PTR hyperspace_pagetable; +extern ULONG_PTR _pae_pagedirtable; +extern ULONG_PTR apic_pagetable; +extern ULONG_PTR kpcr_pagetable; + +/* Page Directory and Tables for PAE Systems */ +extern ULONG_PTR startup_pagedirectorytable_pae; +extern ULONG_PTR startup_pagedirectory_pae; +extern ULONG_PTR lowmem_pagetable_pae; +extern ULONG_PTR kernel_pagetable_pae; +extern ULONG_PTR hyperspace_pagetable_pae; +extern ULONG_PTR pagedirtable_pae; +extern ULONG_PTR apic_pagetable_pae; +extern ULONG_PTR kpcr_pagetable_pae; + VOID STDCALL i386BootStartup(ULONG Magic); @@ -15,6 +42,7 @@ VOID FASTCALL -i386BootSetupPageDirectory(BOOLEAN PaeModeEnabled); +i386BootSetupPageDirectory(BOOLEAN PaeModeEnabled, BOOLEAN SetupApic, + ULONG (STDCALL *AddrToPfn)(ULONG_PTR Addr)); #endif /* ! defined I386BOOT_H_INCLUDED */ _____ Copied: branches/xen/reactos/boot/freeldr/freeldr/arch/i386/i386mem.h (from rev 15391, branches/xen/reactos/boot/freeldr/freeldr/arch/i386/i386boot.c) --- branches/xen/reactos/boot/freeldr/freeldr/arch/i386/i386boot.c 2005-05-17 22:15:18 UTC (rev 15391) +++ branches/xen/reactos/boot/freeldr/freeldr/arch/i386/i386mem.h 2005-05-20 10:33:27 UTC (rev 15430) @@ -0,0 +1,84 @@ +#ifndef I386MEM_H_INCLUDED +#define I386MEM_H_INCLUDED + +/* Bits to shift to convert a Virtual Address into an Offset in the Page Table */ +#define PFN_SHIFT 12 + +/* Bits to shift to convert a Virtual Address into an Offset in the Page Directory */ +#define PDN_SHIFT 22 + + +/* Converts a Phsyical Address Pointer into a Page Frame Number */ +#define PaPtrToPfn(p) \ + (((ULONG_PTR)&p) >> PFN_SHIFT) + +/* Converts a Phsyical Address into a Page Frame Number */ +#define PaToPfn(p) \ + ((p) >> PFN_SHIFT) + +typedef struct _HARDWARE_PTE_X86 { + union { + struct { + ULONG Valid : 1; + ULONG Write : 1; + ULONG Owner : 1; + ULONG WriteThrough : 1; + ULONG CacheDisable : 1; + ULONG Accessed : 1; + ULONG Dirty : 1; + ULONG LargePage : 1; + ULONG Global : 1; + ULONG CopyOnWrite : 1; + ULONG Prototype : 1; + ULONG reserved : 1; + ULONG PageFrameNumber : 20; + }; + ULONG Val; + }; +} HARDWARE_PTE_X86, *PHARDWARE_PTE_X86, HARDWARE_PDE_X86, *PHARDWARE_PDE_X86; + +typedef struct _HARDWARE_PTE_X64 { + ULONG Valid : 1; + ULONG Write : 1; + ULONG Owner : 1; + ULONG WriteThrough : 1; + ULONG CacheDisable : 1; + ULONG Accessed : 1; + ULONG Dirty : 1; + ULONG LargePage : 1; + ULONG Global : 1; + ULONG CopyOnWrite : 1; + ULONG Prototype : 1; + ULONG reserved : 1; + ULONG PageFrameNumber : 20; + ULONG reserved2 : 31; + ULONG NoExecute : 1; +} HARDWARE_PTE_X64, *PHARDWARE_PTE_X64; + +#define PTRS_PER_PD_X86 (PAGE_SIZE / sizeof(HARDWARE_PDE_X86)) +#define PTRS_PER_PT_X86 (PAGE_SIZE / sizeof(HARDWARE_PTE_X86)) + +/* Page Directory Index of a given virtual address */ +#define PD_IDX(Va) ((((ULONG_PTR) Va) >> PDN_SHIFT) & (PTRS_PER_PD_X86 - 1)) +/* Page Table Index of a give virtual address */ +#define PT_IDX(Va) ((((ULONG_PTR) Va) >> PFN_SHIFT) & (PTRS_PER_PT_X86 - 1)) +/* Convert a Page Directory or Page Table entry to a (machine) address */ +#define PAGE_MASK (~(PAGE_SIZE-1)) + +typedef struct _PAGE_DIRECTORY_X86 { + HARDWARE_PDE_X86 Pde[PTRS_PER_PD_X86]; +} PAGE_DIRECTORY_X86, *PPAGE_DIRECTORY_X86; + +typedef struct _PAGE_TABLE_X86 { + HARDWARE_PTE_X86 Pte[PTRS_PER_PT_X86]; +} PAGE_TABLE_X86, *PPAGE_TABLE_X86; + +typedef struct _PAGE_DIRECTORY_X64 { + HARDWARE_PTE_X64 Pde[2048]; +} PAGE_DIRECTORY_X64, *PPAGE_DIRECTORY_X64; + +typedef struct _PAGE_DIRECTORY_TABLE_X64 { + HARDWARE_PTE_X64 Pde[4]; +} PAGE_DIRECTORY_TABLE_X64, *PPAGE_DIRECTORY_TABLE_X64; + +#endif /* ! defined I386MEM_H_INCLUDED */ _____ Modified: branches/xen/reactos/boot/freeldr/freeldr/arch/i386/machxen.h --- branches/xen/reactos/boot/freeldr/freeldr/arch/i386/machxen.h 2005-05-20 08:06:27 UTC (rev 15429) +++ branches/xen/reactos/boot/freeldr/freeldr/arch/i386/machxen.h 2005-05-20 10:33:27 UTC (rev 15430) @@ -21,9 +21,8 @@ #ifndef __I386_MACHXEN_H_ #define __I386_MACHXEN_H_ -#ifndef __MEMORY_H +#include "i386mem.h" #include "mm.h" -#endif #include <rosxen.h> #include <xen.h> @@ -74,6 +73,7 @@ VOID XenMemInit(start_info_t *StartInfo); u32 XenMemVirtualToMachine(void *VirtualAddress); int XenMemGrantForeignAccess(domid_t DomId, void *VirtAddr, BOOL ReadOnly); +VOID XenMemInstallPageDir(PPAGE_DIRECTORY_X86 NewPageDir); BOOL XenDiskReadLogicalSectors(ULONG DriveNumber, ULONGLONG SectorNumber, ULONG SectorCount, PVOID Buffer); BOOL XenDiskGetPartitionEntry(ULONG DriveNumber, ULONG PartitionNumber, PPARTITION_TABLE_ENTRY PartitionTableEntry); _____ Modified: branches/xen/reactos/boot/freeldr/freeldr/arch/i386/mb.S --- branches/xen/reactos/boot/freeldr/freeldr/arch/i386/mb.S 2005-05-20 08:06:27 UTC (rev 15429) +++ branches/xen/reactos/boot/freeldr/freeldr/arch/i386/mb.S 2005-05-20 10:33:27 UTC (rev 15430) @@ -61,6 +61,7 @@ .endr .bss + .align 4096 PageDirectoryStart: startup_pagedirectory: .fill 4096, 1, 0 _____ Modified: branches/xen/reactos/boot/freeldr/freeldr/arch/i386/xenboot.c --- branches/xen/reactos/boot/freeldr/freeldr/arch/i386/xenboot.c 2005-05-20 08:06:27 UTC (rev 15429) +++ branches/xen/reactos/boot/freeldr/freeldr/arch/i386/xenboot.c 2005-05-20 10:33:27 UTC (rev 15430) @@ -22,17 +22,24 @@ #include "machine.h" #include "machxen.h" +static ULONG STDCALL +XenBootAddrToPfn(ULONG_PTR Addr) +{ + return (ULONG) XenMemVirtualToMachine((void *) Addr) >> PAGE_SHIFT; +} + VOID XenBootReactOS(VOID) - { +{ BOOLEAN PaeModeEnabled; + ASMCODE PagedJump; + /* Clear screen and make sure all console output is written */ XenVideoClearScreen(0x07); + XenConsFlushWait(); /* Disable events */ -#ifdef TODO XenEvtchnDisableEvents(); -#endif /* Re-initalize EFLAGS */ Ke386EraseFlags(); @@ -41,10 +48,14 @@ PaeModeEnabled = FALSE; /* Initialize the page directory */ - i386BootSetupPageDirectory(PaeModeEnabled); + i386BootSetupPageDirectory(PaeModeEnabled, FALSE, XenBootAddrToPfn); - /* Initialize Paging, Write-Protection and Load NTOSKRNL */ - i386BootSetupPae(PaeModeEnabled, 0x2badb002); - } + /* Switch to the new page directory */ + XenMemInstallPageDir((PPAGE_DIRECTORY_X86) &startup_pagedirectory); + /* Jump to Kernel */ + PagedJump = (ASMCODE)KernelEntryPoint; + PagedJump(0x2badb002, &LoaderBlock); +} + /* EOF */ _____ Modified: branches/xen/reactos/boot/freeldr/freeldr/arch/i386/xenmem.c --- branches/xen/reactos/boot/freeldr/freeldr/arch/i386/xenmem.c 2005-05-20 08:06:27 UTC (rev 15429) +++ branches/xen/reactos/boot/freeldr/freeldr/arch/i386/xenmem.c 2005-05-20 10:33:27 UTC (rev 15430) @@ -17,6 +17,8 @@ */ #include "freeldr.h" +#include "i386boot.h" +#include "i386mem.h" #include "machxen.h" #include <rosxen.h> @@ -27,53 +29,10 @@ #include <grant_table.h> #endif /* CONFIG_XEN_BLKDEV_GRANT */ -/* Page Directory Entry */ -typedef struct _PDE -{ - u32 Pde; -} PDE, *PPDE; - -/* Page Table Entry */ -typedef struct _PTE -{ - u32 Pte; -} PTE, *PPTE; - -#define PGDIR_SHIFT 22 -#define PTRS_PER_PD (PAGE_SIZE / sizeof(PDE)) -#define PTRS_PER_PT (PAGE_SIZE / sizeof(PTE)) - -/* Page Directory Index of a given virtual address */ -#define PD_IDX(Va) ((((ULONG_PTR) Va) >> PGDIR_SHIFT) & (PTRS_PER_PD - 1)) -/* Page Table Index of a give virtual address */ -#define PT_IDX(Va) ((((ULONG_PTR) Va) >> PAGE_SHIFT) & (PTRS_PER_PT - 1)) -/* Convert a Page Directory or Page Table entry to a (machine) address */ -#define PAGE_MASK (~(PAGE_SIZE-1)) - -/* The PA_* definitions below were copied from ntoskrnl/mm/i386/page.c, maybe - we need a public header for them?? */ -#define PA_BIT_PRESENT (0) -#define PA_BIT_READWRITE (1) -#define PA_BIT_USER (2) -#define PA_BIT_WT (3) -#define PA_BIT_CD (4) -#define PA_BIT_ACCESSED (5) -#define PA_BIT_DIRTY (6) -#define PA_BIT_GLOBAL (8) - -#define PA_PRESENT (1 << PA_BIT_PRESENT) -#define PA_READWRITE (1 << PA_BIT_READWRITE) -#define PA_USER (1 << PA_BIT_USER) -#define PA_DIRTY (1 << PA_BIT_DIRTY) -#define PA_WT (1 << PA_BIT_WT) -#define PA_CD (1 << PA_BIT_CD) -#define PA_ACCESSED (1 << PA_BIT_ACCESSED) -#define PA_GLOBAL (1 << PA_BIT_GLOBAL) - start_info_t *XenStartInfo; shared_info_t *XenSharedInfo; -static PPDE XenPageDir; +static PPAGE_DIRECTORY_X86 XenPageDir; #if 2 == XEN_VER #define XEN_MMU_UPDATE(req, count, success, domid) \ @@ -169,8 +128,8 @@ static char ErrMsg[] = "XenMemInit failed\n"; unsigned long StartPfn; /* (Virtual) page frame number of beginning of freeldr */ - PPDE PageDir; /* Virtual address of page directory */ - PPTE PageTableForPageDir; /* Virtual address of page table which + PPAGE_DIRECTORY_X86 PageDir; /* Virtual address of page directory */ + PPAGE_TABLE_X86 PageTableForPageDir; /* Virtual address of page table which contains entry for the page directory */ unsigned long PageDirMachineAddr; /* Machine address of page directory */ unsigned PageTablesRequired; /* Number of page tables we require */ @@ -180,16 +139,18 @@ unsigned long HighAddr; /* Virtual address after reloc to high memory */ unsigned long PageNumber; /* Index of current page */ - PPTE PageTable; /* Page table containing current page */ + PPAGE_TABLE_X86 PageTable; /* Page table containing current page */ + HARDWARE_PTE_X86 Pte; /* Page table entry */ #ifdef CONFIG_XEN_BLKDEV_GRANT gnttab_setup_table_t Setup; /* Grant table setup request */ unsigned long Frame; /* Grant table frame */ #endif /* CONFIG_XEN_BLKDEV_GRANT */ - PageDir = (PPDE) StartInfo->pt_base; - PageTableForPageDir = (PPTE)((char *) StartInfo->pt_base - + PAGE_SIZE * (PD_IDX(StartInfo->pt_base) + 1)); - PageDirMachineAddr = PageTableForPageDir[PT_IDX(StartInfo->pt_base)].Pte + PageDir = (PPAGE_DIRECTORY_X86) StartInfo->pt_base; + PageTableForPageDir = (PPAGE_TABLE_X86)((char *) StartInfo->pt_base + + PAGE_SIZE + * (PD_IDX(StartInfo->pt_base) + 1)); + PageDirMachineAddr = PageTableForPageDir->Pte[PT_IDX(StartInfo->pt_base)].Val & PAGE_MASK; /* Determine pfn of first allocated memory */ @@ -197,20 +158,21 @@ /* First, lets connect all our page tables */ #ifdef CONFIG_XEN_BLKDEV_GRANT - PageTablesRequired = ROUND_UP(StartInfo->nr_pages + 2, PTRS_PER_PT) - / PTRS_PER_PT; + PageTablesRequired = ROUND_UP(StartInfo->nr_pages + 2, PTRS_PER_PT_X86) + / PTRS_PER_PT_X86; #else /* CONFIG_XEN_BLKDEV_GRANT */ - PageTablesRequired = ROUND_UP(StartInfo->nr_pages + 1, PTRS_PER_PT) - / PTRS_PER_PT; + PageTablesRequired = ROUND_UP(StartInfo->nr_pages + 1, PTRS_PER_PT_X86) + / PTRS_PER_PT_X86; #endif /* CONFIG_XEN_BLKDEV_GRANT */ for (PageTableNumber = 0; PageTableNumber < PageTablesRequired; PageTableNumber++) { MfnIndex = StartInfo->nr_pages - (StartPfn + PageTablesRequired) + PageTableNumber; - if (0 == PageDir[PageTableNumber].Pde) + if (0 == PageDir->Pde[PageTableNumber].Val) { - MmuReq.ptr = PageDirMachineAddr + PageTableNumber * sizeof(PTE); + MmuReq.ptr = PageDirMachineAddr + + PageTableNumber * sizeof(HARDWARE_PTE_X86); } else { @@ -218,14 +180,18 @@ * means that it's also mapped in the area following pt_base. We * don't want it there, so let's map another page at that pos. * This page table will be mapped near the top of memory later */ - PageTable = (PPTE)((char *) PageDir - + (PageTableNumber + 1) * PAGE_SIZE); - MmuReq.ptr = (PageDir[PD_IDX((unsigned long) PageTable)].Pde + PageTable = (PPAGE_TABLE_X86)((char *) PageDir + + (PageTableNumber + 1) * PAGE_SIZE); + MmuReq.ptr = (PageDir->Pde[PD_IDX(PageTable)].Val & PAGE_MASK) + - PT_IDX((unsigned long) PageTable) * sizeof(PTE); + PT_IDX(PageTable) * sizeof(HARDWARE_PTE_X86); } - MmuReq.val = (((u32*)StartInfo->mfn_list)[MfnIndex] << PAGE_SHIFT) - | (PA_PRESENT | PA_READWRITE | PA_USER); + Pte.Val = 0; + Pte.PageFrameNumber = ((u32*)StartInfo->mfn_list)[MfnIndex]; + Pte.Valid = 1; + Pte.Write = 1; + Pte.Owner = 1; + MmuReq.val = Pte.Val; if (0 != XEN_MMU_UPDATE(&MmuReq, 1, NULL, DOMID_SELF)) { HYPERVISOR_console_io(CONSOLEIO_write, sizeof(ErrMsg), ErrMsg); @@ -235,24 +201,31 @@ /* Now, let's make the page directory visible near the top of mem */ HighAddr = (StartInfo->nr_pages - (PageTablesRequired + 1)) * PAGE_SIZE; - MmuReq.ptr = (PageDir[PD_IDX(HighAddr)].Pde & PAGE_MASK) - + PT_IDX(HighAddr) * sizeof(PTE); - MmuReq.val = PageDirMachineAddr - | (PA_PRESENT | PA_USER); + MmuReq.ptr = (PageDir->Pde[PD_IDX(HighAddr)].Val & PAGE_MASK) + + PT_IDX(HighAddr) * sizeof(HARDWARE_PTE_X86); + Pte.Val = 0; + Pte.PageFrameNumber = PageDirMachineAddr >> PFN_SHIFT; + Pte.Valid = 1; + Pte.Owner = 1; + MmuReq.val = Pte.Val; if (0 != XEN_MMU_UPDATE(&MmuReq, 1, NULL, DOMID_SELF)) { HYPERVISOR_console_io(CONSOLEIO_write, sizeof(ErrMsg), ErrMsg); XenDie(); } - XenPageDir = (PPDE) HighAddr; + XenPageDir = (PPAGE_DIRECTORY_X86) HighAddr; /* We don't need the page directory mapped at the low address (pt_base) * anymore, so we'll map another page there */ - MmuReq.ptr = (PageDir[PD_IDX((unsigned long) PageDir)].Pde & PAGE_MASK) - + PT_IDX((unsigned long) PageDir) * sizeof(PTE); + MmuReq.ptr = (PageDir->Pde[PD_IDX((unsigned long) PageDir)].Val & PAGE_MASK) + + PT_IDX((unsigned long) PageDir) * sizeof(HARDWARE_PTE_X86); MfnIndex = StartInfo->nr_pages - (StartPfn + PageTablesRequired + 1); - MmuReq.val = (((u32*)StartInfo->mfn_list)[MfnIndex] << PAGE_SHIFT) - | (PA_PRESENT | PA_READWRITE | PA_USER); + Pte.Val = 0; + Pte.PageFrameNumber = ((u32*)StartInfo->mfn_list)[MfnIndex]; + Pte.Valid = 1; + Pte.Write = 1; + Pte.Owner = 1; + MmuReq.val = Pte.Val; if (0 != XEN_MMU_UPDATE(&MmuReq, 1, NULL, DOMID_SELF)) { HYPERVISOR_console_io(CONSOLEIO_write, sizeof(ErrMsg), ErrMsg); @@ -265,10 +238,13 @@ { HighAddr = (StartInfo->nr_pages - PageTablesRequired + PageTableNumber) * PAGE_SIZE; - MmuReq.ptr = (XenPageDir[PD_IDX(HighAddr)].Pde & PAGE_MASK) - + PT_IDX(HighAddr) * sizeof(PTE); - MmuReq.val = (XenPageDir[PageTableNumber].Pde & PAGE_MASK) - | (PA_PRESENT | PA_USER); + MmuReq.ptr = (XenPageDir->Pde[PD_IDX(HighAddr)].Val & PAGE_MASK) + + PT_IDX(HighAddr) * sizeof(HARDWARE_PTE_X86); + Pte.Val = 0; + Pte.PageFrameNumber = XenPageDir->Pde[PageTableNumber].Val >> PFN_SHIFT; + Pte.Valid = 1; + Pte.Owner = 1; + MmuReq.val = Pte.Val; if (0 != XEN_MMU_UPDATE(&MmuReq, 1, NULL, DOMID_SELF)) { HYPERVISOR_console_io(CONSOLEIO_write, sizeof(ErrMsg), ErrMsg); @@ -281,9 +257,10 @@ PageNumber < StartInfo->nr_pages - (PageTablesRequired + 1); PageNumber++) { - PageTable = (PPTE)((char *) XenPageDir + - (PD_IDX(PageNumber * PAGE_SIZE) + 1) * PAGE_SIZE); - if (0 == PageTable[PT_IDX(PageNumber * PAGE_SIZE)].Pte) + PageTable = (PPAGE_TABLE_X86)((char *) XenPageDir + + (PD_IDX(PageNumber * PAGE_SIZE) + 1) + * PAGE_SIZE); + if (0 == PageTable->Pte[PT_IDX(PageNumber * PAGE_SIZE)].Val) { if (PageNumber < StartPfn) { @@ -293,11 +270,16 @@ { MfnIndex = PageNumber - StartPfn; } - MmuReq.ptr = (XenPageDir[PD_IDX(PageNumber * PAGE_SIZE)].Pde + MmuReq.ptr = (XenPageDir->Pde[PD_IDX(PageNumber * PAGE_SIZE)].Val & PAGE_MASK) - + PT_IDX(PageNumber * PAGE_SIZE) * sizeof(PTE); - MmuReq.val = (((u32 *) StartInfo->mfn_list)[MfnIndex] << PAGE_SHIFT) - | (PA_PRESENT | PA_READWRITE | PA_USER); + + PT_IDX(PageNumber * PAGE_SIZE) + * sizeof(HARDWARE_PTE_X86); + Pte.Val = 0; + Pte.PageFrameNumber = ((u32 *) StartInfo->mfn_list)[MfnIndex]; + Pte.Valid = 1; + Pte.Write = 1; + Pte.Owner = 1; + MmuReq.val = Pte.Val; if (0 != XEN_MMU_UPDATE(&MmuReq, 1, NULL, DOMID_SELF)) { HYPERVISOR_console_io(CONSOLEIO_write, sizeof(ErrMsg), ErrMsg); @@ -313,11 +295,16 @@ /* We don't own the shared_info page, map it as an extra page just after * our "normal" memory */ XenSharedInfo = (shared_info_t *)(XenStartInfo->nr_pages * PAGE_SIZE); - MmuReq.ptr = (XenPageDir[PD_IDX(XenStartInfo->nr_pages * PAGE_SIZE)].Pde + MmuReq.ptr = (XenPageDir->Pde[PD_IDX(XenStartInfo->nr_pages * PAGE_SIZE)].Val & PAGE_MASK) - + PT_IDX(XenStartInfo->nr_pages * PAGE_SIZE) * sizeof(PTE); - MmuReq.val = XenStartInfo->shared_info - | (PA_PRESENT | PA_READWRITE | PA_USER); + + PT_IDX(XenStartInfo->nr_pages * PAGE_SIZE) + * sizeof(HARDWARE_PTE_X86); + Pte.Val = 0; + Pte.PageFrameNumber = XenStartInfo->shared_info >> PFN_SHIFT; + Pte.Valid = 1; + Pte.Write = 1; + Pte.Owner = 1; + MmuReq.val = Pte.Val; if (0 != XEN_MMU_UPDATE(&MmuReq, 1, NULL, DOMID_SELF)) { HYPERVISOR_console_io(CONSOLEIO_write, sizeof(ErrMsg), ErrMsg); @@ -339,11 +326,15 @@ } XenMemBlkdevGrantShared = (grant_entry_t *)((XenStartInfo->nr_pages + 1) * PAGE_SIZE); - MmuReq.ptr = (XenPageDir[PD_IDX(XenMemBlkdevGrantShared)].Pde + MmuReq.ptr = (XenPageDir->Pde[PD_IDX(XenMemBlkdevGrantShared)].Val & PAGE_MASK) - + PT_IDX(XenMemBlkdevGrantShared) * sizeof(PTE); - MmuReq.val = (Frame << PAGE_SHIFT) - | (PA_PRESENT | PA_READWRITE | PA_USER); + + PT_IDX(XenMemBlkdevGrantShared) * sizeof(HARDWARE_PTE_X86); + Pte.Val = 0; + Pte.PageFrameNumber = Frame; + Pte.Valid = 1; + Pte.Write = 1; + Pte.Owner = 1; + MmuReq.val = Pte.Val; if (0 != XEN_MMU_UPDATE(&MmuReq, 1, NULL, DOMID_SELF)) { HYPERVISOR_console_io(CONSOLEIO_write, sizeof(ErrMsg), ErrMsg); @@ -355,14 +346,32 @@ u32 XenMemVirtualToMachine(void *VirtualAddress) { - PPTE PageTable; + PPAGE_TABLE_X86 PageTable; - PageTable = (PPTE)((char *) XenPageDir + - (PD_IDX((ULONG_PTR) VirtualAddress) + 1) * PAGE_SIZE); - return PageTable[PT_IDX((ULONG_PTR) VirtualAddress)].Pte - & PAGE_MASK; + PageTable = (PPAGE_TABLE_X86)((char *) XenPageDir + + (PD_IDX((ULONG_PTR) VirtualAddress) + 1) + * PAGE_SIZE); + return PageTable->Pte[PT_IDX(VirtualAddress)].Val & PAGE_MASK; } +static void * +XenMemMachineToVirtual(ULONG Mfn) +{ + PPAGE_TABLE_X86 PageTable; + ULONG Index; + + PageTable = (PPAGE_TABLE_X86)(XenPageDir + 1); + Index = 0; + while (TRUE) + { + if ((PageTable->Pte[Index].PageFrameNumber) == Mfn) + { + return (void *)(Index * PAGE_SIZE); + } + Index++; + } +} + #ifdef CONFIG_XEN_BLKDEV_GRANT int XenMemGrantForeignAccess(domid_t DomId, void *VirtualAddress, BOOL ReadOnly) @@ -370,7 +379,7 @@ int Ref = 0; /* We only do 1 page at the moment */ XenMemBlkdevGrantShared[Ref].frame = (XenMemVirtualToMachine(VirtualAddress) - >> PAGE_SHIFT); + >> PFN_SHIFT); XenMemBlkdevGrantShared[Ref].domid = DomId; wmb(); XenMemBlkdevGrantShared[Ref].flags = GTF_permit_access @@ -380,4 +389,111 @@ } #endif /* CONFIG_XEN_BLKDEV_GRANT */ +static VOID +XenMemSetNewPageReadonly(PPAGE_DIRECTORY_X86 NewPageDir, ULONG Mfn) +{ + PPAGE_TABLE_X86 PageTable; + unsigned PdIndex; + unsigned PtIndex; + + for (PdIndex = 0; PdIndex < PTRS_PER_PD_X86; PdIndex++) + { + if (NewPageDir->Pde[PdIndex].Valid) + { + PageTable = (PPAGE_TABLE_X86) + XenMemMachineToVirtual(NewPageDir->Pde[PdIndex].PageFrameNumber); + for (PtIndex = 0; PtIndex < PTRS_PER_PT_X86; PtIndex++) + { + if (PageTable->Pte[PtIndex].PageFrameNumber == Mfn) + { + PageTable->Pte[PtIndex].Write = 0; + } + } + } + } +} + +static VOID +XenMemSetOldPageReadonly(ULONG Mfn) +{ + PPAGE_TABLE_X86 PageTable; + ULONG Index; + mmu_update_t MmuReq; + ULONG_PTR Address; + HARDWARE_PTE_X86 Pte; + + PageTable = (PPAGE_TABLE_X86)(XenPageDir + 1); + Index = 0; + while (TRUE) + { + if ((PageTable->Pte[Index].PageFrameNumber) == Mfn) + { + Address = Index * PAGE_SIZE; + MmuReq.ptr = (XenPageDir->Pde[PD_IDX(Address)].Val & PAGE_MASK) + + PT_IDX(Address) * sizeof(HARDWARE_PTE_X86); + Pte.Val = PageTable->Pte[Index].Val; + Pte.Write = 0; + MmuReq.val = Pte.Val; + if (0 != XEN_MMU_UPDATE(&MmuReq, 1, NULL, DOMID_SELF)) + { + printf("Failed to map new page dir/table read-only\n"); + XenDie(); + } + return; + } + Index++; + } +} + +VOID +XenMemInstallPageDir(PPAGE_DIRECTORY_X86 NewPageDir) +{ + struct mmuext_op MmuExtReq; + ULONG NewPageDirMfn; + ULONG PageIndex; + + NewPageDirMfn = PaToPfn(XenMemVirtualToMachine((void *) NewPageDir)); + + for (PageIndex = PTRS_PER_PD_X86; 0 < PageIndex; PageIndex--) + { + if (NewPageDir->Pde[PageIndex - 1].PageFrameNumber == NewPageDirMfn) + { + /* A machine page cannot be a page directory and a page table at + the same time. We're trying to map the page dir as page table here, + undo the mapping and deal with it later. */ + NewPageDir->Pde[PageIndex - 1].Val = 0; + } + } + + XenMemSetNewPageReadonly(NewPageDir, NewPageDirMfn); + for (PageIndex = PTRS_PER_PD_X86; 0 < PageIndex; PageIndex--) + { + if (NewPageDir->Pde[PageIndex - 1].Valid) + { + XenMemSetNewPageReadonly(NewPageDir, + NewPageDir->Pde[PageIndex - 1].Val + >> PFN_SHIFT); + } + } + + XenMemSetOldPageReadonly(NewPageDirMfn); + for (PageIndex = PTRS_PER_PD_X86; 0 < PageIndex; PageIndex--) + { + if (NewPageDir->Pde[PageIndex - 1].Valid) + { + XenMemSetOldPageReadonly(NewPageDir->Pde[PageIndex - 1].Val + >> PFN_SHIFT); + } + } + + /* Set the PDBR */ + MmuExtReq.cmd = MMUEXT_NEW_BASEPTR; + MmuExtReq.mfn = NewPageDirMfn; + if (0 != HYPERVISOR_mmuext_op(&MmuExtReq, 1, NULL, DOMID_SELF)) + { + printf("Failed to set new page dir\n"); + XenDie(); + } +} + /* EOF */
[View Less]
19 years, 12 months
1
0
0
0
[arty] 15429: Turned on -Werror
by arty@svn.reactos.com
Turned on -Werror Propogate AdapterBinding rather than LogicalAdapter or MiniportBlock in places where we handle a request since we might need the protocol that did the request later on, get rid of LogicalAdapter completely as according to Filip, it's never needed. Also, remove the Packet context hack in send complete if possible as this is now unnecessary (we now send all needed information in the work item instead). MiniQueueWorkItem, MiniDequeueWorkItem and MiniDoRequest were all changed
…
[View More]
to take an AdapterBinding. Added MiniRequestComplete, which handles a request complete. Fixed hang in ipconfig and the tcpip control panel. Modified: trunk/reactos/drivers/net/ndis/Makefile Modified: trunk/reactos/drivers/net/ndis/include/miniport.h Modified: trunk/reactos/drivers/net/ndis/include/ndissys.h Modified: trunk/reactos/drivers/net/ndis/ndis/miniport.c Modified: trunk/reactos/drivers/net/ndis/ndis/protocol.c _____ Modified: trunk/reactos/drivers/net/ndis/Makefile --- trunk/reactos/drivers/net/ndis/Makefile 2005-05-20 06:21:01 UTC (rev 15428) +++ trunk/reactos/drivers/net/ndis/Makefile 2005-05-20 08:06:27 UTC (rev 15429) @@ -8,7 +8,7 @@ TARGET_PCH = include/ndissys.h -TARGET_CFLAGS = -I./include -D__USE_W32API -Wall +TARGET_CFLAGS = -I./include -D__USE_W32API -Wall -Werror TARGET_CFLAGS += -DNDIS_WRAPPER -DNDIS50 -DNDIS50_MINIPORT -DBINARY_COMPATIBLE _____ Modified: trunk/reactos/drivers/net/ndis/include/miniport.h --- trunk/reactos/drivers/net/ndis/include/miniport.h 2005-05-20 06:21:01 UTC (rev 15428) +++ trunk/reactos/drivers/net/ndis/include/miniport.h 2005-05-20 08:06:27 UTC (rev 15429) @@ -10,6 +10,7 @@ #include <ndissys.h> +struct _ADAPTER_BINDING; typedef struct _HARDWARE_ADDRESS { union { @@ -77,9 +78,9 @@ KDPC MiniportDpc; /* DPC routine for adapter */ BOOLEAN MiniportBusy; /* A MiniportXxx routine is executing */ ULONG WorkQueueLevel; /* Number of used work item buffers */ - NDIS_MINIPORT_WORK_ITEM WorkQueue[NDIS_MINIPORT_WORK_QUEUE_SIZE]; - PNDIS_MINIPORT_WORK_ITEM WorkQueueHead; /* Head of work queue */ - PNDIS_MINIPORT_WORK_ITEM WorkQueueTail; /* Tail of work queue */ + INTERNAL_NDIS_MINIPORT_WORK_ITEM WorkQueue[NDIS_MINIPORT_WORK_QUEUE_SIZE]; + PINTERNAL_NDIS_MINIPORT_WORK_ITEM WorkQueueHead; /* Head of work queue */ + PINTERNAL_NDIS_MINIPORT_WORK_ITEM WorkQueueTail; /* Tail of work queue */ LIST_ENTRY ListEntry; /* Entry on global list */ LIST_ENTRY MiniportListEntry; /* Entry on miniport driver list */ LIST_ENTRY ProtocolListHead; /* List of bound protocols */ @@ -145,7 +146,7 @@ NDIS_STATUS FASTCALL MiniQueueWorkItem( - PLOGICAL_ADAPTER Adapter, + struct _ADAPTER_BINDING *AdapterBinding, NDIS_WORK_ITEM_TYPE WorkItemType, PVOID WorkItemContext); @@ -153,12 +154,13 @@ FASTCALL MiniDequeueWorkItem( PLOGICAL_ADAPTER Adapter, + struct _ADAPTER_BINDING **AdapterBinding, NDIS_WORK_ITEM_TYPE *WorkItemType, PVOID *WorkItemContext); NDIS_STATUS MiniDoRequest( - PLOGICAL_ADAPTER Adapter, + struct _ADAPTER_BINDING *AdapterBinding, PNDIS_REQUEST NdisRequest); BOOLEAN _____ Modified: trunk/reactos/drivers/net/ndis/include/ndissys.h --- trunk/reactos/drivers/net/ndis/include/ndissys.h 2005-05-20 06:21:01 UTC (rev 15428) +++ trunk/reactos/drivers/net/ndis/include/ndissys.h 2005-05-20 08:06:27 UTC (rev 15429) @@ -27,6 +27,14 @@ #include <ddk/ntapi.h> #endif /* _MSC_VER */ +struct _ADAPTER_BINDING; + +typedef struct _INTERNAL_NDIS_MINIPORT_WORK_ITEM { + SINGLE_LIST_ENTRY Link; + struct _ADAPTER_BINDING *AdapterBinding; + NDIS_MINIPORT_WORK_ITEM RealWorkItem; +} INTERNAL_NDIS_MINIPORT_WORK_ITEM, *PINTERNAL_NDIS_MINIPORT_WORK_ITEM; + #include "miniport.h" #include "protocol.h" _____ Modified: trunk/reactos/drivers/net/ndis/ndis/miniport.c --- trunk/reactos/drivers/net/ndis/ndis/miniport.c 2005-05-20 06:21:01 UTC (rev 15428) +++ trunk/reactos/drivers/net/ndis/ndis/miniport.c 2005-05-20 08:06:27 UTC (rev 15429) @@ -327,7 +327,24 @@ } + VOID STDCALL +MiniRequestComplete( + IN PADAPTER_BINDING AdapterBinding, + IN PNDIS_REQUEST Request, + IN NDIS_STATUS Status) +{ + NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); + + if( AdapterBinding->ProtocolBinding->Chars.RequestCompleteHandler ) { + (*AdapterBinding->ProtocolBinding->Chars.RequestCompleteHandler)( + AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.ProtocolBindingContext , + Request, + Status); + } +} + +VOID STDCALL MiniSendComplete( IN NDIS_HANDLE MiniportAdapterHandle, IN PNDIS_PACKET Packet, @@ -615,7 +632,7 @@ NDIS_STATUS FASTCALL MiniQueueWorkItem( - PLOGICAL_ADAPTER Adapter, + PADAPTER_BINDING AdapterBinding, NDIS_WORK_ITEM_TYPE WorkItemType, PVOID WorkItemContext) /* @@ -630,49 +647,51 @@ * Status of operation */ { - PNDIS_MINIPORT_WORK_ITEM Item; + PINTERNAL_NDIS_MINIPORT_WORK_ITEM Item; + PLOGICAL_ADAPTER Adapter = AdapterBinding->Adapter; - NDIS_DbgPrint(MAX_TRACE, ("Called.\n")); - - ASSERT(Adapter); - ASSERT(KeGetCurrentIrql() >= DISPATCH_LEVEL); - + NDIS_DbgPrint(MAX_TRACE, ("Called.\n")); + + ASSERT(Adapter); + ASSERT(KeGetCurrentIrql() >= DISPATCH_LEVEL); + #if 0 - if (Adapter->WorkQueueLevel < NDIS_MINIPORT_WORK_QUEUE_SIZE - 1) + if (Adapter->WorkQueueLevel < NDIS_MINIPORT_WORK_QUEUE_SIZE - 1) { - Item = &Adapter->WorkQueue[Adapter->WorkQueueLevel]; - Adapter->WorkQueueLevel++; + Item = &Adapter->WorkQueue[Adapter->WorkQueueLevel]; + Adapter->WorkQueueLevel++; } - else + else #endif { - Item = ExAllocatePool(NonPagedPool, sizeof(NDIS_MINIPORT_WORK_ITEM)); - if (Item == NULL) + Item = ExAllocatePool(NonPagedPool, sizeof(INTERNAL_NDIS_MINIPORT_WORK_ITEM)); + if (Item == NULL) { - NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources.\n")); - return NDIS_STATUS_RESOURCES; + NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources.\n")); + return NDIS_STATUS_RESOURCES; } } - - Item->WorkItemType = WorkItemType; - Item->WorkItemContext = WorkItemContext; - - /* safe due to adapter lock held */ - Item->Link.Next = NULL; - if (!Adapter->WorkQueueHead) + + Item->AdapterBinding = AdapterBinding; + Item->RealWorkItem.WorkItemType = WorkItemType; + Item->RealWorkItem.WorkItemContext = WorkItemContext; + + /* safe due to adapter lock held */ + Item->Link.Next = NULL; + if (!Adapter->WorkQueueHead) { - Adapter->WorkQueueHead = Item; - Adapter->WorkQueueTail = Item; + Adapter->WorkQueueHead = Item; + Adapter->WorkQueueTail = Item; } - else + else { - Adapter->WorkQueueTail->Link.Next = (PSINGLE_LIST_ENTRY)Item; - Adapter->WorkQueueTail = Item; + Adapter->WorkQueueTail->Link.Next = (PSINGLE_LIST_ENTRY)Item; + Adapter->WorkQueueTail = Item; } - - KeInsertQueueDpc(&Adapter->MiniportDpc, NULL, NULL); - - return NDIS_STATUS_SUCCESS; + + KeInsertQueueDpc(&Adapter->MiniportDpc, NULL, NULL); + + return NDIS_STATUS_SUCCESS; } @@ -680,12 +699,14 @@ FASTCALL MiniDequeueWorkItem( PLOGICAL_ADAPTER Adapter, + PADAPTER_BINDING *AdapterBinding, NDIS_WORK_ITEM_TYPE *WorkItemType, PVOID *WorkItemContext) /* * FUNCTION: Dequeues a work item from the work queue of a logical adapter * ARGUMENTS: * Adapter = Pointer to the logical adapter object to dequeue work item from + * AdapterBinding = Address of buffer for adapter binding for this request * WorkItemType = Address of buffer for work item type * WorkItemContext = Address of buffer for pointer to context information * NOTES: @@ -694,52 +715,55 @@ * Status of operation */ { - PNDIS_MINIPORT_WORK_ITEM Item; - - NDIS_DbgPrint(MAX_TRACE, ("Called.\n")); - - Item = Adapter->WorkQueueHead; - - if (Item) + PINTERNAL_NDIS_MINIPORT_WORK_ITEM Item; + + NDIS_DbgPrint(MAX_TRACE, ("Called.\n")); + + Item = Adapter->WorkQueueHead; + + if (Item) { - /* safe due to adapter lock held */ - Adapter->WorkQueueHead = (PNDIS_MINIPORT_WORK_ITEM)Item->Link.Next; - - if (Item == Adapter->WorkQueueTail) - Adapter->WorkQueueTail = NULL; - - *WorkItemType = Item->WorkItemType; - *WorkItemContext = Item->WorkItemContext; - - ExFreePool(Item); - - return NDIS_STATUS_SUCCESS; + /* safe due to adapter lock held */ + Adapter->WorkQueueHead = (PINTERNAL_NDIS_MINIPORT_WORK_ITEM)Item->Link.Next; + + if (Item == Adapter->WorkQueueTail) + Adapter->WorkQueueTail = NULL; + + *AdapterBinding = Item->AdapterBinding; + *WorkItemType = Item->RealWorkItem.WorkItemType; + *WorkItemContext = Item->RealWorkItem.WorkItemContext; + + ExFreePool(Item); + + return NDIS_STATUS_SUCCESS; } - - return NDIS_STATUS_FAILURE; + + return NDIS_STATUS_FAILURE; } NDIS_STATUS MiniDoRequest( - PLOGICAL_ADAPTER Adapter, + PADAPTER_BINDING AdapterBinding, PNDIS_REQUEST NdisRequest) /* * FUNCTION: Sends a request to a miniport * ARGUMENTS: - * Adapter = Pointer to logical adapter object - * NdisRequest = Pointer to NDIS request structure describing request + * AdapterBinding = Pointer to binding used in the request + * NdisRequest = Pointer to NDIS request structure describing request * RETURNS: * Status of operation */ { - NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); + PLOGICAL_ADAPTER Adapter = AdapterBinding->Adapter; - Adapter->NdisMiniportBlock.MediaRequest = NdisRequest; - - switch (NdisRequest->RequestType) + NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); + + Adapter->NdisMiniportBlock.MediaRequest = NdisRequest; + + switch (NdisRequest->RequestType) { - case NdisRequestQueryInformation: + case NdisRequestQueryInformation: return (*Adapter->Miniport->Chars.QueryInformationHandler)( Adapter->NdisMiniportBlock.MiniportAdapterContext, NdisRequest->DATA.QUERY_INFORMATION.Oid, @@ -748,8 +772,8 @@ (PULONG)&NdisRequest->DATA.QUERY_INFORMATION.BytesWritten, (PULONG)&NdisRequest->DATA.QUERY_INFORMATION.BytesNeeded); break; - - case NdisRequestSetInformation: + + case NdisRequestSetInformation: return (*Adapter->Miniport->Chars.SetInformationHandler)( Adapter->NdisMiniportBlock.MiniportAdapterContext, NdisRequest->DATA.SET_INFORMATION.Oid, @@ -758,8 +782,8 @@ (PULONG)&NdisRequest->DATA.SET_INFORMATION.BytesRead, (PULONG)&NdisRequest->DATA.SET_INFORMATION.BytesNeeded); break; - - default: + + default: return NDIS_STATUS_FAILURE; } } @@ -800,11 +824,14 @@ NDIS_STATUS NdisStatus; PVOID WorkItemContext; NDIS_WORK_ITEM_TYPE WorkItemType; + PADAPTER_BINDING AdapterBinding; PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(DeferredContext); NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); - NdisStatus = MiniDequeueWorkItem(Adapter, &WorkItemType, &WorkItemContext); + NdisStatus = + MiniDequeueWorkItem + (Adapter, &AdapterBinding, &WorkItemType, &WorkItemContext); if (NdisStatus == NDIS_STATUS_SUCCESS) { @@ -873,7 +900,7 @@ break; case NdisWorkItemRequest: - NdisStatus = MiniDoRequest(Adapter, (PNDIS_REQUEST)WorkItemContext); + NdisStatus = MiniDoRequest(AdapterBinding, (PNDIS_REQUEST)WorkItemContext); if (NdisStatus == NDIS_STATUS_PENDING) break; @@ -882,10 +909,12 @@ { case NdisRequestQueryInformation: NdisMQueryInformationComplete((NDIS_HANDLE)Adapter, NdisStatus); + MiniRequestComplete( AdapterBinding, (PNDIS_REQUEST)WorkItemContext, NdisStatus ); break; case NdisRequestSetInformation: NdisMSetInformationComplete((NDIS_HANDLE)Adapter, NdisStatus); + MiniRequestComplete( AdapterBinding, (PNDIS_REQUEST)WorkItemContext, NdisStatus ); break; default: _____ Modified: trunk/reactos/drivers/net/ndis/ndis/protocol.c --- trunk/reactos/drivers/net/ndis/ndis/protocol.c 2005-05-20 06:21:01 UTC (rev 15428) +++ trunk/reactos/drivers/net/ndis/ndis/protocol.c 2005-05-20 08:06:27 UTC (rev 15429) @@ -158,7 +158,7 @@ /* MiniQueueWorkItem must be called at IRQL >= DISPATCH_LEVEL */ if (QueueWorkItem) { - MiniQueueWorkItem(Adapter, NdisWorkItemRequest, (PVOID)NdisRequest); + MiniQueueWorkItem(AdapterBinding, NdisWorkItemRequest, (PVOID)NdisRequest); KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); return NDIS_STATUS_PENDING; } @@ -169,7 +169,7 @@ /* TODO (?): move the irql raise into MiniDoRequest */ KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); { - NdisStatus = MiniDoRequest(Adapter, NdisRequest); + NdisStatus = MiniDoRequest(AdapterBinding, NdisRequest); NDIS_DbgPrint(MAX_TRACE, ("acquiring miniport block lock\n")); KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); @@ -278,7 +278,7 @@ if (QueueWorkItem) { - MiniQueueWorkItem(Adapter, NdisWorkItemSendLoopback, (PVOID)Packet); + MiniQueueWorkItem(AdapterBinding, NdisWorkItemSendLoopback, (PVOID)Packet); return NDIS_STATUS_PENDING; } @@ -315,7 +315,7 @@ /* This is a normal send packet, not a loopback packet. */ if (QueueWorkItem) { - MiniQueueWorkItem(Adapter, NdisWorkItemSend, (PVOID)Packet); + MiniQueueWorkItem(AdapterBinding, NdisWorkItemSend, (PVOID)Packet); NDIS_DbgPrint(MAX_TRACE, ("Queued a work item and returning\n")); return NDIS_STATUS_PENDING; }
[View Less]
19 years, 12 months
1
0
0
0
[navaraf] 15428: Luká_ "denzil" Frolka <d3nzil@gmail.com>
by navaraf@svn.reactos.com
Luká_ "denzil" Frolka <d3nzil(a)gmail.com> Czech translation of Explorer (some settings dialogs are still untranslated). Added: trunk/reactos/subsys/system/explorer/explorer-cz.rc Modified: trunk/reactos/subsys/system/explorer/explorer_intres.rc _____ Added: trunk/reactos/subsys/system/explorer/explorer-cz.rc --- trunk/reactos/subsys/system/explorer/explorer-cz.rc 2005-05-20 04:33:47 UTC (rev 15427) +++ trunk/reactos/subsys/system/explorer/explorer-cz.rc 2005-05-20 06:21:01 UTC (rev
…
[View More]
15428) @@ -0,0 +1,493 @@ +/////////////////////////////////////////////////////////////////////// ////// +// Czech resources +// Translated by denzil <d3nzil(a)gmail.com> + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CZE) +#ifdef _WIN32 +LANGUAGE LANG_CZECH, SUBLANG_DEFAULT +#pragma code_page(1250) +#endif //_WIN32 + +/////////////////////////////////////////////////////////////////////// ////// +// +// Menu +// + +IDM_MDIFRAME MENU PRELOAD DISCARDABLE +BEGIN + POPUP "&Soubor" + BEGIN + MENUITEM "&UkonÞit", ID_FILE_EXIT + END + POPUP "&ZobrazenÝ" + BEGIN + MENUITEM "&LiÜta nßstroj¨", ID_VIEW_TOOL_BAR + MENUITEM "&Extra Bar", ID_VIEW_EXTRA_BAR + MENUITEM "L&iÜta disk¨", ID_VIEW_DRIVE_BAR, CHECKED + MENUITEM "&BoÞnÝ liÜta", ID_VIEW_SIDE_BAR + MENUITEM "&Status Bar", ID_VIEW_STATUSBAR + MENUITEM SEPARATOR + MENUITEM "&Aktualizovat\tF5", ID_REFRESH + MENUITEM "&Celß obrazovka\tCtrl+Shift+S", ID_VIEW_FULLSCREEN + MENUITEM "SDI", ID_VIEW_SDI + END + POPUP "&Okno" + BEGIN + MENUITEM "&NovÚ Okno", ID_WINDOW_NEW + MENUITEM "&Kaskßdovat\tShift+F5", ID_WINDOW_CASCADE + MENUITEM "&Uspo°ßdat vodorovný", ID_WINDOW_TILE_HORZ + MENUITEM "U&spo°ßdat svisle\tShift+F4", ID_WINDOW_TILE_VERT + MENUITEM "Us&po°ßdat automaticky", ID_WINDOW_AUTOSORT + MENUITEM "Usp&o°ßdat symboly", ID_WINDOW_ARRANGE + END + POPUP "&Nßstroje" + BEGIN + MENUITEM "&NastavenÝ", ID_TOOLS_OPTIONS + END + POPUP "&Pomoc" + BEGIN + MENUITEM "&Pr¨zkumnÝk &FAQ...", ID_EXPLORER_FAQ + MENUITEM "O p&r¨zkumnÝku...", ID_ABOUT_EXPLORER + MENUITEM "&O OS...", ID_ABOUT_WINDOWS + END +END + +IDM_WINEFILE MENU FIXED IMPURE +BEGIN + POPUP "&Soubor" + BEGIN + MENUITEM "&Otev°Ýt\tEnter", 101 + MENUITEM "&P°esunout...\tF7", 106 + MENUITEM "&KopÝrovat...\tF8", 107 + MENUITEM "&Ve schrßnce...\tF9", 118 + MENUITEM "&Smazat\tDel", 108 + MENUITEM "P°&ejmenovat...", 109 + MENUITEM "&Vlastnosti...\tAlt+Enter", ID_EDIT_PROPERTIES + MENUITEM SEPARATOR + MENUITEM "Ko&mprimovat...", 119 + MENUITEM "Dekomp&rimovat...", 120 + MENUITEM SEPARATOR + MENUITEM "Sp&ustit...", ID_EXECUTE + MENUITEM "&Tisknout...", 102 + MENUITEM "&Asociovat...", 103 + MENUITEM SEPARATOR + MENUITEM "Vytvo°it adresß°...", ID_EXECUTE + MENUITEM "&Hledat...", 104 + MENUITEM "&Vybrat soubory...", 116 + MENUITEM SEPARATOR + MENUITEM "UkonÞit\tAlt+X", ID_FILE_EXIT + END + POPUP "&Disk" + BEGIN + MENUITEM "&KopÝrovat disk...", 201 + MENUITEM "&Jmenovka disku...", 202 + MENUITEM SEPARATOR + MENUITEM "&Formßtovat disk...", 203 + MENUITEM SEPARATOR + MENUITEM "&Pipojit sÝØov² disk", 252 + MENUITEM "&Odpojit sÝØov² disk", 253 + MENUITEM SEPARATOR + MENUITEM "&SdÝlet jako...", 254 + MENUITEM "&ZruÜit sdÝlenÝ...", 255 + MENUITEM SEPARATOR + MENUITEM "Z&volit disk...", 251 + END + POPUP "&Adresß°e" + BEGIN + MENUITEM "&DalÜÝ ·rove?\t+", 301 + MENUITEM "&Rozbalit strom\t*", 302 + MENUITEM "R&ozbalit vÜe\tCtrl+*", 303 + MENUITEM "&Sbalit strom\t-", 304 + MENUITEM SEPARATOR + MENUITEM "O&znaÞit potomky", 505 + END + POPUP "&ZobrazenÝ" + BEGIN + MENUITEM "&Strom a adresß°e", 413 + MENUITEM "&Jen strom", 411 + MENUITEM "J&en adresß°e", 412 + MENUITEM SEPARATOR + MENUITEM "&Rozdýlit", 414 + MENUITEM SEPARATOR + MENUITEM "&JmÚno", ID_VIEW_NAME + MENUITEM "&VÜechny detaily", ID_VIEW_ALL_ATTRIBUTES + , CHECKED + MENUITEM "?ßst&eÞnÚ detaily...", ID_VIEW_SELECTED_ATTRIBUTES + MENUITEM SEPARATOR + MENUITEM "T°Ýdit podle jmÚ&na", 404 + MENUITEM "T°Ýdit podle &druhu", 405 + MENUITEM "T°Ýdit podle ve&likosti", 406 + MENUITEM "T°Ýdit podle &data", 407 + MENUITEM SEPARATOR + MENUITEM "&T°Ýdit podle...", 409 + END + POPUP "&NastavenÝ" + BEGIN + MENUITEM "&PotvtrzovßnÝ...", 65535 + MENUITEM "PÝ&smo...", 65535 + MENUITEM "&Upravit liÜtu nßstroj¨...", 65535 + MENUITEM SEPARATOR + MENUITEM "&LiÜta nßstroj¨", ID_VIEW_TOOL_BAR, CHECKED + MENUITEM "L&iÜta disk¨", ID_VIEW_DRIVE_BAR, CHECKED + MENUITEM "&BoÞnÝ liÜta", ID_VIEW_SIDE_BAR + MENUITEM "&Status Bar", ID_VIEW_STATUSBAR, CHECKED + MENUITEM "&Celß obrazovka\tCtrl+Shift+S", ID_VIEW_FULLSCREEN + MENUITEM SEPARATOR + MENUITEM "S&ymbol po býhu", 65535 + MENUITEM "&Ulo×it zmýny p°i ukonÞenÝ", 511 + END + POPUP "&ZabezpeÞenÝ" + BEGIN + MENUITEM "&P°Ýstup...", 605 + MENUITEM "&LogovßnÝ...", 606 + MENUITEM "&VlastnÝk...", 607 + END + POPUP "&Okno" + BEGIN + MENUITEM "&NovÚ okno", ID_WINDOW_NEW + MENUITEM "&Kaskßdovat\tCtrl+F5", ID_WINDOW_CASCADE + MENUITEM "&Uspo°ßdat vodorovný", ID_WINDOW_TILE_HORZ + MENUITEM "U&spo°ßdat svisle\tCtrl+F4", ID_WINDOW_TILE_VERT + MENUITEM "Us&po°ßdat automaticky", ID_WINDOW_AUTOSORT + MENUITEM "Usp&o°ßdat symboly", ID_WINDOW_ARRANGE + MENUITEM "&Aktualizovat\tF5", ID_REFRESH + END + POPUP "&?" + BEGIN + MENUITEM "&TÚmata nßpovýdy\tF1", ID_HELP + MENUITEM "&Hledat v nßpovýdý...\tF1", ID_HELP + MENUITEM "&Jak pou×Ývat nßpovýdu\tF1", ID_HELP_USING + MENUITEM SEPARATOR + MENUITEM "&Informace o Winefile...", ID_ABOUT_WINEFILE + END +END + +IDM_DESKTOPBAR MENU DISCARDABLE +BEGIN + POPUP "" + BEGIN + MENUITEM "&NastavenÝ...", ID_DESKTOPBAR_SETTINGS + MENUITEM "&Sprßvce ·loh...", ID_TASKMGR + MENUITEM SEPARATOR + MENUITEM "&O Exploreru...", ID_ABOUT_EXPLORER + END +END + +IDM_VOLUME MENU DISCARDABLE +BEGIN + POPUP "" + BEGIN + MENUITEM "&Otev°Ýt ovlßdßnÝ hlasitosti", ID_TRAY_VOLUME + MENUITEM "&Upravit vlastnosti zvuku", ID_VOLUME_PROPERTIES + END +END + +IDM_NOTIFYAREA MENU DISCARDABLE +BEGIN + POPUP "" + BEGIN + MENUITEM "&Zobrazit skrytÚ ikony", ID_SHOW_HIDDEN_ICONS + MENUITEM "Z&obrazit ikonu tlaÞÝtka", ID_SHOW_ICON_BUTTON + MENUITEM "&Nastavit upozornýnÝ...", ID_CONFIG_NOTIFYAREA + MENUITEM "N&astavit datum a Þas...", ID_CONFIG_TIME + MENUITEM SEPARATOR + MENUITEM "&O pr¨zkunÝku...", ID_ABOUT_EXPLORER + END +END + +IDM_SDIFRAME MENU PRELOAD DISCARDABLE +BEGIN + POPUP "&Soubor" + BEGIN + MENUITEM "&UkonÞit", ID_FILE_EXIT + END + POPUP "&ZobrazenÝ" + BEGIN + MENUITEM "&LiÜta nßstroj¨", ID_VIEW_TOOL_BAR + MENUITEM "&BoÞnÝ liÜta", ID_VIEW_SIDE_BAR, GRAYED + MENUITEM "&Status liÜta", ID_VIEW_STATUSBAR + MENUITEM SEPARATOR + MENUITEM "&Aktualizovat\tF5", ID_REFRESH + MENUITEM "Celß obrazovka\tCtrl+Shift+S", ID_VIEW_FULLSCREEN + MENUITEM "&MDI", ID_VIEW_MDI + END + POPUP "&Nßstroje" + BEGIN + MENUITEM "&NastavenÝ", ID_TOOLS_OPTIONS + END + POPUP "&Pomoc" + BEGIN + MENUITEM "Pr¨zkumnÝk &FAQ...", ID_EXPLORER_FAQ + MENUITEM "O &pr¨zkumnÝku...", ID_ABOUT_EXPLORER + MENUITEM "O &OS...", ID_ABOUT_WINDOWS + END +END + + +/////////////////////////////////////////////////////////////////////// ////// +// +// Dialog +// + +IDD_EXECUTE DIALOG FIXED IMPURE 15, 13, 210, 63 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Spustit" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "",101,"Static",SS_SIMPLE | SS_NOPREFIX,3,6,162,10 + CONTROL "&Command:",-1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,3, + 18,60,10 + EDITTEXT 201,3,29,134,12,ES_AUTOHSCROLL + CONTROL "As &Symbol",214,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,3, + 45,71,12 + DEFPUSHBUTTON "&Spustit",1,158,6,47,14 + PUSHBUTTON "&ZruÜit",2,158,23,47,14 + PUSHBUTTON "&Pomoc",254,158,43,47,14 +END + +IDD_SEARCH_PROGRAM DIALOGEX 0, 0, 200, 65 +STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | + WS_SYSMENU | WS_THICKFRAME +EXSTYLE WS_EX_APPWINDOW +CAPTION "Hledat program v nabÝdce Start" +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + LTEXT "&Filter:",IDC_STATIC,7,9,18,8 + EDITTEXT IDC_FILTER,34,7,100,14,ES_AUTOHSCROLL + CONTROL "List1",IDC_PROGRAMS_FOUND,"SysListView32",LVS_REPORT | + LVS_SHOWSELALWAYS | LVS_SORTASCENDING | WS_BORDER | + WS_TABSTOP,7,25,186,33 + PUSHBUTTON "&Vyhledat",IDC_CHECK_ENTRIES,143,7,50,14 +END + +IDD_DESKBAR_DESKTOP DIALOG DISCARDABLE 0, 0, 212, 194 +STYLE WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Vlastnosti plochy" +FONT 8, "MS Sans Serif" +BEGIN + LTEXT "ProsÝm zvolte si zp¨sob zarovnßnÝ ikon:", + IDC_STATIC,7,7,166,8 + CONTROL "left/top dwn",IDC_ICON_ALIGN_0,"Button",BS_OWNERDRAW | + BS_BOTTOM | WS_TABSTOP,7,25,46,44 + CONTROL "left/top right",IDC_ICON_ALIGN_1,"Button",BS_OWNERDRAW | + BS_BOTTOM | WS_TABSTOP,57,25,46,44 + CONTROL "right/top left",IDC_ICON_ALIGN_2,"Button",BS_OWNERDRAW | + BS_BOTTOM | WS_TABSTOP,110,25,46,44 + CONTROL "rig./top dwn",IDC_ICON_ALIGN_3,"Button",BS_OWNERDRAW | + BS_BOTTOM | WS_TABSTOP,159,25,46,44 + CONTROL "left/bot. up",IDC_ICON_ALIGN_4,"Button",BS_OWNERDRAW | + BS_BOTTOM | WS_TABSTOP,7,73,46,44 + CONTROL "left/bot. right",IDC_ICON_ALIGN_5,"Button",BS_OWNERDRAW | + BS_BOTTOM | WS_TABSTOP,57,73,46,44 + CONTROL "right/bot. left",IDC_ICON_ALIGN_6,"Button",BS_OWNERDRAW | + BS_BOTTOM | WS_TABSTOP,110,73,46,44 + CONTROL "rig./bot. dwn",IDC_ICON_ALIGN_7,"Button",BS_OWNERDRAW | + BS_BOTTOM | WS_TABSTOP,159,73,46,44 + CONTROL "border down",IDC_ICON_ALIGN_8,"Button",BS_OWNERDRAW | + BS_BOTTOM | WS_TABSTOP,7,121,46,44 + CONTROL "border H/V",IDC_ICON_ALIGN_9,"Button",BS_OWNERDRAW | + BS_BOTTOM | WS_TABSTOP,57,121,46,44 + CONTROL "round about",IDC_ICON_ALIGN_10,"Button",BS_OWNERDRAW | + BS_BOTTOM | WS_TABSTOP,110,121,46,44 + CONTROL "",IDC_ICON_ALIGN_11,"Button",BS_OWNERDRAW | BS_BOTTOM | + WS_TABSTOP,159,121,46,44 + CONTROL "Zobrazit verzi",ID_DESKTOP_VERSION,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,7,177,91,10 +END + +IDD_DESKBAR_TASKBAR DIALOG DISCARDABLE 0, 0, 210, 194 +STYLE WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Vlastnosti panelu ·loh" +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "&Zobrazit Þas",ID_SHOW_CLOCK,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,152,52,10 + CONTROL "&Skr²t neaktivnÝ ikony", + ID_HIDE_INACTIVE_ICONS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,174,111,10 + PUSHBUTTON "&UpozornýnÝ...",ID_CONFIG_NOTIFYAREA,153,173,50,14 +END + +IDD_DESKBAR_STARTMENU DIALOG DISCARDABLE 0, 0, 210, 194 +STYLE WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Vlastnosti nabÝdky Start" +FONT 8, "MS Sans Serif" +BEGIN +END + +IDD_NOTIFYAREA DIALOGEX 0, 0, 208, 174 +STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | + WS_SYSMENU | WS_THICKFRAME +EXSTYLE WS_EX_APPWINDOW +CAPTION "NastavenÝ ikon v oblasti upozor?ovßnÝ" +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "Tree1",IDC_NOTIFY_ICONS,"SysTreeView32",TVS_HASLINES | + TVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,7,7,194,31 + LTEXT "&Tooltip Text:",IDC_LABEL1,7,44,40,8 + EDITTEXT IDC_NOTIFY_TOOLTIP,58,42,143,14,ES_AUTOHSCROLL + LTEXT "W&indow Title:",IDC_LABEL2,7,63,44,8 + EDITTEXT IDC_NOTIFY_TITLE,58,60,143,14,ES_AUTOHSCROLL + LTEXT "&Module Path:",IDC_LABEL3,7,81,43,8 + EDITTEXT IDC_NOTIFY_MODULE,58,78,143,14,ES_AUTOHSCROLL + GROUPBOX "&Display Mode",IDC_LABEL4,7,96,157,28 + CONTROL "&show",IDC_NOTIFY_SHOW,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,15,108,33,10 + CONTROL "&hide",IDC_NOTIFY_HIDE,"Button",BS_AUTORADIOBUTTON,66, + 108,29,10 + CONTROL "a&utohide",IDC_NOTIFY_AUTOHIDE,"Button", + BS_AUTORADIOBUTTON,112,108,43,10 + ICON "",IDC_PICTURE,173,101,21,20 + LTEXT "&Last Change:",IDC_LABEL6,7,132,43,8 + EDITTEXT IDC_LAST_CHANGE,59,129,105,14,ES_AUTOHSCROLL | + ES_READONLY + CONTROL "sho&w hidden",ID_SHOW_HIDDEN_ICONS,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,7,154,56,10 + DEFPUSHBUTTON "&Nastavit",IDOK,91,153,50,14,WS_GROUP + PUSHBUTTON "&ZruÜit",IDCANCEL,151,153,50,14 +END + +IDD_MDI_SDI DIALOGEX 0, 0, 188, 126 +STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +EXSTYLE WS_EX_APPWINDOW +CAPTION "Volba MDI / SDI m¾du" +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + LTEXT "ProsÝm zvolte si Vßmi up°ednost?ovan² zp¨sob zobrazenÝ oken pr¨zkumnÝka:", + IDC_STATIC,7,7,160,8 + CONTROL "&MDI (Mnoho dokumentov² interface)",IDC_MDI,"Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,121,10 + CONTROL "&SDI (Jedno dokumentov² interface)",IDC_SDI,"Button", + BS_AUTORADIOBUTTON,7,53,115,10 + LTEXT "Toto nastavenÝ bude pou×ito jako implicitnÝ pro vÜechny okna pr¨zkumnÝka.", + IDC_STATIC,7,76,174,22 + DEFPUSHBUTTON "&Nastavit",IDOK,29,105,50,14,WS_GROUP + PUSHBUTTON "&ZruÜit",IDCANCEL,106,105,50,14 +END + + +/////////////////////////////////////////////////////////////////////// ////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_SEARCH_PROGRAM, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 193 + TOPMARGIN, 7 + BOTTOMMARGIN, 58 + END + + IDD_DESKBAR_DESKTOP, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 205 + TOPMARGIN, 7 + BOTTOMMARGIN, 187 + END + + IDD_DESKBAR_TASKBAR, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 203 + TOPMARGIN, 7 + BOTTOMMARGIN, 187 + END + + IDD_DESKBAR_STARTMENU, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 203 + TOPMARGIN, 7 + BOTTOMMARGIN, 187 + END + + IDD_NOTIFYAREA, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 201 + TOPMARGIN, 7 + BOTTOMMARGIN, 167 + END + + IDD_MDI_SDI, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 181 + TOPMARGIN, 7 + BOTTOMMARGIN, 119 + END +END +#endif // APSTUDIO_INVOKED + + +/////////////////////////////////////////////////////////////////////// ////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TITLE "Reactos pr¨zkumnÝk" + IDS_START "Start" + IDS_LOGOFF "Odhlßsit se..." + IDS_TERMINATE "UkonÞit ReactOS pr¨zkumnÝk" + IDS_SHUTDOWN "Vypnout..." + IDS_LAUNCH "Spustit..." + IDS_START_HELP "Pomoc" + IDS_SEARCH_FILES "Hledat..." + IDS_DOCUMENTS "Dokumenty" + IDS_FAVORITES "OblÝbenÚ" + IDS_PROGRAMS "Programy" + IDS_SETTINGS "NastavenÝ" + IDS_EXPLORE "Prozkoumat" + IDS_EMPTY "(PrßzdnÚ)" + IDS_RECENT "NedßvnÚ dokumenty" + IDS_ADMIN "Administrace" +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_NETWORK "SÝì" + IDS_CONNECTIONS "SÝØovÚ spojenÝ" + IDS_DRIVES "Disky" + IDS_SEARCH_COMPUTER "Hledat..." + IDS_SETTINGS_MENU "NastavenÝ" + IDS_CONTROL_PANEL "OvlßdacÝ panel" + IDS_PRINTERS "Tiskßrny" + IDS_BROWSE "ProhlÝ×et soubory" + IDS_SEARCH_PRG "Search Program..." + IDS_ALL_USERS "VÜichni u×ivatelÚ\\" + IDS_SEARCH "Hledat" + IDS_ABOUT_EXPLORER "&O pr¨zkumnÝku..." + IDS_LAUNCH_MANY_PROGRAMS + "Spustili jste vÝce ne× jeden program.\nJste si jisti, ×e je chcete spustit vÜechny?" + IDS_DESKTOPBAR_SETTINGS "NastavenÝ plochy" + IDS_DESKTOP "Plocha" + IDS_TASKBAR "Panel ·loh" +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_STARTMENU "NabÝdka Start" + IDS_MINIMIZE_ALL "minimalizovat vÜechna okna" + IDS_DESKTOP_NUM "Plocha %d" + IDS_VOLUME "Hlasitost" + IDS_ITEMS_CUR "souÞasnÚ polo×ky" + IDS_ITEMS_CONFIGURED "nastavenÝ" + IDS_ITEMS_VISIBLE "viditelnÚ" + IDS_ITEMS_HIDDEN "skrytÚ" + IDS_NOTIFY_SHOW "zobrazit" + IDS_NOTIFY_HIDE "skr²t" + IDS_NOTIFY_AUTOHIDE "skr²vat automaticky" + IDS_SHOW_HIDDEN_ICONS "Zobrazit skrytÚ ikony" + IDS_HIDE_ICONS "Skr²t ikony" +END + +#endif // Czech resources +/////////////////////////////////////////////////////////////////////// ////// + _____ Modified: trunk/reactos/subsys/system/explorer/explorer_intres.rc --- trunk/reactos/subsys/system/explorer/explorer_intres.rc 2005-05-20 04:33:47 UTC (rev 15427) +++ trunk/reactos/subsys/system/explorer/explorer_intres.rc 2005-05-20 06:21:01 UTC (rev 15428) @@ -2311,6 +2311,7 @@ END #endif +#include "explorer-cz.rc" #include "explorer-jp.rc" #ifndef __WINDRES__
[View Less]
19 years, 12 months
1
0
0
0
[sedwards] 15427: move the rest of the alread defined tags to the private tag.h
by sedwards@svn.reactos.com
move the rest of the alread defined tags to the private tag.h Modified: trunk/reactos/ntoskrnl/include/internal/tag.h Modified: trunk/reactos/ntoskrnl/io/mdl.c Modified: trunk/reactos/ntoskrnl/io/pnpnotify.c Modified: trunk/reactos/ntoskrnl/io/resource.c Modified: trunk/reactos/ntoskrnl/io/timer.c Modified: trunk/reactos/ntoskrnl/io/vpb.c Modified: trunk/reactos/ntoskrnl/kdbg/kdb_symbols.c Modified: trunk/reactos/ntoskrnl/ldr/loader.c Modified: trunk/reactos/ntoskrnl/lpc/connect.c Modified:
…
[View More]
trunk/reactos/ntoskrnl/mm/aspace.c Modified: trunk/reactos/ntoskrnl/mm/marea.c Modified: trunk/reactos/ntoskrnl/mm/pageop.c Modified: trunk/reactos/ntoskrnl/mm/pool.c Modified: trunk/reactos/ntoskrnl/mm/region.c Modified: trunk/reactos/ntoskrnl/mm/rmap.c Modified: trunk/reactos/ntoskrnl/mm/section.c Modified: trunk/reactos/ntoskrnl/ob/symlink.c Modified: trunk/reactos/ntoskrnl/ps/cid.c Modified: trunk/reactos/ntoskrnl/ps/job.c Modified: trunk/reactos/ntoskrnl/ps/kill.c Modified: trunk/reactos/ntoskrnl/ps/notify.c Modified: trunk/reactos/ntoskrnl/rtl/handle.c Modified: trunk/reactos/ntoskrnl/se/acl.c Modified: trunk/reactos/ntoskrnl/se/semgr.c Modified: trunk/reactos/ntoskrnl/se/sid.c _____ Modified: trunk/reactos/ntoskrnl/include/internal/tag.h --- trunk/reactos/ntoskrnl/include/internal/tag.h 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/include/internal/tag.h 2005-05-20 04:33:47 UTC (rev 15427) @@ -64,5 +64,82 @@ /* formerly located in io/irq.c */ #define TAG_KINTERRUPT TAG('K', 'I', 'S', 'R') +/* formerly located in io/mdl.c */ +#define TAG_MDL TAG('M', 'D', 'L', ' ') +/* formerly located in io/pnpnotify.c */ +#define TAG_PNP_NOTIFY TAG('P', 'n', 'P', 'N') + +/* formerly located in io/resource.c */ +#define TAG_IO_RESOURCE TAG('R', 'S', 'R', 'C') + +/* formerly located in io/timer.c */ +#define TAG_IO_TIMER TAG('I', 'O', 'T', 'M') + +/* formerly located in io/vpb.c */ +#define TAG_VPB TAG('V', 'P', 'B', ' ') +#define TAG_SYSB TAG('S', 'Y', 'S', 'B') + +/* formerly located in kdbg/kdb_symbols.c */ +#define TAG_KDBS TAG('K', 'D', 'B', 'S') + +/* formerly located in ldr/loader.c */ +#define TAG_DRIVER_MEM TAG('D', 'R', 'V', 'M') /* drvm */ +#define TAG_MODULE_OBJECT TAG('k', 'l', 'm', 'o') /* klmo - kernel ldr module object */ +#define TAG_LDR_WSTR TAG('k', 'l', 'w', 's') /* klws - kernel ldr wide string */ +#define TAG_MODULE_TEXT_SECTION TAG('k', 'l', 'm', 't') /* klmt - kernel ldr module text */ + +/* formerly located in lpc/connect */ +#define TAG_LPC_CONNECT_MESSAGE TAG('L', 'P', 'C', 'C') + +/* formerly located in mm/aspace.c */ +#define TAG_PTRC TAG('P', 'T', 'R', 'C') + +/* formerly located in mm/marea.c */ +#define TAG_MAREA TAG('M', 'A', 'R', 'E') + +/* formerly located in mm/pageop.c */ +#define TAG_MM_PAGEOP TAG('M', 'P', 'O', 'P') + +/* formerly located in mm/pool.c */ +#define TAG_NONE TAG('N', 'o', 'n', 'e') + +/* formerly located in mm/region.c */ +#define TAG_MM_REGION TAG('M', 'R', 'G', 'N') + +/* formerly located in mm/rmap.c */ +#define TAG_RMAP TAG('R', 'M', 'A', 'P') + +/* formerly located in mm/section.c */ +#define TAG_MM_SECTION_SEGMENT TAG('M', 'M', 'S', 'S') +#define TAG_SECTION_PAGE_TABLE TAG('M', 'S', 'P', 'T') + +/* formerly located in ob/symlink.c */ +#define TAG_SYMLINK_TTARGET TAG('S', 'Y', 'T', 'T') +#define TAG_SYMLINK_TARGET TAG('S', 'Y', 'M', 'T') + +/* formerly located in ps/cid.c */ +#define TAG_CIDOBJECT TAG('C', 'I', 'D', 'O') + +/* formerly located in ps/job.c */ +#define TAG_EJOB TAG('E', 'J', 'O', 'B') /* EJOB */ + +/* formerly located in ps/kill.c */ +#define TAG_TERMINATE_APC TAG('T', 'A', 'P', 'C') + +/* formerly located in ps/notify.c */ +#define TAG_KAPC TAG('k','p','a','p') /* kpap - kernel ps apc */ + +/* formerly located in rtl/handle.c */ +#define TAG_HDTB TAG('H', 'D', 'T', 'B') + +/* formerly located in se/acl.c */ +#define TAG_ACL TAG('A', 'C', 'L', 'T') + +/* formerly located in se/semgr.c */ +#define TAG_SXPT TAG('S', 'X', 'P', 'T') + +/* formerly located in se/sid.c */ +#define TAG_SID TAG('S', 'I', 'D', 'T') + #endif /* _NTOSKRNL_TAG_H */ _____ Modified: trunk/reactos/ntoskrnl/io/mdl.c --- trunk/reactos/ntoskrnl/io/mdl.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/io/mdl.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -14,10 +14,6 @@ #define NDEBUG #include <internal/debug.h> -/* GLOBALS *******************************************************************/ - -#define TAG_MDL TAG('M', 'D', 'L', ' ') - /* FUNCTIONS *****************************************************************/ /* _____ Modified: trunk/reactos/ntoskrnl/io/pnpnotify.c --- trunk/reactos/ntoskrnl/io/pnpnotify.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/io/pnpnotify.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -30,8 +30,6 @@ static KGUARDED_MUTEX PnpNotifyListLock; static LIST_ENTRY PnpNotifyListHead; -#define TAG_PNP_NOTIFY TAG('P', 'n', 'P', 'N') - /* FUNCTIONS *****************************************************************/ /* _____ Modified: trunk/reactos/ntoskrnl/io/resource.c --- trunk/reactos/ntoskrnl/io/resource.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/io/resource.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -76,8 +76,6 @@ L"Undefined" }; -#define TAG_IO_RESOURCE TAG('R', 'S', 'R', 'C') - /* PRIVATE FUNCTIONS **********************************************************/ /* _____ Modified: trunk/reactos/ntoskrnl/io/timer.c --- trunk/reactos/ntoskrnl/io/timer.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/io/timer.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -17,8 +17,6 @@ /* GLOBALS *******************************************************************/ -#define TAG_IO_TIMER TAG('I', 'O', 'T', 'M') - /* Timer Database */ KSPIN_LOCK IopTimerLock; LIST_ENTRY IopTimerQueueHead; _____ Modified: trunk/reactos/ntoskrnl/io/vpb.c --- trunk/reactos/ntoskrnl/io/vpb.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/io/vpb.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -18,9 +18,6 @@ static KSPIN_LOCK IoVpbLock; -#define TAG_VPB TAG('V', 'P', 'B', ' ') -#define TAG_SYSB TAG('S', 'Y', 'S', 'B') - /* FUNCTIONS *****************************************************************/ VOID INIT_FUNCTION _____ Modified: trunk/reactos/ntoskrnl/kdbg/kdb_symbols.c --- trunk/reactos/ntoskrnl/kdbg/kdb_symbols.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/kdbg/kdb_symbols.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -19,8 +19,6 @@ /* GLOBALS ******************************************************************/ -#define TAG_KDBS TAG('K', 'D', 'B', 'S') - typedef struct _IMAGE_SYMBOL_INFO_CACHE { LIST_ENTRY ListEntry; ULONG RefCount; _____ Modified: trunk/reactos/ntoskrnl/ldr/loader.c --- trunk/reactos/ntoskrnl/ldr/loader.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/ldr/loader.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -41,11 +41,6 @@ STATIC MODULE_TEXT_SECTION LdrHalTextSection; ULONG_PTR LdrHalBase; -#define TAG_DRIVER_MEM TAG('D', 'R', 'V', 'M') /* drvm */ -#define TAG_MODULE_OBJECT TAG('k', 'l', 'm', 'o') /* klmo - kernel ldr module object */ -#define TAG_LDR_WSTR TAG('k', 'l', 'w', 's') /* klws - kernel ldr wide string */ -#define TAG_MODULE_TEXT_SECTION TAG('k', 'l', 'm', 't') /* klmt - kernel ldr module text */ - #ifndef HIWORD #define HIWORD(X) ((WORD) (((DWORD) (X) >> 16) & 0xFFFF)) #endif _____ Modified: trunk/reactos/ntoskrnl/lpc/connect.c --- trunk/reactos/ntoskrnl/lpc/connect.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/lpc/connect.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -14,10 +14,6 @@ #define NDEBUG #include <internal/debug.h> -/* GLOBALS *******************************************************************/ - -#define TAG_LPC_CONNECT_MESSAGE TAG('L', 'P', 'C', 'C') - /* FUNCTIONS *****************************************************************/ /********************************************************************** _____ Modified: trunk/reactos/ntoskrnl/mm/aspace.c --- trunk/reactos/ntoskrnl/mm/aspace.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/mm/aspace.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -17,8 +17,6 @@ STATIC MADDRESS_SPACE KernelAddressSpace; -#define TAG_PTRC TAG('P', 'T', 'R', 'C') - /* FUNCTIONS *****************************************************************/ VOID _____ Modified: trunk/reactos/ntoskrnl/mm/marea.c --- trunk/reactos/ntoskrnl/mm/marea.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/mm/marea.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -14,10 +14,6 @@ #define NDEBUG #include <internal/debug.h> -/* GLOBALS *******************************************************************/ - -#define TAG_MAREA TAG('M', 'A', 'R', 'E') - /* #define VALIDATE_MEMORY_AREAS */ /* FUNCTIONS *****************************************************************/ _____ Modified: trunk/reactos/ntoskrnl/mm/pageop.c --- trunk/reactos/ntoskrnl/mm/pageop.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/mm/pageop.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -22,8 +22,6 @@ static PMM_PAGEOP MmPageOpHashTable[PAGEOP_HASH_TABLE_SIZE]; static NPAGED_LOOKASIDE_LIST MmPageOpLookasideList; -#define TAG_MM_PAGEOP TAG('M', 'P', 'O', 'P') - /* FUNCTIONS *****************************************************************/ VOID _____ Modified: trunk/reactos/ntoskrnl/mm/pool.c --- trunk/reactos/ntoskrnl/mm/pool.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/mm/pool.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -22,8 +22,6 @@ /* GLOBALS *****************************************************************/ -#define TAG_NONE (ULONG)(('N'<<0) + ('o'<<8) + ('n'<<16) + ('e'<<24)) - ULONG STDCALL ExRosQueryPagedPoolTag ( PVOID Block ); _____ Modified: trunk/reactos/ntoskrnl/mm/region.c --- trunk/reactos/ntoskrnl/mm/region.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/mm/region.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -14,10 +14,6 @@ #define NDEBUG #include <internal/debug.h> -/* GLOBALS *******************************************************************/ - -#define TAG_MM_REGION TAG('M', 'R', 'G', 'N') - /* FUNCTIONS *****************************************************************/ VOID STATIC _____ Modified: trunk/reactos/ntoskrnl/mm/rmap.c --- trunk/reactos/ntoskrnl/mm/rmap.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/mm/rmap.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -24,8 +24,6 @@ } MM_RMAP_ENTRY, *PMM_RMAP_ENTRY; -#define TAG_RMAP TAG('R', 'M', 'A', 'P') - /* GLOBALS ******************************************************************/ static FAST_MUTEX RmapListLock; _____ Modified: trunk/reactos/ntoskrnl/mm/section.c --- trunk/reactos/ntoskrnl/mm/section.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/mm/section.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -38,9 +38,6 @@ STANDARD_RIGHTS_EXECUTE | SECTION_MAP_EXECUTE, SECTION_ALL_ACCESS}; -#define TAG_MM_SECTION_SEGMENT TAG('M', 'M', 'S', 'S') -#define TAG_SECTION_PAGE_TABLE TAG('M', 'S', 'P', 'T') - #define PAGE_FROM_SSE(E) ((E) & 0xFFFFF000) #define PFN_FROM_SSE(E) ((E) >> PAGE_SHIFT) #define SHARE_COUNT_FROM_SSE(E) (((E) & 0x00000FFE) >> 1) _____ Modified: trunk/reactos/ntoskrnl/ob/symlink.c --- trunk/reactos/ntoskrnl/ob/symlink.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/ob/symlink.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -25,10 +25,6 @@ STANDARD_RIGHTS_EXECUTE|SYMBOLIC_LINK_QUERY, SYMBOLIC_LINK_ALL_ACCESS}; -#define TAG_SYMLINK_TTARGET TAG('S', 'Y', 'T', 'T') -#define TAG_SYMLINK_TARGET TAG('S', 'Y', 'M', 'T') - - /* FUNCTIONS ****************************************************************/ /********************************************************************** _____ Modified: trunk/reactos/ntoskrnl/ps/cid.c --- trunk/reactos/ntoskrnl/ps/cid.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/ps/cid.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -18,8 +18,6 @@ PHANDLE_TABLE PspCidTable = NULL; -#define TAG_CIDOBJECT TAG('C', 'I', 'D', 'O') - #define CID_FLAG_PROCESS 0x1 #define CID_FLAG_THREAD 0x2 #define CID_FLAGS_MASK (CID_FLAG_PROCESS | CID_FLAG_THREAD) _____ Modified: trunk/reactos/ntoskrnl/ps/job.c --- trunk/reactos/ntoskrnl/ps/job.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/ps/job.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -17,8 +17,6 @@ /* GLOBALS *******************************************************************/ -#define TAG_EJOB TAG('E', 'J', 'O', 'B') /* EJOB */ - POBJECT_TYPE EXPORTED PsJobType = NULL; LIST_ENTRY PsJobListHead; _____ Modified: trunk/reactos/ntoskrnl/ps/kill.c --- trunk/reactos/ntoskrnl/ps/kill.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/ps/kill.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -16,8 +16,6 @@ /* GLOBALS *******************************************************************/ -#define TAG_TERMINATE_APC TAG('T', 'A', 'P', 'C') - PETHREAD PspReaperList = NULL; WORK_QUEUE_ITEM PspReaperWorkItem; BOOLEAN PspReaping = FALSE; _____ Modified: trunk/reactos/ntoskrnl/ps/notify.c --- trunk/reactos/ntoskrnl/ps/notify.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/ps/notify.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -16,7 +16,6 @@ /* GLOBAL *******************************************************************/ #define MAX_THREAD_NOTIFY_ROUTINE_COUNT 8 -#define TAG_KAPC TAG('k','p','a','p') /* kpap - kernel ps apc */ static ULONG PspThreadNotifyRoutineCount = 0; static PCREATE_THREAD_NOTIFY_ROUTINE _____ Modified: trunk/reactos/ntoskrnl/rtl/handle.c --- trunk/reactos/ntoskrnl/rtl/handle.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/rtl/handle.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -14,10 +14,6 @@ #define NDEBUG #include <internal/debug.h> - -#define TAG_HDTB TAG('H', 'D', 'T', 'B') - - static BOOLEAN RtlpIsValidHandle(PRTL_HANDLE_TABLE HandleTable, PRTL_HANDLE Handle); static BOOLEAN _____ Modified: trunk/reactos/ntoskrnl/se/acl.c --- trunk/reactos/ntoskrnl/se/acl.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/se/acl.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -13,9 +13,6 @@ #include <ntoskrnl.h> #include <internal/debug.h> -#define TAG_ACL TAG('A', 'C', 'L', 'T') - - /* GLOBALS ******************************************************************/ PACL EXPORTED SePublicDefaultDacl = NULL; _____ Modified: trunk/reactos/ntoskrnl/se/semgr.c --- trunk/reactos/ntoskrnl/se/semgr.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/se/semgr.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -14,9 +14,6 @@ #define NDEBUG #include <internal/debug.h> -#define TAG_SXPT TAG('S', 'X', 'P', 'T') - - /* GLOBALS ******************************************************************/ PSE_EXPORTS EXPORTED SeExports = NULL; _____ Modified: trunk/reactos/ntoskrnl/se/sid.c --- trunk/reactos/ntoskrnl/se/sid.c 2005-05-20 03:50:13 UTC (rev 15426) +++ trunk/reactos/ntoskrnl/se/sid.c 2005-05-20 04:33:47 UTC (rev 15427) @@ -15,9 +15,6 @@ #define NDEBUG #include <internal/debug.h> -#define TAG_SID TAG('S', 'I', 'D', 'T') - - /* GLOBALS ******************************************************************/ SID_IDENTIFIER_AUTHORITY SeNullSidAuthority = {SECURITY_NULL_SID_AUTHORITY};
[View Less]
19 years, 12 months
1
0
0
0
[sedwards] 15426: started moving tags to a private internal header
by sedwards@svn.reactos.com
started moving tags to a private internal header Modified: trunk/reactos/ntoskrnl/cc/view.c Modified: trunk/reactos/ntoskrnl/ex/resource.c Modified: trunk/reactos/ntoskrnl/fs/notify.c Added: trunk/reactos/ntoskrnl/include/internal/tag.h Modified: trunk/reactos/ntoskrnl/include/ntoskrnl.h Modified: trunk/reactos/ntoskrnl/io/device.c Modified: trunk/reactos/ntoskrnl/io/driver.c Modified: trunk/reactos/ntoskrnl/io/file.c Modified: trunk/reactos/ntoskrnl/io/fs.c Modified: trunk/reactos/ntoskrnl/io/
…
[View More]
iocomp.c Modified: trunk/reactos/ntoskrnl/io/iomgr.c Modified: trunk/reactos/ntoskrnl/io/iowork.c Modified: trunk/reactos/ntoskrnl/io/irp.c Modified: trunk/reactos/ntoskrnl/io/irq.c Modified: trunk/reactos/ntoskrnl/io/rawfs.c _____ Modified: trunk/reactos/ntoskrnl/cc/view.c --- trunk/reactos/ntoskrnl/cc/view.c 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/cc/view.c 2005-05-20 03:50:13 UTC (rev 15426) @@ -49,10 +49,6 @@ #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S)) #define ROUND_DOWN(N, S) (((N) % (S)) ? ROUND_UP(N, S) - S : N) -#define TAG_CSEG TAG('C', 'S', 'E', 'G') -#define TAG_BCB TAG('B', 'C', 'B', ' ') -#define TAG_IBCB TAG('i', 'B', 'C', 'B') - static LIST_ENTRY DirtySegmentListHead; static LIST_ENTRY CacheSegmentListHead; static LIST_ENTRY CacheSegmentLRUListHead; _____ Modified: trunk/reactos/ntoskrnl/ex/resource.c --- trunk/reactos/ntoskrnl/ex/resource.c 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/ex/resource.c 2005-05-20 03:50:13 UTC (rev 15426) @@ -41,12 +41,6 @@ #define NDEBUG #include <internal/debug.h> -/* GLOBALS *******************************************************************/ - -#define TAG_OWNER_TABLE TAG('R', 'O', 'W', 'N') -#define TAG_EXCLUSIVE_LOCK TAG('E', 'R', 'E', 'L') -#define TAG_SHARED_SEM TAG('E', 'R', 'S', 'S') - /* FUNCTIONS *****************************************************************/ _____ Modified: trunk/reactos/ntoskrnl/fs/notify.c --- trunk/reactos/ntoskrnl/fs/notify.c 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/fs/notify.c 2005-05-20 03:50:13 UTC (rev 15426) @@ -16,8 +16,6 @@ PAGED_LOOKASIDE_LIST NotifyEntryLookaside; -#define FSRTL_NOTIFY_TAG TAG('N','O','T','I') - typedef struct _NOTIFY_ENTRY { LIST_ENTRY ListEntry; _____ Added: trunk/reactos/ntoskrnl/include/internal/tag.h --- trunk/reactos/ntoskrnl/include/internal/tag.h 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/include/internal/tag.h 2005-05-20 03:50:13 UTC (rev 15426) @@ -0,0 +1,68 @@ +/* + * NTOSKRNL Tag names. + * License GPL + * + * FIXME: Replace with standard GPL Header. + * FIXME: Add notes as needed + */ + +#ifndef _NTOSKRNL_TAG_H +#define _NTOSKRNL_TAG_H + +/* formerly located in cc/view.c */ +#define TAG_CSEG TAG('C', 'S', 'E', 'G') +#define TAG_BCB TAG('B', 'C', 'B', ' ') +#define TAG_IBCB TAG('i', 'B', 'C', 'B') + +/* formerly located in ex/resource.c */ +#define TAG_OWNER_TABLE TAG('R', 'O', 'W', 'N') +#define TAG_EXCLUSIVE_LOCK TAG('E', 'R', 'E', 'L') +#define TAG_SHARED_SEM TAG('E', 'R', 'S', 'S') + +/* formerly located in fs/notify.c */ +#define FSRTL_NOTIFY_TAG TAG('N','O','T','I') + +/* formerly located in io/device.c */ +#define TAG_DEVICE_EXTENSION TAG('D', 'E', 'X', 'T') +#define TAG_SHUTDOWN_ENTRY TAG('S', 'H', 'U', 'T') +#define TAG_IO_TIMER TAG('I', 'O', 'T', 'M') + +/* formerly located in io/driver.c */ +#define TAG_DRIVER TAG('D', 'R', 'V', 'R') +#define TAG_DRIVER_EXTENSION TAG('D', 'R', 'V', 'E') + +/* formerly located in io/file.c */ +#define TAG_SYSB TAG('S', 'Y', 'S', 'B') +#define TAG_LOCK TAG('F','l','c','k') +#define TAG_FILE_NAME TAG('F', 'N', 'A', 'M') + +/* formerly located in io/fs.c */ +#define TAG_FILE_SYSTEM TAG('F', 'S', 'Y', 'S') +#define TAG_FS_CHANGE_NOTIFY TAG('F', 'S', 'C', 'N') + +/* formerly located in io/iocomp.c */ +#define IOC_TAG TAG('I', 'O', 'C', 'T') + +/* formerly located in io/iomgr.c */ +#define TAG_DEVICE_TYPE TAG('D', 'E', 'V', 'T') +#define TAG_FILE_TYPE TAG('F', 'I', 'L', 'E') +#define TAG_ADAPTER_TYPE TAG('A', 'D', 'P', 'T') +#define IO_LARGEIRP TAG('I', 'r', 'p', 'l') +#define IO_SMALLIRP TAG('I', 'r', 'p', 's') +#define IO_LARGEIRP_CPU TAG('I', 'r', 'p', 'L') +#define IO_SMALLIRP_CPU TAG('I', 'r', 'p', 'S') +#define IOC_TAG1 TAG('I', 'p', 'c', ' ') +#define IOC_CPU TAG('I', 'p', 'c', 'P') + +/* formerly located in io/work.c */ +#define TAG_IOWI TAG('I', 'O', 'W', 'I') + +/* formerly located in io/irp.c */ +#define TAG_IRP TAG('I', 'R', 'P', ' ') +#define TAG_SYS_BUF TAG('S', 'Y', 'S' , 'B') + +/* formerly located in io/irq.c */ +#define TAG_KINTERRUPT TAG('K', 'I', 'S', 'R') + + +#endif /* _NTOSKRNL_TAG_H */ _____ Modified: trunk/reactos/ntoskrnl/include/ntoskrnl.h --- trunk/reactos/ntoskrnl/include/ntoskrnl.h 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/include/ntoskrnl.h 2005-05-20 03:50:13 UTC (rev 15426) @@ -62,6 +62,7 @@ #include <internal/dbgk.h> #include <internal/trap.h> #include <internal/safe.h> +#include <internal/tag.h> #include <internal/test.h> #include <napi/core.h> #include <napi/dbg.h> _____ Modified: trunk/reactos/ntoskrnl/io/device.c --- trunk/reactos/ntoskrnl/io/device.c 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/io/device.c 2005-05-20 03:50:13 UTC (rev 15426) @@ -16,10 +16,6 @@ /* GLOBALS ********************************************************************/ -#define TAG_DEVICE_EXTENSION TAG('D', 'E', 'X', 'T') -#define TAG_SHUTDOWN_ENTRY TAG('S', 'H', 'U', 'T') -#define TAG_IO_TIMER TAG('I', 'O', 'T', 'M') - static ULONG IopDeviceObjectNumber = 0; typedef struct _SHUTDOWN_ENTRY _____ Modified: trunk/reactos/ntoskrnl/io/driver.c --- trunk/reactos/ntoskrnl/io/driver.c 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/io/driver.c 2005-05-20 03:50:13 UTC (rev 15426) @@ -76,9 +76,6 @@ POBJECT_TYPE EXPORTED IoDriverObjectType = NULL; -#define TAG_DRIVER TAG('D', 'R', 'V', 'R') -#define TAG_DRIVER_EXTENSION TAG('D', 'R', 'V', 'E') - /* DECLARATIONS ***************************************************************/ VOID STDCALL _____ Modified: trunk/reactos/ntoskrnl/io/file.c --- trunk/reactos/ntoskrnl/io/file.c 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/io/file.c 2005-05-20 03:50:13 UTC (rev 15426) @@ -16,10 +16,6 @@ /* GLOBALS *******************************************************************/ -#define TAG_SYSB TAG('S', 'Y', 'S', 'B') -#define TAG_LOCK TAG('F','l','c','k') -#define TAG_FILE_NAME TAG('F', 'N', 'A', 'M') - extern GENERIC_MAPPING IopFileMapping; NTSTATUS _____ Modified: trunk/reactos/ntoskrnl/io/fs.c --- trunk/reactos/ntoskrnl/io/fs.c 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/io/fs.c 2005-05-20 03:50:13 UTC (rev 15426) @@ -38,10 +38,6 @@ static KGUARDED_MUTEX FsChangeNotifyListLock; static LIST_ENTRY FsChangeNotifyListHead; -#define TAG_FILE_SYSTEM TAG('F', 'S', 'Y', 'S') -#define TAG_FS_CHANGE_NOTIFY TAG('F', 'S', 'C', 'N') - - static VOID IopNotifyFileSystemChange(PDEVICE_OBJECT DeviceObject, BOOLEAN DriverActive); _____ Modified: trunk/reactos/ntoskrnl/io/iocomp.c --- trunk/reactos/ntoskrnl/io/iocomp.c 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/io/iocomp.c 2005-05-20 03:50:13 UTC (rev 15426) @@ -13,8 +13,6 @@ #define NDEBUG #include <internal/debug.h> -#define IOC_TAG TAG('I', 'O', 'C', 'T') - POBJECT_TYPE IoCompletionType; NPAGED_LOOKASIDE_LIST IoCompletionPacketLookaside; _____ Modified: trunk/reactos/ntoskrnl/io/iomgr.c --- trunk/reactos/ntoskrnl/io/iomgr.c 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/io/iomgr.c 2005-05-20 03:50:13 UTC (rev 15426) @@ -13,18 +13,6 @@ #define NDEBUG #include <internal/debug.h> -/* GLOBALS *******************************************************************/ - -#define TAG_DEVICE_TYPE TAG('D', 'E', 'V', 'T') -#define TAG_FILE_TYPE TAG('F', 'I', 'L', 'E') -#define TAG_ADAPTER_TYPE TAG('A', 'D', 'P', 'T') -#define IO_LARGEIRP TAG('I', 'r', 'p', 'l') -#define IO_SMALLIRP TAG('I', 'r', 'p', 's') -#define IO_LARGEIRP_CPU TAG('I', 'r', 'p', 'L') -#define IO_SMALLIRP_CPU TAG('I', 'r', 'p', 'S') -#define IOC_TAG TAG('I', 'p', 'c', ' ') -#define IOC_CPU TAG('I', 'p', 'c', 'P') - /* DATA ********************************************************************/ POBJECT_TYPE EXPORTED IoDeviceObjectType = NULL; @@ -105,7 +93,7 @@ NULL, 0, sizeof(IO_COMPLETION_PACKET), - IOC_TAG, + IOC_TAG1, 0); /* Now allocate the per-processor lists */ _____ Modified: trunk/reactos/ntoskrnl/io/iowork.c --- trunk/reactos/ntoskrnl/io/iowork.c 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/io/iowork.c 2005-05-20 03:50:13 UTC (rev 15426) @@ -25,10 +25,6 @@ PVOID Context; } IO_WORKITEM; -/* GLOBALS ******************************************************************/ - -#define TAG_IOWI TAG('I', 'O', 'W', 'I') - /* FUNCTIONS ****************************************************************/ VOID STATIC STDCALL _____ Modified: trunk/reactos/ntoskrnl/io/irp.c --- trunk/reactos/ntoskrnl/io/irp.c 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/io/irp.c 2005-05-20 03:50:13 UTC (rev 15426) @@ -15,11 +15,6 @@ #define NDEBUG #include <internal/debug.h> -/* GLOBALS *******************************************************************/ - -#define TAG_IRP TAG('I', 'R', 'P', ' ') -#define TAG_SYS_BUF TAG('S', 'Y', 'S' , 'B') - /* PRIVATE FUNCTIONS ********************************************************/ VOID _____ Modified: trunk/reactos/ntoskrnl/io/irq.c --- trunk/reactos/ntoskrnl/io/irq.c 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/io/irq.c 2005-05-20 03:50:13 UTC (rev 15426) @@ -14,10 +14,6 @@ #define NDEBUG #include <internal/debug.h> -/* GLOBALS *****************************************************************/ - -#define TAG_KINTERRUPT TAG('K', 'I', 'S', 'R') - /* FUNCTIONS *****************************************************************/ /* _____ Modified: trunk/reactos/ntoskrnl/io/rawfs.c --- trunk/reactos/ntoskrnl/io/rawfs.c 2005-05-20 02:46:26 UTC (rev 15425) +++ trunk/reactos/ntoskrnl/io/rawfs.c 2005-05-20 03:50:13 UTC (rev 15426) @@ -90,8 +90,6 @@ /* GLOBALS ******************************************************************/ -#define TAG_IRP TAG('R', 'I', 'R', 'P') - static PDRIVER_OBJECT RawFsDriverObject; static PDEVICE_OBJECT DiskDeviceObject; static PDEVICE_OBJECT CdromDeviceObject;
[View Less]
19 years, 12 months
1
0
0
0
[hpoussin] 15425: Remove some debug messages at boot
by hpoussin@svn.reactos.com
Remove some debug messages at boot Modified: trunk/reactos/ntoskrnl/io/pnpreport.c Modified: trunk/reactos/ntoskrnl/io/pnproot.c _____ Modified: trunk/reactos/ntoskrnl/io/pnpreport.c --- trunk/reactos/ntoskrnl/io/pnpreport.c 2005-05-20 02:37:51 UTC (rev 15424) +++ trunk/reactos/ntoskrnl/io/pnpreport.c 2005-05-20 02:46:26 UTC (rev 15425) @@ -80,8 +80,14 @@ IN ULONG DeviceListSize OPTIONAL, OUT PBOOLEAN ConflictDetected) { + static int warned = 0; + if (!warned) + { + DPRINT1(
…
[View More]
"IoReportResourceForDetection partly implemented\n"); + warned = 1; + } + *ConflictDetected = FALSE; - DPRINT1("IoReportResourceForDetection partly implemented\n"); /* FIXME: Manually indicate conflicts with KD Ports */ if (DriverList) _____ Modified: trunk/reactos/ntoskrnl/io/pnproot.c --- trunk/reactos/ntoskrnl/io/pnproot.c 2005-05-20 02:37:51 UTC (rev 15424) +++ trunk/reactos/ntoskrnl/io/pnproot.c 2005-05-20 02:46:26 UTC (rev 15425) @@ -671,7 +671,7 @@ /* FIXME: */ } - DPRINT1("DeviceID: %wZ PDO %p\n", + DPRINT("DeviceID: %wZ PDO %p\n", &PdoDeviceExtension->DeviceID, Device->Pdo); @@ -684,7 +684,7 @@ /* FIXME: */ } - DPRINT1("InstanceID: %wZ PDO %p\n", + DPRINT("InstanceID: %wZ PDO %p\n", &PdoDeviceExtension->InstanceID, Device->Pdo); }
[View Less]
19 years, 12 months
1
0
0
0
[hpoussin] 15424: IopAssignDeviceResources():
by hpoussin@svn.reactos.com
IopAssignDeviceResources(): Fix translated resource list for I/O ports and memory ranges Fix raw resource list for interrupts Modified: trunk/reactos/ntoskrnl/io/pnpmgr.c _____ Modified: trunk/reactos/ntoskrnl/io/pnpmgr.c --- trunk/reactos/ntoskrnl/io/pnpmgr.c 2005-05-20 02:21:53 UTC (rev 15423) +++ trunk/reactos/ntoskrnl/io/pnpmgr.c 2005-05-20 02:37:51 UTC (rev 15424) @@ -908,6 +908,7 @@ PCM_PARTIAL_RESOURCE_DESCRIPTOR DescriptorRaw, DescriptorTranslated; ULONG NumberOfResources =
…
[View More]
0; ULONG i; + NTSTATUS Status; /* Fill DeviceNode->ResourceList and DeviceNode->ResourceListTranslated; * by using DeviceNode->ResourceRequirements */ @@ -923,19 +924,25 @@ /* Actually, simply use resource list #0 as assigned resource list */ ResourceList = &DeviceNode->ResourceRequirements->List[0]; if (ResourceList->Version != 1 || ResourceList->Revision != 1) - return STATUS_REVISION_MISMATCH; + { + Status = STATUS_REVISION_MISMATCH; + goto ByeBye; + } DeviceNode->ResourceList = ExAllocatePool(PagedPool, sizeof(CM_RESOURCE_LIST) + ResourceList->Count * sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR)); if (!DeviceNode->ResourceList) - return STATUS_INSUFFICIENT_RESOURCES; + { + Status = STATUS_INSUFFICIENT_RESOURCES; + goto ByeBye; + } DeviceNode->ResourceListTranslated = ExAllocatePool(PagedPool, sizeof(CM_RESOURCE_LIST) + ResourceList->Count * sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR)); if (!DeviceNode->ResourceListTranslated) { - ExFreePool(DeviceNode->ResourceList); - return STATUS_INSUFFICIENT_RESOURCES; + Status = STATUS_INSUFFICIENT_RESOURCES; + goto ByeBye; } DeviceNode->ResourceList->Count = 1; @@ -968,22 +975,32 @@ { case CmResourceTypePort: { + ULONG AddressSpace = 0; /* IO space */ DescriptorRaw->u.Port.Start = ResourceDescriptor->u.Port.MinimumAddress; DescriptorRaw->u.Port.Length = DescriptorTranslated->u.Port.Length = ResourceDescriptor->u.Port.Length; - /*FIXME: DescriptorTranslated->u.Port.Start? */ + if (!HalTranslateBusAddress( + DeviceNode->ResourceRequirements->InterfaceType, + DeviceNode->ResourceRequirements->BusNumber, + DescriptorRaw->u.Port.Start, + &AddressSpace, + &DescriptorTranslated->u.Port.Start)) + { + Status = STATUS_UNSUCCESSFUL; + goto ByeBye; + } break; } case CmResourceTypeInterrupt: { - DescriptorRaw->u.Interrupt.Vector = 0; + DescriptorRaw->u.Interrupt.Level = 0; /* FIXME: if IRQ 9 is in the possible range, use it. * This should be a PCI device */ if (ResourceDescriptor->u.Interrupt.MinimumVector <= 9 && ResourceDescriptor->u.Interrupt.MaximumVector >= 9) - DescriptorRaw->u.Interrupt.Level = 9; + DescriptorRaw->u.Interrupt.Vector = 9; else - DescriptorRaw->u.Interrupt.Level = ResourceDescriptor->u.Interrupt.MinimumVector; + DescriptorRaw->u.Interrupt.Vector = ResourceDescriptor->u.Interrupt.MinimumVector; DescriptorTranslated->u.Interrupt.Vector = HalGetInterruptVector( DeviceNode->ResourceRequirements->InterfaceType, @@ -997,15 +1014,24 @@ } case CmResourceTypeMemory: { + ULONG AddressSpace = 1; /* Memory space */ DescriptorRaw->u.Memory.Start = ResourceDescriptor->u.Memory.MinimumAddress; DescriptorRaw->u.Memory.Length = DescriptorTranslated->u.Memory.Length - = ResourceDescriptor->u.Port.Length; - /*FIXME: DescriptorTranslated->u.Memory.Start? */ + = ResourceDescriptor->u.Memory.Length; + if (!HalTranslateBusAddress( + DeviceNode->ResourceRequirements->InterfaceType, + DeviceNode->ResourceRequirements->BusNumber, + DescriptorRaw->u.Memory.Start, + &AddressSpace, + &DescriptorTranslated->u.Memory.Start)) + { + Status = STATUS_UNSUCCESSFUL; + goto ByeBye; + } break; } case CmResourceTypeDma: { - DPRINT1("IopAssignDeviceResources(): CmResourceTypeDma case not implemented\n"); DescriptorRaw->u.Dma.Channel = DescriptorTranslated->u.Dma.Channel = ResourceDescriptor->u.Dma.MinimumChannel; DescriptorRaw->u.Dma.Port = DescriptorTranslated->u.Dma.Port @@ -1050,6 +1076,20 @@ DeviceNode->ResourceListTranslated->List[0].PartialResourceList.Count = NumberOfResources; return STATUS_SUCCESS; + +ByeBye: + if (DeviceNode->ResourceList) + { + ExFreePool(DeviceNode->ResourceList); + DeviceNode->ResourceList = NULL; + } + if (DeviceNode->ResourceListTranslated) + { + ExFreePool(DeviceNode->ResourceListTranslated); + DeviceNode->ResourceListTranslated = NULL; + } + + return Status; }
[View Less]
19 years, 12 months
1
0
0
0
[Phreak] 15423: Removed invalid . from path in this usetup ini file as a temporary fix. Next step is to remove the darn ini file entirely
by Phreak@svn.reactos.com
Removed invalid . from path in this usetup ini file as a temporary fix. Next step is to remove the darn ini file entirely Modified: trunk/reactos/bootdata/packages/reactos.dff _____ Modified: trunk/reactos/bootdata/packages/reactos.dff --- trunk/reactos/bootdata/packages/reactos.dff 2005-05-20 02:19:00 UTC (rev 15422) +++ trunk/reactos/bootdata/packages/reactos.dff 2005-05-20 02:21:53 UTC (rev 15423) @@ -16,7 +16,7 @@ 1 = system32 2 = system32\drivers 3 = media\fonts -4 = . +4 = 5 =
…
[View More]
system32\drivers\etc 6 = inf
[View Less]
19 years, 12 months
1
0
0
0
[sedwards] 15422: adjust case on a header. Sorry Windows users. Do not use mixed case filenames.
by sedwards@svn.reactos.com
adjust case on a header. Sorry Windows users. Do not use mixed case filenames. Deleted: trunk/reactos/ntoskrnl/mm/RPoolMgr.h Modified: trunk/reactos/ntoskrnl/mm/ppool.c Added: trunk/reactos/ntoskrnl/mm/rpoolmgr.h _____ Deleted: trunk/reactos/ntoskrnl/mm/RPoolMgr.h --- trunk/reactos/ntoskrnl/mm/RPoolMgr.h 2005-05-20 01:54:10 UTC (rev 15421) +++ trunk/reactos/ntoskrnl/mm/RPoolMgr.h 2005-05-20 02:19:00 UTC (rev 15422) @@ -1,1047 +0,0 @@ -/* $Id$ - * - * COPYRIGHT: See COPYING in the
…
[View More]
top level directory - * PROJECT: ReactOS kernel - * FILE: ntoskrnl/mm/RPoolMgr.h - * PURPOSE: A semi-generic reuseable Pool implementation - * PROGRAMMER: Royce Mitchell III - * UPDATE HISTORY: - */ - -#ifndef RPOOLMGR_H -#define RPOOLMGR_H - -typedef unsigned long rulong; - -#define R_IS_POOL_PTR(pool,ptr) (void*)(ptr) >= pool->UserBase && (ULONG_PTR)(ptr) < ((ULONG_PTR)pool->UserBase + pool->UserSize) -#define R_ASSERT_PTR(pool,ptr) ASSERT( R_IS_POOL_PTR(pool,ptr) ) -#define R_ASSERT_SIZE(pool,sz) ASSERT( sz > (sizeof(R_USED)+2*R_RZ) && sz >= sizeof(R_FREE) && sz < pool->UserSize ) - -#ifndef R_ROUND_UP -#define R_ROUND_UP(x,s) ((PVOID)(((ULONG_PTR)(x)+(s)-1) & ~((ULONG_PTR)(s)-1))) -#endif//R_ROUND_UP - -#ifndef R_ROUND_DOWN -#define R_ROUND_DOWN(x,s) ((PVOID)(((ULONG_PTR)(x)) & ~((ULONG_PTR)(s)-1))) -#endif//R_ROUND_DOWN - -#ifndef R_QUEMIN -// R_QUEMIN is the minimum number of entries to keep in a que -#define R_QUEMIN 0 -#endif//R_QUEMIN - -#ifndef R_QUECOUNT -// 16, 32, 64, 128, 256, 512 -#define R_QUECOUNT 6 -#endif//R_QUECOUNT - -#ifndef R_RZ -// R_RZ is the redzone size -#define R_RZ 4 -#endif//R_RZ - -#ifndef R_RZ_LOVALUE -#define R_RZ_LOVALUE 0x87 -#endif//R_RZ_LOVALUE - -#ifndef R_RZ_HIVALUE -#define R_RZ_HIVALUE 0xA5 -#endif//R_RZ_HIVALUE - -#ifndef R_STACK -// R_STACK is the number of stack entries to store in blocks for debug purposes -#define R_STACK 3 -#endif//R_STACK - -#ifndef R_TAG -// R_TAG do we keep track of tags on a per-memory block basis? -#define R_TAG 0 -#endif//R_TAG - -#ifdef R_MAGIC -# ifndef R_FREE_MAGIC -# define R_FREE_MAGIC (rulong)(('F'<<0) + ('r'<<8) + ('E'<<16) + ('e'<<24)) -# endif//R_FREE_MAGIC -# ifndef R_USED_MAGIC -# define R_USED_MAGIC (rulong)(('u'<<0) + ('S'<<8) + ('e'<<16) + ('D'<<24)) -# endif//R_USED_MAGIC -#endif//R_MAGIC - -// **IMPORTANT NOTE** Magic, PrevSize, Size and Status must be at same offset -// in both the R_FREE and R_USED structures - -typedef struct _R_FREE -{ -#ifdef R_MAGIC - rulong FreeMagic; -#endif//R_MAGIC - rulong PrevSize : 30; - rulong Status : 2; - rulong Size; -#if R_STACK - ULONG_PTR LastOwnerStack[R_STACK]; -#endif//R_STACK - struct _R_FREE* NextFree; - struct _R_FREE* PrevFree; -} -R_FREE, *PR_FREE; - -typedef struct _R_USED -{ -#ifdef R_MAGIC - rulong UsedMagic; -#endif//R_MAGIC - rulong PrevSize : 30; - rulong Status : 2; - rulong Size; -#if R_STACK - ULONG_PTR LastOwnerStack[R_STACK]; -#endif//R_STACK - struct _R_USED* NextUsed; -#if R_RZ - rulong UserSize; // how many bytes the user actually asked for... -#endif//R_RZ - rulong Tag; -} -R_USED, *PR_USED; - -typedef struct _R_QUE -{ - rulong Count; - PR_USED First, Last; -} -R_QUE, *PR_QUE; - -typedef struct _R_POOL -{ - void* PoolBase; - rulong PoolSize; - void* UserBase; - rulong UserSize; - rulong Alignments[3]; - PR_FREE FirstFree, LastFree; - R_QUE Que[R_QUECOUNT][3]; - R_MUTEX Mutex; -} -R_POOL, *PR_POOL; - -#if !R_STACK -#define RiPrintLastOwner(Block) -#else -static void -RiPrintLastOwner ( PR_USED Block ) -{ - int i; - for ( i = 0; i < R_STACK; i++ ) - { - if ( Block->LastOwnerStack[i] != 0xDEADBEEF ) - { - R_DEBUG(" "); - if (!R_PRINT_ADDRESS ((PVOID)Block->LastOwnerStack[i]) ) - { - R_DEBUG("<%X>", Block->LastOwnerStack[i] ); - } - } - } -} -#endif//R_STACK - -static int -RQueWhich ( rulong size ) -{ - rulong que, quesize; - for ( que=0, quesize=16; que < R_QUECOUNT; que++, quesize<<=1 ) - { - if ( quesize >= size ) - { - return que; - } - } - return -1; -} - -static void -RQueInit ( PR_QUE que ) -{ - que->Count = 0; - que->First = NULL; - que->Last = NULL; -} - -static void -RQueAdd ( PR_QUE que, PR_USED Item ) -{ - ASSERT(Item); - Item->Status = 2; - Item->NextUsed = NULL; - ++que->Count; - if ( !que->Last ) - { - que->First = que->Last = Item; - return; - } - ASSERT(!que->Last->NextUsed); - que->Last->NextUsed = Item; - que->Last = Item; -} - -static PR_USED -RQueRemove ( PR_QUE que ) -{ - PR_USED Item; -#if R_QUEMIN - if ( que->count < R_QUEMIN ) - return NULL; -#endif - if ( !que->First ) - return NULL; - Item = que->First; - que->First = Item->NextUsed; - if ( !--que->Count ) - { - ASSERT ( !que->First ); - que->Last = NULL; - } - Item->Status = 0; - return Item; -} - -static void -RPoolAddFree ( PR_POOL pool, PR_FREE Item ) -{ - ASSERT(pool); - ASSERT(Item); - if ( !pool->FirstFree ) - { - pool->FirstFree = pool->LastFree = Item; - Item->NextFree = NULL; - } - else - { - pool->FirstFree->PrevFree = Item; - Item->NextFree = pool->FirstFree; - pool->FirstFree = Item; - } - Item->PrevFree = NULL; -} - -static void -RPoolRemoveFree ( PR_POOL pool, PR_FREE Item ) -{ - ASSERT(pool); - ASSERT(Item); - if ( Item->NextFree ) - Item->NextFree->PrevFree = Item->PrevFree; - else - { - ASSERT ( pool->LastFree == Item ); - pool->LastFree = Item->PrevFree; - } - if ( Item->PrevFree ) - Item->PrevFree->NextFree = Item->NextFree; - else - { - ASSERT ( pool->FirstFree == Item ); - pool->FirstFree = Item->NextFree; - } -#ifdef DBG - Item->NextFree = Item->PrevFree = (PR_FREE)(ULONG_PTR)0xDEADBEEF; -#endif//DBG -} - -static void -RFreeFillStack ( PR_FREE free ) -{ - int i; - ULONG stack[R_EXTRA_STACK_UP+3]; // need to skip 3 known levels of stack trace - memset ( stack, 0xCD, sizeof(stack) ); - R_GET_STACK_FRAMES ( stack, R_EXTRA_STACK_UP+3 ); - for ( i = 0; i < R_EXTRA_STACK_UP; i++ ) - free->LastOwnerStack[i] = stack[i+3]; -} - -static void -RUsedFillStack ( PR_USED used ) -{ - int i; - ULONG stack[R_EXTRA_STACK_UP+2]; // need to skip 2 known levels of stack trace - memset ( stack, 0xCD, sizeof(stack) ); - R_GET_STACK_FRAMES ( stack, R_EXTRA_STACK_UP+2 ); - for ( i = 0; i < R_EXTRA_STACK_UP; i++ ) - used->LastOwnerStack[i] = stack[i+2]; -} - -static PR_FREE -RFreeInit ( void* memory ) -{ - PR_FREE block = (PR_FREE)memory; -#if R_FREEMAGIC - block->FreeMagic = R_FREE_MAGIC; -#endif//R_FREEMAGIC - block->Status = 0; - RFreeFillStack ( block ); -#ifdef DBG - block->PrevFree = block->NextFree = (PR_FREE)(ULONG_PTR)0xDEADBEEF; -#endif//DBG - return block; -} - -PR_POOL -RPoolInit ( void* PoolBase, rulong PoolSize, int align1, int align2, int align3 ) -{ - int align, que; - PR_POOL pool = (PR_POOL)PoolBase; - - pool->PoolBase = PoolBase; - pool->PoolSize = PoolSize; - pool->UserBase = (char*)pool->PoolBase + sizeof(R_POOL); - pool->UserSize = PoolSize - sizeof(R_POOL); - pool->Alignments[0] = align1; - pool->Alignments[1] = align2; - pool->Alignments[2] = align3; - pool->FirstFree = pool->LastFree = NULL; - - RPoolAddFree ( pool, - RFreeInit ( pool->UserBase )); - - pool->FirstFree->PrevSize = 0; - pool->FirstFree->Size = pool->UserSize; - - for ( que = 0; que < R_QUECOUNT; que++ ) - { - for ( align = 0; align < 3; align++ ) - { - RQueInit ( &pool->Que[que][align] ); - } - } - return pool; -} - -static const char* -RFormatTag ( rulong Tag, char* buf ) -{ - int i; - *(rulong*)&buf[0] = Tag; - buf[4] = 0; - for ( i = 0; i < 4; i++ ) - { - if ( !buf[i] ) - buf[i] = ' '; - } - return buf; -} - -#if !R_RZ -#define RUsedRedZoneCheck(pUsed,Addr,file,line) -#else//R_RZ -static void -RiBadBlock ( PR_USED pUsed, char* Addr, const char* violation, const char* file, int line, int printzone ) -{ - char tag[5]; - int i; - - R_DEBUG("%s(%i): %s detected for paged pool address 0x%x\n", - file, line, violation, Addr ); - -#ifdef R_MAGIC - R_DEBUG ( "UsedMagic 0x%x, ", pUsed->UsedMagic ); -#endif//R_MAGIC - R_DEBUG ( "Tag %s(%X), Size %i, UserSize %i", - RFormatTag(pUsed->Tag,tag), - pUsed->Tag, - pUsed->Size, - pUsed->UserSize ); - - if ( printzone ) - { - unsigned char* HiZone = (unsigned char*)Addr + pUsed->UserSize; - unsigned char* LoZone = (unsigned char*)Addr - R_RZ; // this is to simplify indexing below... - R_DEBUG ( ", LoZone " ); - for ( i = 0; i < R_RZ; i++ ) - R_DEBUG ( "%02x", LoZone[i] ); - R_DEBUG ( ", HiZone " ); - for ( i = 0; i < R_RZ; i++ ) - R_DEBUG ( "%02x", HiZone[i] ); - } - R_DEBUG ( "\n" ); - - R_DEBUG ( "First few Stack Frames:" ); - RiPrintLastOwner ( pUsed ); - R_DEBUG ( "\n" ); - - R_DEBUG ( "Contents of Block:\n" ); - for ( i = 0; i < 8*16 && i < pUsed->UserSize; i += 16 ) - { - int j; - R_DEBUG ( "%04X ", i ); - for ( j = 0; j < 16; j++ ) - { - if ( i+j < pUsed->UserSize ) - { - R_DEBUG ( "%02X ", (unsigned)(unsigned char)Addr[i+j] ); - } - else - { - R_DEBUG ( " " ); - } - } - R_DEBUG(" "); - for ( j = 0; j < 16; j++ ) - { - if ( i+j < pUsed->UserSize ) - { - char c = Addr[i+j]; - if ( c < 0x20 || c > 0x7E ) - c = '.'; - R_DEBUG ( "%c", c ); - } - else - { - R_DEBUG ( " " ); - } - } - R_DEBUG("\n"); - } - R_PANIC(); -} -static void -RUsedRedZoneCheck ( PR_POOL pool, PR_USED pUsed, char* Addr, const char* file, int line ) -{ - int i; - unsigned char *LoZone, *HiZone; - int bLow = 1; - int bHigh = 1; - - ASSERT ( Addr >= (char*)pool->UserBase && Addr < ((char*)pool->UserBase + pool->UserSize - 16) ); -#ifdef R_MAGIC - if ( pUsed->UsedMagic == MM_PPOOL_FREEMAGIC ) - { - pUsed->UserSize = 0; // just to keep from confusion, MmpBadBlock() doesn't return... - RiBadBlock ( pUsed, Addr, "double-free", file, line, 0 ); - } - if ( pUsed->UsedMagic != MM_PPOOL_USEDMAGIC ) - { - RiBadBlock ( pUsed, Addr, "bad magic", file, line, 0 ); - } -#endif//R_MAGIC - switch ( pUsed->Status ) - { - case 0: // freed into main pool - case 2: // in ques - RiBadBlock ( pUsed, Addr, "double-free", file, line, 0 ); - // no need for break here - RiBadBlock doesn't return - case 1: // allocated - this is okay - break; - default: - RiBadBlock ( pUsed, Addr, "corrupt status", file, line, 0 ); - } - if ( pUsed->Status != 1 ) - { - RiBadBlock ( pUsed, Addr, "double-free", file, line, 0 ); - } - if ( pUsed->Size > pool->PoolSize || pUsed->Size == 0 ) - { - RiBadBlock ( pUsed, Addr, "invalid size", file, line, 0 ); - } - if ( pUsed->UserSize > pool->PoolSize || pUsed->UserSize == 0 ) - { - RiBadBlock ( pUsed, Addr, "invalid user size", file, line, 0 ); - } - HiZone = (unsigned char*)Addr + pUsed->UserSize; - LoZone = (unsigned char*)Addr - R_RZ; // this is to simplify indexing below... - for ( i = 0; i < R_RZ && bLow && bHigh; i++ ) - { - bLow = bLow && ( LoZone[i] == R_RZ_LOVALUE ); - bHigh = bHigh && ( HiZone[i] == R_RZ_HIVALUE ); - } - if ( !bLow || !bHigh ) - { - const char* violation = "High and Low-side redzone overwrite"; - if ( bHigh ) // high is okay, so it was just low failed - violation = "Low-side redzone overwrite"; - else if ( bLow ) // low side is okay, so it was just high failed - violation = "High-side redzone overwrite"; - RiBadBlock ( pUsed, Addr, violation, file, line, 1 ); - } -} -#endif//R_RZ - -PR_FREE -RPreviousBlock ( PR_FREE Block ) -{ - if ( Block->PrevSize > 0 ) - return (PR_FREE)( (char*)Block - Block->PrevSize ); - return NULL; -} - -PR_FREE -RNextBlock ( PR_POOL pool, PR_FREE Block ) -{ - PR_FREE NextBlock = (PR_FREE)( (char*)Block + Block->Size ); - if ( (char*)NextBlock >= (char*)pool->UserBase + pool->UserSize ) - NextBlock = NULL; - return NextBlock; -} - -inline static void* -RHdrToBody ( void* blk ) -/* - * FUNCTION: Translate a block header address to the corresponding block - * address (internal) - */ -{ - return ( (void *) ((char*)blk + sizeof(R_USED) + R_RZ) ); -} - -inline static PR_USED -RBodyToHdr ( void* addr ) -{ - return (PR_USED) - ( ((char*)addr) - sizeof(R_USED) - R_RZ ); -} - -static int -RiInFreeChain ( PR_POOL pool, PR_FREE Block ) -{ - PR_FREE Free; - Free = pool->FirstFree; - if ( Free == Block ) - return 1; - while ( Free != Block ) - { - Free = Free->NextFree; - if ( !Free ) - return 0; - } - return 1; -} - -static void -RPoolRedZoneCheck ( PR_POOL pool, const char* file, int line ) -{ - { - PR_USED Block = (PR_USED)pool->UserBase; - PR_USED NextBlock; - - for ( ;; ) - { - switch ( Block->Status ) - { - case 0: // block is in chain - ASSERT ( RiInFreeChain ( pool, (PR_FREE)Block ) ); - break; - case 1: // block is allocated - RUsedRedZoneCheck ( pool, Block, RHdrToBody(Block), file, line ); - break; - case 2: // block is in que - // nothing to verify here yet - break; - default: - ASSERT ( !"invalid status in memory block found in pool!" ); - } - NextBlock = (PR_USED)RNextBlock(pool,(PR_FREE)Block); - if ( !NextBlock ) - break; - ASSERT ( NextBlock->PrevSize == Block->Size ); - Block = NextBlock; - } - } - { - // now let's step through the list of free pointers and verify - // each one can be found by size-jumping... - PR_FREE Free = (PR_FREE)pool->FirstFree; - while ( Free ) - { - PR_FREE NextFree = (PR_FREE)pool->UserBase; - if ( Free != NextFree ) - { - while ( NextFree != Free ) - { - NextFree = RNextBlock ( pool, NextFree ); - ASSERT(NextFree); - } - } - Free = Free->NextFree; - } - } -} - -static void -RSetSize ( PR_POOL pool, PR_FREE Block, rulong NewSize, PR_FREE NextBlock ) -{ - R_ASSERT_PTR(pool,Block); - ASSERT ( NewSize < pool->UserSize ); - ASSERT ( NewSize >= sizeof(R_FREE) ); - Block->Size = NewSize; - if ( !NextBlock ) - NextBlock = RNextBlock ( pool, Block ); - if ( NextBlock ) - NextBlock->PrevSize = NewSize; -} - -static PR_FREE -RFreeSplit ( PR_POOL pool, PR_FREE Block, rulong NewSize ) -{ - PR_FREE NewBlock = (PR_FREE)((char*)Block + NewSize); - RSetSize ( pool, NewBlock, Block->Size - NewSize, NULL ); - RSetSize ( pool, Block, NewSize, NewBlock ); - RFreeInit ( NewBlock ); - RPoolAddFree ( pool, NewBlock ); - return NewBlock; -} - -static void -RFreeMerge ( PR_POOL pool, PR_FREE First, PR_FREE Second ) -{ - ASSERT ( RPreviousBlock(Second) == First ); - ASSERT ( First->Size == Second->PrevSize ); - RPoolRemoveFree ( pool, Second ); - RSetSize ( pool, First, First->Size + Second->Size, NULL ); -} - -static void -RPoolReclaim ( PR_POOL pool, PR_FREE FreeBlock ) -{ - PR_FREE NextBlock, PreviousBlock; - - RFreeInit ( FreeBlock ); - RPoolAddFree ( pool, FreeBlock ); - - // TODO FIXME - don't merge and always insert freed blocks at the end for debugging purposes... - - /* - * If the next block is immediately adjacent to the newly freed one then - * merge them. - * PLEASE DO NOT WIPE OUT 'MAGIC' OR 'LASTOWNER' DATA FOR MERGED FREE BLOCKS - */ - NextBlock = RNextBlock ( pool, FreeBlock ); - if ( NextBlock != NULL && !NextBlock->Status ) - { - RFreeMerge ( pool, FreeBlock, NextBlock ); - } - - /* - * If the previous block is adjacent to the newly freed one then - * merge them. - * PLEASE DO NOT WIPE OUT 'MAGIC' OR 'LASTOWNER' DATA FOR MERGED FREE BLOCKS - */ - PreviousBlock = RPreviousBlock ( FreeBlock ); - if ( PreviousBlock != NULL && !PreviousBlock->Status ) - { - RFreeMerge ( pool, PreviousBlock, FreeBlock ); - } -} - -static void -RiUsedInit ( PR_USED Block, rulong Tag ) -{ - Block->Status = 1; - RUsedFillStack ( Block ); -#if R_MAGIC - Block->UsedMagic = R_USED_MAGIC; -#endif//R_MAGIC - //ASSERT_SIZE ( Block->Size ); - - // now add the block to the used block list -#ifdef DBG - Block->NextUsed = (PR_USED)(ULONG_PTR)0xDEADBEEF; -#endif//R_USED_LIST - - Block->Tag = Tag; -} - -#if !R_RZ -#define RiUsedInitRedZone(Block,UserSize) -#else//R_RZ -static void -RiUsedInitRedZone ( PR_USED Block, rulong UserSize ) -{ - // write out buffer-overrun detection bytes - char* Addr = (char*)RHdrToBody(Block); - Block->UserSize = UserSize; - memset ( Addr - R_RZ, R_RZ_LOVALUE, R_RZ ); - memset ( Addr + Block->UserSize, R_RZ_HIVALUE, R_RZ ); -#ifdef DBG - memset ( Addr, 0xCD, UserSize ); -#endif//DBG -} -#endif//R_RZ - -static void* -RPoolAlloc ( PR_POOL pool, rulong NumberOfBytes, rulong Tag, rulong align ) -{ - PR_USED NewBlock; - PR_FREE BestBlock, - NextBlock, - PreviousBlock, - BestPreviousBlock, - CurrentBlock; - void* BestAlignedAddr; - int que, - queBytes = NumberOfBytes; - rulong BlockSize, - Alignment; - int que_reclaimed = 0; - - ASSERT ( pool ); - ASSERT ( align < 3 ); - - R_ACQUIRE_MUTEX(pool); - - if ( !NumberOfBytes ) - { - R_DEBUG("0 bytes requested - initiating pool verification\n"); - RPoolRedZoneCheck ( pool, __FILE__, __LINE__ ); - R_RELEASE_MUTEX(pool); - return NULL; - } - if ( NumberOfBytes > pool->PoolSize ) - { - if ( R_IS_POOL_PTR(pool,NumberOfBytes) ) - { - R_DEBUG("red zone verification requested for block 0x%X\n", NumberOfBytes ); - RUsedRedZoneCheck(pool,RBodyToHdr((void*)NumberOfBytes), (char*)NumberOfBytes, __FILE__, __LINE__ ); - R_RELEASE_MUTEX(pool); - return NULL; - } - R_DEBUG("Invalid allocation request: %i bytes\n", NumberOfBytes ); - R_RELEASE_MUTEX(pool); - return NULL; - } - - que = RQueWhich ( NumberOfBytes ); - if ( que >= 0 ) - { - if ( (NewBlock = RQueRemove ( &pool->Que[que][align] )) ) - { - R_RELEASE_MUTEX(pool); - RiUsedInit ( NewBlock, Tag ); - RiUsedInitRedZone ( NewBlock, NumberOfBytes ); - return RHdrToBody(NewBlock); - } - queBytes = 16 << que; - } - - /* - * Calculate the total number of bytes we will need. - */ - BlockSize = queBytes + sizeof(R_USED) + 2*R_RZ; - if (BlockSize < sizeof(R_FREE)) - { - /* At least we need the size of the free block header. */ - BlockSize = sizeof(R_FREE); - } - -try_again: - /* - * Find the best-fitting block. - */ - BestBlock = NULL; - Alignment = pool->Alignments[align]; - PreviousBlock = NULL; - BestPreviousBlock = NULL, - CurrentBlock = pool->FirstFree; - BestAlignedAddr = NULL; - - while ( CurrentBlock != NULL ) - { - PVOID Addr = RHdrToBody(CurrentBlock); - PVOID CurrentBlockEnd = (char*)CurrentBlock + CurrentBlock->Size; - /* calculate last size-aligned address available within this block */ - PVOID AlignedAddr = R_ROUND_DOWN((char*)CurrentBlockEnd-queBytes-R_RZ, Alignment); - ASSERT ( (char*)AlignedAddr+queBytes+R_RZ <= (char*)CurrentBlockEnd ); - - /* special case, this address is already size-aligned, and the right size */ - if ( Addr == AlignedAddr ) - { - BestAlignedAddr = AlignedAddr; - BestPreviousBlock = PreviousBlock; - BestBlock = CurrentBlock; - break; - } - // if we carve out a size-aligned block... is it still past the end of this - // block's free header? - else if ( (char*)RBodyToHdr(AlignedAddr) - >= (char*)CurrentBlock+sizeof(R_FREE) ) - { - /* - * there's enough room to allocate our size-aligned memory out - * of this block, see if it's a better choice than any previous - * finds - */ - if ( BestBlock == NULL - || BestBlock->Size > CurrentBlock->Size ) - { - BestAlignedAddr = AlignedAddr; - BestPreviousBlock = PreviousBlock; - BestBlock = CurrentBlock; - } - } - - PreviousBlock = CurrentBlock; - CurrentBlock = CurrentBlock->NextFree; - } - - /* - * We didn't find anything suitable at all. - */ - if (BestBlock == NULL) - { - if ( !que_reclaimed ) - { - // reclaim que - int i, j; - for ( i = 0; i < R_QUECOUNT; i++ ) - { - for ( j = 0; j < 3; j++ ) - { - while ( (BestBlock = (PR_FREE)RQueRemove ( &pool->Que[i][j] )) ) - { - RPoolReclaim ( pool, BestBlock ); - } - } - } - - que_reclaimed = 1; - goto try_again; - } - DPRINT1("Trying to allocate %lu bytes from paged pool - nothing suitable found, returning NULL\n", - queBytes ); - R_RELEASE_MUTEX(pool); - return NULL; - } - /* - * we found a best block. If Addr isn't already aligned, we've pre-qualified that - * there's room at the beginning of the block for a free block... - */ - { - void* Addr = RHdrToBody(BestBlock); - if ( BestAlignedAddr != Addr ) - { - PR_FREE NewFreeBlock = RFreeSplit ( - pool, - BestBlock, - (char*)RBodyToHdr(BestAlignedAddr) - (char*)BestBlock ); - ASSERT ( BestAlignedAddr > Addr ); - - //DPRINT ( "breaking off preceding bytes into their own block...\n" ); - /*DPRINT ( "NewFreeBlock 0x%x Size %lu (Old Block's new size %lu) NextFree 0x%x\n", - NewFreeBlock, NewFreeBlock->Size, BestBlock->Size, BestBlock->NextFree );*/ - - /* we want the following code to use our size-aligned block */ - BestPreviousBlock = BestBlock; - BestBlock = NewFreeBlock; - - //VerifyPagedPool(); - } - } - /* - * Is there enough space to create a second block from the unused portion. - */ - if ( (BestBlock->Size - BlockSize) > sizeof(R_FREE) ) - { - /*DPRINT("BestBlock 0x%x Size 0x%x BlockSize 0x%x NewSize 0x%x\n", - BestBlock, BestBlock->Size, BlockSize, NewSize );*/ - - /* - * Create the new free block. - */ - NextBlock = RFreeSplit ( pool, BestBlock, BlockSize ); - //ASSERT_SIZE ( NextBlock->Size ); - } - /* - * Remove the selected block from the list of free blocks. - */ - //DPRINT ( "Removing selected block from free block list\n" ); - RPoolRemoveFree ( pool, BestBlock ); - /* - * Create the new used block header. - */ - NewBlock = (PR_USED)BestBlock; - RiUsedInit ( NewBlock, Tag ); - - R_RELEASE_MUTEX(pool); - - /* RtlZeroMemory(RHdrToBody(NewBlock), NumberOfBytes);*/ - - RiUsedInitRedZone ( NewBlock, NumberOfBytes ); - - return RHdrToBody(NewBlock); -} - -static void -RPoolFree ( PR_POOL pool, void* Addr ) -{ - PR_USED UsedBlock; - rulong UsedSize; - PR_FREE FreeBlock; - rulong UserSize; - int que; - - ASSERT(pool); - if ( !Addr ) - { - R_DEBUG("Attempt to free NULL ptr, initiating Red Zone Check\n" ); - R_ACQUIRE_MUTEX(pool); - RPoolRedZoneCheck ( pool, __FILE__, __LINE__ ); - R_RELEASE_MUTEX(pool); - return; - } - R_ASSERT_PTR(pool,Addr); - - UsedBlock = RBodyToHdr(Addr); - UsedSize = UsedBlock->Size; - FreeBlock = (PR_FREE)UsedBlock; -#if R_RZ - UserSize = UsedBlock->UserSize; -#else - UserSize = UsedSize - sizeof(R_USED) - 2*R_RZ; -#endif//R_RZ - - RUsedRedZoneCheck ( pool, UsedBlock, Addr, __FILE__, __LINE__ ); - -#if R_RZ - memset ( Addr, 0xCD, UsedBlock->UserSize ); -#endif - - que = RQueWhich ( UserSize ); - if ( que >= 0 ) - { - int queBytes = 16 << que; - ASSERT( queBytes >= UserSize ); - if ( que >= 0 ) - { - int align = 0; - if ( R_ROUND_UP(Addr,pool->Alignments[2]) == Addr ) - align = 2; - else if ( R_ROUND_UP(Addr,pool->Alignments[1]) == Addr ) - align = 1; - R_ACQUIRE_MUTEX(pool); - RQueAdd ( &pool->Que[que][align], UsedBlock ); - R_RELEASE_MUTEX(pool); - return; - } - } - - R_ACQUIRE_MUTEX(pool); - RPoolReclaim ( pool, FreeBlock ); - R_RELEASE_MUTEX(pool); -} - -static void -RPoolDumpByTag ( PR_POOL pool, rulong Tag ) -{ - PR_USED Block = (PR_USED)pool->UserBase; - PR_USED NextBlock; - int count = 0; - char tag[5]; - - // TODO FIXME - should we validate params or ASSERT_IRQL? - R_DEBUG ( "PagedPool Dump by tag '%s'\n", RFormatTag(Tag,tag) ); - R_DEBUG ( " -BLOCK-- --SIZE--\n" ); - - R_ACQUIRE_MUTEX(pool); - for ( ;; ) - { - if ( Block->Status == 1 && Block->Tag == Tag ) - { - R_DEBUG ( " %08X %08X\n", Block, Block->Size ); - ++count; - } - NextBlock = (PR_USED)RNextBlock(pool,(PR_FREE)Block); - if ( !NextBlock ) - break; - ASSERT ( NextBlock->PrevSize == Block->Size ); - Block = NextBlock; - } - R_RELEASE_MUTEX(pool); - - R_DEBUG ( "Entries found for tag '%s': %i\n", tag, count ); -} - -rulong -RPoolQueryTag ( void* Addr ) -{ - PR_USED Block = RBodyToHdr(Addr); - // TODO FIXME - should we validate params? -#if R_MAGIC - if ( Block->UsedMagic != R_USED_MAGIC ) - return 0xDEADBEEF; -#endif//R_MAGIC - if ( Block->Status != 1 ) - return 0xDEADBEEF; - return Block->Tag; -} - -void -RPoolStats ( PR_POOL pool ) -{ - int free=0, used=0, qued=0; - PR_USED Block = (PR_USED)pool->UserBase; - - R_ACQUIRE_MUTEX(pool); - while ( Block ) - { - switch ( Block->Status ) - { - case 0: - ++free; - break; - case 1: - ++used; - break; - case 2: - ++qued; - break; [truncated at 1000 lines; 66 more skipped]
[View Less]
19 years, 12 months
1
0
0
0
[hpoussin] 15421: Set BusNumber and SlotNumber in resource requirements list
by hpoussin@svn.reactos.com
Set BusNumber and SlotNumber in resource requirements list Modified: trunk/reactos/drivers/bus/pci/pdo.c _____ Modified: trunk/reactos/drivers/bus/pci/pdo.c --- trunk/reactos/drivers/bus/pci/pdo.c 2005-05-20 01:10:00 UTC (rev 15420) +++ trunk/reactos/drivers/bus/pci/pdo.c 2005-05-20 01:54:10 UTC (rev 15421) @@ -409,6 +409,8 @@ ResourceList->ListSize = ListSize; ResourceList->InterfaceType = PCIBus; + ResourceList->BusNumber = DeviceExtension->BusNumber, +
…
[View More]
ResourceList->SlotNumber = DeviceExtension->SlotNumber.u.AsULONG, ResourceList->AlternativeLists = 1; ResourceList->List[0].Version = 1;
[View Less]
19 years, 12 months
1
0
0
0
← Newer
1
...
26
27
28
29
30
31
32
...
82
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Results per page:
10
25
50
100
200