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
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
July 2008
----- 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
25 participants
761 discussions
Start a n
N
ew thread
[ros-arm-bringup] 34859: - Fix a couple of bugs, and majorly refactor MmDeleteVirtualMapping to sync it to the x86 version somewhat more.
by ros-arm-bringup@svn.reactos.org
Author: ros-arm-bringup Date: Sun Jul 27 15:58:23 2008 New Revision: 34859 URL:
http://svn.reactos.org/svn/reactos?rev=34859&view=rev
Log: - Fix a couple of bugs, and majorly refactor MmDeleteVirtualMapping to sync it to the x86 version somewhat more. Modified: trunk/reactos/ntoskrnl/mm/arm/stubs.c Modified: trunk/reactos/ntoskrnl/mm/arm/stubs.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/arm/stubs.c?re…
============================================================================== --- trunk/reactos/ntoskrnl/mm/arm/stubs.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/arm/stubs.c [iso-8859-1] Sun Jul 27 15:58:23 2008 @@ -569,80 +569,42 @@ { PMMPTE PointerPte; MMPTE Pte; + PFN_NUMBER Pfn = 0; // // Get the PTE // PointerPte = MiGetPageTableForProcess(NULL, Address, FALSE); - if (!PointerPte) - { - // - // Invalid PDE - // - if (WasDirty) *WasDirty = FALSE; - if (Page) *Page = 0; - return; - } - - // - // Save the PTE - // - Pte = *PointerPte; - if (PointerPte->u.Hard.L1.Fault.Type == FaultPte) - { - // - // Invalid PTE - // - if (WasDirty) *WasDirty = FALSE; - if (Page) *Page = 0; - return; - } - - // - // Destroy the PTE - // - PointerPte->u.Hard.AsUlong = 0; - ASSERT(PointerPte->u.Hard.L2.Fault.Type == FaultPte); - - // - // Flush the TLB - // - MiFlushTlb(PointerPte, Address); - - // - // Check if the PTE was valid - // - if (Pte.u.Hard.L2.Fault.Type != FaultPte) - { - // - // Mark the page as unmapped - // - MmMarkPageUnmapped(Pte.u.Hard.L2.Small.BaseAddress); - } - else - { - // - // Make it sane - // - Pte.u.Hard.L2.Small.BaseAddress = 0; - } - - // - // Check if this was our page, and valid - // - if ((FreePage) && (Pte.u.Hard.L2.Fault.Type != FaultPte)) - { - // - // Release it - // - MmReleasePageMemoryConsumer(MC_NPPOOL, Pte.u.Hard.L2.Small.BaseAddress); + if (PointerPte) + { + // + // Save and destroy the PTE + // + Pte = *PointerPte; + PointerPte->u.Hard.AsUlong = 0; + + // + // Flush the TLB + // + MiFlushTlb(PointerPte, Address); + + // + // Unmap the PFN + // + Pfn = Pte.u.Hard.L2.Small.BaseAddress; + if (Pfn) MmMarkPageUnmapped(Pfn); + + // + // Release the PFN if it was ours + // + if ((FreePage) && (Pfn)) MmReleasePageMemoryConsumer(MC_NPPOOL, Pfn); } // // Return if the page was dirty // - if (WasDirty) *WasDirty = TRUE; // LIE!!! - if (Page) *Page = Pte.u.Hard.L2.Small.BaseAddress; + if (WasDirty) *WasDirty = FALSE; // LIE!!! + if (Page) *Page = Pfn; } PVOID
16 years, 5 months
1
0
0
0
[jmorlan] 34858: - Work with screen buffer data using pointers rather than offsets; remove confusing GET_CELL_BUFFER and SET_CELL_BUFFER macros. - CsrFreeProcessData: Merge two ifs with the same condition. - Use the pointer-to-pointer trick to simplify linked list handling in CsrFreeProcessData, IntInsertAliasHeader, IntInsertAliasEntry, and IntDeleteAliasEntry.
by jmorlan@svn.reactos.org
Author: jmorlan Date: Sun Jul 27 15:08:18 2008 New Revision: 34858 URL:
http://svn.reactos.org/svn/reactos?rev=34858&view=rev
Log: - Work with screen buffer data using pointers rather than offsets; remove confusing GET_CELL_BUFFER and SET_CELL_BUFFER macros. - CsrFreeProcessData: Merge two ifs with the same condition. - Use the pointer-to-pointer trick to simplify linked list handling in CsrFreeProcessData, IntInsertAliasHeader, IntInsertAliasEntry, and IntDeleteAliasEntry. Modified: trunk/reactos/subsystems/win32/csrss/api/process.c trunk/reactos/subsystems/win32/csrss/include/conio.h trunk/reactos/subsystems/win32/csrss/win32csr/alias.c trunk/reactos/subsystems/win32/csrss/win32csr/conio.c trunk/reactos/subsystems/win32/csrss/win32csr/guiconsole.c trunk/reactos/subsystems/win32/csrss/win32csr/tuiconsole.c Modified: trunk/reactos/subsystems/win32/csrss/api/process.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/api…
============================================================================== --- trunk/reactos/subsystems/win32/csrss/api/process.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/csrss/api/process.c [iso-8859-1] Sun Jul 27 15:08:18 2008 @@ -129,18 +129,16 @@ { ULONG hash; UINT c; - PCSRSS_PROCESS_DATA pProcessData, pPrevProcessData = NULL; + PCSRSS_PROCESS_DATA pProcessData, *pPrevLink; hash = ((ULONG_PTR)Pid >> 2) % (sizeof(ProcessData) / sizeof(*ProcessData)); + pPrevLink = &ProcessData[hash]; LOCK; - pProcessData = ProcessData[hash]; - - while (pProcessData && pProcessData->ProcessId != Pid) - { - pPrevProcessData = pProcessData; - pProcessData = pProcessData->next; + while ((pProcessData = *pPrevLink) && pProcessData->ProcessId != Pid) + { + pPrevLink = &pProcessData->next; } if (pProcessData) @@ -150,10 +148,6 @@ { NtClose(pProcessData->Process); } - if (pProcessData->Console) - { - RemoveEntryList(&pProcessData->ProcessEntry); - } if (pProcessData->HandleTable) { for (c = 0; c < pProcessData->HandleTableSize; c++) @@ -168,6 +162,7 @@ RtlDeleteCriticalSection(&pProcessData->HandleTableLock); if (pProcessData->Console) { + RemoveEntryList(&pProcessData->ProcessEntry); CsrReleaseObjectByPointer((Object_t *) pProcessData->Console); } if (pProcessData->CsrSectionViewBase) @@ -178,14 +173,7 @@ { NtClose(pProcessData->ServerCommunicationPort); } - if (pPrevProcessData) - { - pPrevProcessData->next = pProcessData->next; - } - else - { - ProcessData[hash] = pProcessData->next; - } + *pPrevLink = pProcessData->next; RtlFreeHeap(CsrssApiHeap, 0, pProcessData); UNLOCK; Modified: trunk/reactos/subsystems/win32/csrss/include/conio.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/inc…
============================================================================== --- trunk/reactos/subsystems/win32/csrss/include/conio.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/csrss/include/conio.h [iso-8859-1] Sun Jul 27 15:08:18 2008 @@ -90,7 +90,7 @@ VOID STDCALL ConioDeleteConsole(Object_t *Object); VOID STDCALL ConioDeleteScreenBuffer(Object_t *Buffer); void STDCALL ConioProcessKey(MSG *msg, PCSRSS_CONSOLE Console, BOOL TextMode); -DWORD FASTCALL ConioGetBufferOffset(PCSRSS_SCREEN_BUFFER Buf, ULONG X, ULONG Y); +PBYTE FASTCALL ConioCoordToPointer(PCSRSS_SCREEN_BUFFER Buf, ULONG X, ULONG Y); VOID FASTCALL ConioDrawConsole(PCSRSS_CONSOLE Console); VOID FASTCALL ConioConsoleCtrlEvent(DWORD Event, PCSRSS_PROCESS_DATA ProcessData); VOID FASTCALL ConioConsoleCtrlEventTimeout(DWORD Event, PCSRSS_PROCESS_DATA ProcessData, Modified: trunk/reactos/subsystems/win32/csrss/win32csr/alias.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win…
============================================================================== --- trunk/reactos/subsystems/win32/csrss/win32csr/alias.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/csrss/win32csr/alias.c [iso-8859-1] Sun Jul 27 15:08:18 2008 @@ -86,35 +86,20 @@ IntInsertAliasHeader(PALIAS_HEADER * RootHeader, PALIAS_HEADER NewHeader) { PALIAS_HEADER CurrentHeader; - PALIAS_HEADER LastHeader = NULL; - - if (*RootHeader == 0) - { - *RootHeader = NewHeader; - return; - } - - CurrentHeader = *RootHeader; - - while(CurrentHeader) + PALIAS_HEADER *LastLink = RootHeader; + + while ((CurrentHeader = *LastLink) != NULL) { INT Diff = _wcsicmp(NewHeader->lpExeName, CurrentHeader->lpExeName); if (Diff < 0) { - if (!LastHeader) - *RootHeader = NewHeader; - else - LastHeader->Next = NewHeader; - - NewHeader->Next = CurrentHeader; - return; + break; } - LastHeader = CurrentHeader; - CurrentHeader = CurrentHeader->Next; + LastLink = &CurrentHeader->Next; } - LastHeader->Next = NewHeader; - NewHeader->Next = NULL; + *LastLink = NewHeader; + NewHeader->Next = CurrentHeader; } PALIAS_ENTRY @@ -144,35 +129,20 @@ IntInsertAliasEntry(PALIAS_HEADER Header, PALIAS_ENTRY NewEntry) { PALIAS_ENTRY CurrentEntry; - PALIAS_ENTRY LastEntry = NULL; - - CurrentEntry = Header->Data; - - if (!CurrentEntry) - { - Header->Data = NewEntry; - NewEntry->Next = NULL; - return; - } - - while(CurrentEntry) + PALIAS_ENTRY *LastLink = &Header->Data; + + while ((CurrentEntry = *LastLink) != NULL) { INT Diff = _wcsicmp(NewEntry->lpSource, CurrentEntry->lpSource); if (Diff < 0) { - if (!LastEntry) - Header->Data = NewEntry; - else - LastEntry->Next = NewEntry; - NewEntry->Next = CurrentEntry; - return; - } - LastEntry = CurrentEntry; - CurrentEntry = CurrentEntry->Next; + break; + } + LastLink = &CurrentEntry->Next; } - LastEntry->Next = NewEntry; - NewEntry->Next = NULL; + *LastLink = NewEntry; + NewEntry->Next = CurrentEntry; } PALIAS_ENTRY @@ -289,28 +259,18 @@ VOID IntDeleteAliasEntry(PALIAS_HEADER Header, PALIAS_ENTRY Entry) { - PALIAS_ENTRY LastEntry; + PALIAS_ENTRY *LastLink = &Header->Data; PALIAS_ENTRY CurEntry; - if (Header->Data == Entry) - { - Header->Data = Entry->Next; - RtlFreeHeap(Win32CsrApiHeap, 0, Entry); - return; - } - LastEntry = Header->Data; - CurEntry = LastEntry->Next; - - while(CurEntry) + while ((CurEntry = *LastLink) != NULL) { if (CurEntry == Entry) { - LastEntry->Next = Entry->Next; + *LastLink = Entry->Next; RtlFreeHeap(Win32CsrApiHeap, 0, Entry); return; } - LastEntry = CurEntry; - CurEntry = CurEntry->Next; + LastLink = &CurEntry->Next; } } VOID Modified: trunk/reactos/subsystems/win32/csrss/win32csr/conio.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win…
============================================================================== --- trunk/reactos/subsystems/win32/csrss/win32csr/conio.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/csrss/win32csr/conio.c [iso-8859-1] Sun Jul 27 15:08:18 2008 @@ -83,29 +83,23 @@ ConioConsoleCtrlEventTimeout(Event, ProcessData, 0); } -DWORD FASTCALL -ConioGetBufferOffset(PCSRSS_SCREEN_BUFFER Buff, ULONG X, ULONG Y) -{ - return 2 * (((Y + Buff->VirtualY) % Buff->MaxY) * Buff->MaxX + X); -} - -#define GET_CELL_BUFFER(b,o)\ -(b)->Buffer[(o)++] - -#define SET_CELL_BUFFER(b,o,c,a)\ -(b)->Buffer[(o)++]=(c),\ -(b)->Buffer[(o)++]=(a) +PBYTE FASTCALL +ConioCoordToPointer(PCSRSS_SCREEN_BUFFER Buff, ULONG X, ULONG Y) +{ + return &Buff->Buffer[2 * (((Y + Buff->VirtualY) % Buff->MaxY) * Buff->MaxX + X)]; +} static VOID FASTCALL ClearLineBuffer(PCSRSS_SCREEN_BUFFER Buff) { - DWORD Offset = ConioGetBufferOffset(Buff, 0, Buff->CurrentY); + PBYTE Ptr = ConioCoordToPointer(Buff, 0, Buff->CurrentY); UINT Pos; for (Pos = 0; Pos < Buff->MaxX; Pos++) { - /* Fill the cell: Offset is incremented by the macro */ - SET_CELL_BUFFER(Buff, Offset, ' ', Buff->DefaultAttrib); + /* Fill the cell */ + *Ptr++ = ' '; + *Ptr++ = Buff->DefaultAttrib; } } @@ -433,7 +427,7 @@ CHAR *Buffer, DWORD Length, BOOL Attrib) { UINT i; - DWORD Offset; + PBYTE Ptr; RECT UpdateRect; LONG CursorStartX, CursorStartY; UINT ScrolledLines; @@ -474,8 +468,9 @@ { Buff->CurrentX--; } - Offset = ConioGetBufferOffset(Buff, Buff->CurrentX, Buff->CurrentY); - SET_CELL_BUFFER(Buff, Offset, ' ', Buff->DefaultAttrib); + Ptr = ConioCoordToPointer(Buff, Buff->CurrentX, Buff->CurrentY); + Ptr[0] = ' '; + Ptr[1] = Buff->DefaultAttrib; UpdateRect.left = min(UpdateRect.left, (LONG) Buff->CurrentX); UpdateRect.right = max(UpdateRect.right, (LONG) Buff->CurrentX); } @@ -500,12 +495,11 @@ { EndX = Buff->MaxX; } - Offset = ConioGetBufferOffset(Buff, Buff->CurrentX, Buff->CurrentY); + Ptr = ConioCoordToPointer(Buff, Buff->CurrentX, Buff->CurrentY); while (Buff->CurrentX < EndX) { - Buff->Buffer[Offset] = ' '; - Buff->Buffer[Offset + 1] = Buff->DefaultAttrib; - Offset += 2; + *Ptr++ = ' '; + *Ptr++ = Buff->DefaultAttrib; Buff->CurrentX++; } UpdateRect.right = max(UpdateRect.right, (LONG) Buff->CurrentX - 1); @@ -526,11 +520,11 @@ } UpdateRect.left = min(UpdateRect.left, (LONG)Buff->CurrentX); UpdateRect.right = max(UpdateRect.right, (LONG) Buff->CurrentX); - Offset = ConioGetBufferOffset(Buff, Buff->CurrentX, Buff->CurrentY); - Buff->Buffer[Offset++] = Buffer[i]; + Ptr = ConioCoordToPointer(Buff, Buff->CurrentX, Buff->CurrentY); + Ptr[0] = Buffer[i]; if (Attrib) { - Buff->Buffer[Offset] = Buff->DefaultAttrib; + Ptr[1] = Buff->DefaultAttrib; } Buff->CurrentX++; if (Buff->CurrentX == Buff->MaxX) @@ -786,8 +780,8 @@ } for (i = 0; i < Height; i++) { - PWORD SRow = (PWORD)&ScreenBuffer->Buffer[ConioGetBufferOffset(ScreenBuffer, 0, SY)]; - PWORD DRow = (PWORD)&ScreenBuffer->Buffer[ConioGetBufferOffset(ScreenBuffer, 0, DY)]; + PWORD SRow = (PWORD)ConioCoordToPointer(ScreenBuffer, 0, SY); + PWORD DRow = (PWORD)ConioCoordToPointer(ScreenBuffer, 0, DY); SX = SrcRegion->left; DX = DstRegion->left; @@ -2210,7 +2204,7 @@ COORD BufferCoord; COORD BufferSize; NTSTATUS Status; - DWORD Offset; + PBYTE Ptr; DWORD PSize; DPRINT("CsrWriteConsoleOutput\n"); @@ -2270,19 +2264,20 @@ for (i = 0, Y = WriteRegion.top; Y <= WriteRegion.bottom; i++, Y++) { CurCharInfo = CharInfo + (i + BufferCoord.Y) * BufferSize.X + BufferCoord.X; - Offset = ConioGetBufferOffset(Buff, WriteRegion.left, Y); + Ptr = ConioCoordToPointer(Buff, WriteRegion.left, Y); for (X = WriteRegion.left; X <= WriteRegion.right; X++) { + CHAR AsciiChar; if (Request->Data.WriteConsoleOutputRequest.Unicode) { - CHAR AsciiChar; ConsoleUnicodeCharToAnsiChar(Console, &AsciiChar, &CurCharInfo->Char.UnicodeChar); - SET_CELL_BUFFER(Buff, Offset, AsciiChar, CurCharInfo->Attributes); } else { - SET_CELL_BUFFER(Buff, Offset, CurCharInfo->Char.AsciiChar, CurCharInfo->Attributes); - } + AsciiChar = CurCharInfo->Char.AsciiChar; + } + *Ptr++ = AsciiChar; + *Ptr++ = CurCharInfo->Attributes; CurCharInfo++; } } @@ -2716,7 +2711,8 @@ COORD BufferCoord; RECT ReadRegion; RECT ScreenRect; - DWORD i, Offset; + DWORD i; + PBYTE Ptr; LONG X, Y; UINT CodePage; @@ -2769,20 +2765,20 @@ { CurCharInfo = CharInfo + (i * BufferSize.X); - Offset = ConioGetBufferOffset(Buff, ReadRegion.left, Y); + Ptr = ConioCoordToPointer(Buff, ReadRegion.left, Y); for (X = ReadRegion.left; X < ReadRegion.right; ++X) { if (Request->Data.ReadConsoleOutputRequest.Unicode) { MultiByteToWideChar(CodePage, 0, - (PCHAR)&GET_CELL_BUFFER(Buff, Offset), 1, + (PCHAR)Ptr++, 1, &CurCharInfo->Char.UnicodeChar, 1); } else { - CurCharInfo->Char.AsciiChar = GET_CELL_BUFFER(Buff, Offset); - } - CurCharInfo->Attributes = GET_CELL_BUFFER(Buff, Offset); + CurCharInfo->Char.AsciiChar = *Ptr++; + } + CurCharInfo->Attributes = *Ptr++; ++CurCharInfo; } } Modified: trunk/reactos/subsystems/win32/csrss/win32csr/guiconsole.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win…
============================================================================== --- trunk/reactos/subsystems/win32/csrss/win32csr/guiconsole.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/csrss/win32csr/guiconsole.c [iso-8859-1] Sun Jul 27 15:08:18 2008 @@ -880,7 +880,7 @@ for (Line = TopLine; Line <= BottomLine; Line++) { - From = Buff->Buffer + ConioGetBufferOffset(Buff, LeftChar, Line); + From = ConioCoordToPointer(Buff, LeftChar, Line); Start = LeftChar; To = GuiData->LineBuffer; @@ -934,7 +934,7 @@ { CursorHeight = 1; } - From = Buff->Buffer + ConioGetBufferOffset(Buff, Buff->CurrentX, Buff->CurrentY) + 1; + From = ConioCoordToPointer(Buff, Buff->CurrentX, Buff->CurrentY) + 1; if (*From != DEFAULT_ATTRIB) { Modified: trunk/reactos/subsystems/win32/csrss/win32csr/tuiconsole.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win…
============================================================================== --- trunk/reactos/subsystems/win32/csrss/win32csr/tuiconsole.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/csrss/win32csr/tuiconsole.c [iso-8859-1] Sun Jul 27 15:08:18 2008 @@ -86,7 +86,7 @@ LONG i; PBYTE Src, SrcEnd; - Src = Buff->Buffer + ConioGetBufferOffset(Buff, Region->left, Region->top); + Src = ConioCoordToPointer(Buff, Region->left, Region->top); SrcDelta = Buff->MaxX * 2; SrcEnd = Buff->Buffer + Buff->MaxY * Buff->MaxX * 2; DestDelta = ConioRectWidth(Region) * 2;
16 years, 5 months
1
0
0
0
[ros-arm-bringup] 34857: - Major cleanup, refactoring, and bugfixing of ARM Mm code in preparation for user-mode support. - Sync the code a lot closer to its x86 counterpart, still more work to be done. - Very soon, it should be possible to share upward of 50% of the new ARM code with the x86 version of React as well and unify the implementations.
by ros-arm-bringup@svn.reactos.org
Author: ros-arm-bringup Date: Sun Jul 27 14:52:41 2008 New Revision: 34857 URL:
http://svn.reactos.org/svn/reactos?rev=34857&view=rev
Log: - Major cleanup, refactoring, and bugfixing of ARM Mm code in preparation for user-mode support. - Sync the code a lot closer to its x86 counterpart, still more work to be done. - Very soon, it should be possible to share upward of 50% of the new ARM code with the x86 version of React as well and unify the implementations. Modified: trunk/reactos/ntoskrnl/include/internal/arm/mm.h trunk/reactos/ntoskrnl/mm/arm/stubs.c Modified: trunk/reactos/ntoskrnl/include/internal/arm/mm.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/arm/mm.h [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/include/internal/arm/mm.h [iso-8859-1] Sun Jul 27 14:52:41 2008 @@ -147,4 +147,23 @@ ManagerDomain } ARM_DOMAIN; +// +// Take 0x80812345 and extract: +// PTE_BASE[0x808][0x12] +// +#define MiGetPteAddress(x) \ + (PMMPTE)(PTE_BASE + \ + (((ULONG)(x) >> 20) << 12) + \ + ((((ULONG)(x) >> 12) & 0xFF) << 2)) + +#define MiGetPdeAddress(x) \ + (PMMPTE)(PDE_BASE + \ + (((ULONG)(x) >> 20) << 2)) + +#define MiGetPdeOffset(x) (((ULONG)(x)) >> 22) + +#define PTE_BASE 0xC0000000 +#define PDE_BASE 0xC1000000 +#define HYPER_SPACE ((PVOID)0xC1100000) + #endif Modified: trunk/reactos/ntoskrnl/mm/arm/stubs.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/arm/stubs.c?re…
============================================================================== --- trunk/reactos/ntoskrnl/mm/arm/stubs.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/arm/stubs.c [iso-8859-1] Sun Jul 27 14:52:41 2008 @@ -14,37 +14,255 @@ /* GLOBALS ********************************************************************/ -#undef UNIMPLEMENTED -#define UNIMPLEMENTED \ -{ \ - DPRINT1("[ARM Mm Bringup]: %s is unimplemented!\n", __FUNCTION__); \ - while (TRUE); \ -} - -// -// Take 0x80812345 and extract: -// PTE_BASE[0x808][0x12] -// -#define MiGetPteAddress(x) \ - (PMMPTE)(PTE_BASE + (((ULONG)(x) >> 20) << 12) + ((((ULONG)(x) >> 12) & 0xFF) << 2)) - -#define MiGetPdeAddress(x) \ - (PMMPTE)(PDE_BASE + (((ULONG)(x) >> 20) << 2)) - -#define MiGetPdeOffset(x) (((ULONG)(x)) >> 22) - -#define PTE_BASE 0xC0000000 -#define PDE_BASE 0xC1000000 -#define HYPER_SPACE ((PVOID)0xC1100000) - ULONG MmGlobalKernelPageDirectory[1024]; MMPTE MiArmTemplatePte, MiArmTemplatePde; -VOID -KiFlushSingleTb(IN BOOLEAN Invalid, - IN PVOID Virtual); - -/* FUNCTIONS ******************************************************************/ +/* PRIVATE FUNCTIONS **********************************************************/ + +BOOLEAN +NTAPI +MiUnmapPageTable(IN PMMPTE PointerPde) +{ + // + // Check if this address belongs to the kernel + // + if (((ULONG_PTR)PointerPde > PDE_BASE) || + ((ULONG_PTR)PointerPde < (PDE_BASE + 1024*1024))) + { + // + // Nothing to do + // + return TRUE; + } + + // + // FIXME-USER: Shouldn't get here yet + // + ASSERT(FALSE); + return FALSE; +} + +VOID +NTAPI +MiFlushTlb(IN PMMPTE PointerPte, + IN PVOID Address) +{ + // + // Make sure the PTE is valid, and unmap the pagetable if user-mode + // + if (((PointerPte) && (MiUnmapPageTable(PointerPte))) || + (Address >= MmSystemRangeStart)) + { + // + // Invalidate this page + // + KeArmInvalidateTlbEntry(Address); + } +} + +PMMPTE +NTAPI +MiGetPageTableForProcess(IN PEPROCESS Process, + IN PVOID Address, + IN BOOLEAN Create) +{ + ULONG PdeOffset; + PMMPTE PointerPde; + MMPTE Pte; + NTSTATUS Status; + PFN_NUMBER Pfn; + + // + // Check if this is a user-mode, non-kernel or non-current address + // + if ((Address < MmSystemRangeStart) && + (Process) && + (Process != PsGetCurrentProcess())) + { + // + // FIXME-USER: No user-mode memory support + // + ASSERT(FALSE); + } + + // + // Get the PDE + // + PointerPde = MiGetPdeAddress(Address); + if (PointerPde->u.Hard.L1.Fault.Type == FaultPte) + { + // + // Invalid PDE, is this a kernel address? + // + if (Address >= MmSystemRangeStart) + { + // + // Does it exist in the kernel page directory? + // + PdeOffset = MiGetPdeOffset(Address); + if (MmGlobalKernelPageDirectory[PdeOffset] == 0) + { + // + // It doesn't. Is this a create operation? If not, fail + // + if (Create == FALSE) return NULL; + + // + // THIS WHOLE PATH IS TODO + // + ASSERT(FALSE); + + // + // Allocate a non paged pool page for the PDE + // + Status = MmRequestPageMemoryConsumer(MC_NPPOOL, FALSE, &Pfn); + if (!NT_SUCCESS(Status)) return NULL; + + // + // Make the entry valid + // + Pte.u.Hard.AsUlong = 0xDEADBEEF; + + // + // Save it + // + MmGlobalKernelPageDirectory[PdeOffset] = Pte.u.Hard.AsUlong; + } + + // + // Now set the actual PDE + // + PointerPde = (PMMPTE)&MmGlobalKernelPageDirectory[PdeOffset]; + } + else + { + // + // Is this a create operation? If not, fail + // + if (Create == FALSE) return NULL; + + // + // THIS WHOLE PATH IS TODO + // + ASSERT(FALSE); + + // + // Allocate a non paged pool page for the PDE + // + Status = MmRequestPageMemoryConsumer(MC_NPPOOL, FALSE, &Pfn); + if (!NT_SUCCESS(Status)) return NULL; + + // + // Make the entry valid + // + Pte.u.Hard.AsUlong = 0xDEADBEEF; + + // + // Set it + // + *PointerPde = Pte; + } + } + + // + // Return the PTE + // + return MiGetPteAddress(Address); +} + +MMPTE +NTAPI +MiGetPageEntryForProcess(IN PEPROCESS Process, + IN PVOID Address) +{ + PMMPTE PointerPte; + MMPTE Pte; + Pte.u.Hard.AsUlong = 0; + + // + // Get the PTE + // + PointerPte = MiGetPageTableForProcess(Process, Address, FALSE); + if (PointerPte) + { + // + // Capture the PTE value and unmap the page table + // + Pte = *PointerPte; + MiUnmapPageTable(PointerPte); + } + + // + // Return the PTE value + // + return Pte; +} + +VOID +NTAPI +MmDeletePageTable(IN PEPROCESS Process, + IN PVOID Address) +{ + PMMPTE PointerPde; + + // + // Not valid for kernel addresses + // + DPRINT("MmDeletePageTable(%p, %p)\n", Process, Address); + ASSERT(Address < MmSystemRangeStart); + + // + // Check if this is for a different process + // + if ((Process) && (Process != PsGetCurrentProcess())) + { + // + // FIXME-USER: Need to attach to the process + // + ASSERT(FALSE); + } + + // + // Get the PDE + // + PointerPde = MiGetPdeAddress(Address); + + // + // On ARM, we use a section mapping for the original low-memory mapping + // + if ((Address) || (PointerPde->u.Hard.L1.Section.Type != SectionPte)) + { + // + // Make sure it's valid + // + ASSERT(PointerPde->u.Hard.L1.Coarse.Type == CoarsePte); + } + + // + // Clear the PDE + // + PointerPde->u.Hard.AsUlong = 0; + ASSERT(PointerPde->u.Hard.L1.Fault.Type == FaultPte); + + // + // Invalidate the TLB entry + // + MiFlushTlb(PointerPde, MiAddressToPte(Address)); +} + +BOOLEAN +NTAPI +MmCreateProcessAddressSpace(IN ULONG MinWs, + IN PEPROCESS Process, + IN PLARGE_INTEGER DirectoryTableBase) +{ + // + // FIXME-USER: Need to create address space + // + UNIMPLEMENTED; + while (TRUE); + return 0; +} VOID NTAPI @@ -63,9 +281,10 @@ Mmi386ReleaseMmInfo(IN PEPROCESS Process) { // - // TODO + // FIXME-USER: Need to delete address space // UNIMPLEMENTED; + while (TRUE); return 0; } @@ -92,121 +311,13 @@ } PULONG +NTAPI MmGetPageDirectory(VOID) { // // Return the TTB // return (PULONG)KeArmTranslationTableRegisterGet().AsUlong; -} - - -BOOLEAN -NTAPI -MmCreateProcessAddressSpace(IN ULONG MinWs, - IN PEPROCESS Process, - IN PLARGE_INTEGER DirectoryTableBase) -{ - // - // TODO - // - UNIMPLEMENTED; - return 0; -} - -VOID -NTAPI -MmDeletePageTable(IN PEPROCESS Process, - IN PVOID Address) -{ - PMMPTE PointerPde; - - // - // Not valid for kernel addresses - // - DPRINT("MmDeletePageTable(%p, %p)\n", Process, Address); - ASSERT(Address < MmSystemRangeStart); - - // - // Check if this is for a different process - // - if ((Process) && (Process != PsGetCurrentProcess())) - { - // - // TODO - // - UNIMPLEMENTED; - return; - } - - // - // Get the PDE - // - PointerPde = MiGetPdeAddress(Address); - - // - // On ARM, we use a section mapping for the original low-memory mapping - // - if ((Address) || (PointerPde->u.Hard.L1.Section.Type != SectionPte)) - { - // - // Make sure it's valid - // - ASSERT(PointerPde->u.Hard.L1.Coarse.Type == CoarsePte); - } - - // - // Clear the PDE - // - PointerPde->u.Hard.AsUlong = 0; - ASSERT(PointerPde->u.Hard.L1.Fault.Type == FaultPte); - - // - // Invalidate the TLB entry - // - KiFlushSingleTb(TRUE, Address); -} - -PFN_TYPE -NTAPI -MmGetPfnForProcess(IN PEPROCESS Process, - IN PVOID Address) -{ - PMMPTE Pte; - - // - // Check if this is for a different process - // - if ((Process) && (Process != PsGetCurrentProcess())) - { - // - // TODO - // - UNIMPLEMENTED; - return 0; - } - - // - // Get the PDE - // - Pte = MiGetPdeAddress(Address); - if (Pte->u.Hard.L1.Fault.Type != FaultPte) - { - // - // Get the PTE - // - Pte = MiGetPteAddress(Address); - } - - // - // If PTE is invalid, return 0 - // - if (Pte->u.Hard.L2.Fault.Type == FaultPte) return 0; - - // - // Return PFN - // - return Pte->u.Hard.L2.Small.BaseAddress; } VOID @@ -220,186 +331,7 @@ // TODO // UNIMPLEMENTED; -} - -VOID -NTAPI -MmRawDeleteVirtualMapping(IN PVOID Address) -{ - PMMPTE PointerPte, PointerPde; - - // - // Get the PDE - // - PointerPde = MiGetPdeAddress(Address); - if (PointerPde->u.Hard.L1.Fault.Type == FaultPte) return; - - // - // Get the PTE - // - PointerPte = MiGetPteAddress(Address); - ASSERT(PointerPte->u.Hard.L2.Small.Type == SmallPte); - - // - // Destroy the PTE - // - PointerPte->u.Hard.AsUlong = 0; - ASSERT(PointerPte->u.Hard.L2.Fault.Type == FaultPte); - - // - // Flush the TLB - // - KiFlushSingleTb(TRUE, Address); -} - -VOID -NTAPI -MmDeleteVirtualMapping(IN PEPROCESS Process, - IN PVOID Address, - IN BOOLEAN FreePage, - OUT PBOOLEAN WasDirty, - OUT PPFN_TYPE Page) -{ - PMMPTE PointerPte, PointerPde; - MMPTE Pte; - - // - // Check if this is for a different process - // - if ((Process) && (Process != PsGetCurrentProcess())) - { - // - // TODO - // - UNIMPLEMENTED; - return; - } - - // - // Get the PDE - // - PointerPde = MiGetPdeAddress(Address); - if (PointerPde->u.Hard.L1.Fault.Type == FaultPte) - { - // - // Invalid PDE - // - if (WasDirty) *WasDirty = FALSE; - if (Page) *Page = 0; - return; - } - - // - // Get the PTE - // - PointerPte = MiGetPteAddress(Address); - if (PointerPte->u.Hard.L1.Fault.Type == FaultPte) - { - // - // Invalid PTE - // - if (WasDirty) *WasDirty = FALSE; - if (Page) *Page = 0; - return; - } - - // - // Save the PTE - // - Pte = *PointerPte; - ASSERT(PointerPte->u.Hard.L2.Small.Type == SmallPte); - - // - // Destroy the PTE - // - PointerPte->u.Hard.AsUlong = 0; - ASSERT(PointerPte->u.Hard.L2.Fault.Type == FaultPte); - - // - // Flush the TLB - // - KiFlushSingleTb(TRUE, Address); - - // - // Check if the PTE was valid - // - if (Pte.u.Hard.L2.Fault.Type != FaultPte) - { - // - // Mark the page as unmapped - // - MmMarkPageUnmapped(Pte.u.Hard.L2.Small.BaseAddress); - } - else - { - // - // Make it sane - // - Pte.u.Hard.L2.Small.BaseAddress = 0; - } - - // - // Check if this was our page, and valid - // - if ((FreePage) && (Pte.u.Hard.L2.Fault.Type != FaultPte)) - { - // - // Release it - // - MmReleasePageMemoryConsumer(MC_NPPOOL, Pte.u.Hard.L2.Small.BaseAddress); - } - - // - // Return if the page was dirty - // - if (WasDirty) *WasDirty = TRUE; // LIE!!! - if (Page) *Page = Pte.u.Hard.L2.Small.BaseAddress; -} - -VOID -NTAPI -MmDeletePageFileMapping(IN PEPROCESS Process, - IN PVOID Address, - IN SWAPENTRY *SwapEntry) -{ - // - // TODO - // - UNIMPLEMENTED; -} - -BOOLEAN -NTAPI -MmIsDirtyPage(IN PEPROCESS Process, - IN PVOID Address) -{ - // - // TODO - // - UNIMPLEMENTED; - return 0; -} - -VOID -NTAPI -MmSetCleanPage(IN PEPROCESS Process, - IN PVOID Address) -{ - // - // TODO - // - UNIMPLEMENTED; -} - -VOID -NTAPI -MmSetDirtyPage(IN PEPROCESS Process, - IN PVOID Address) -{ - // - // TODO - // - UNIMPLEMENTED; + while (TRUE); } VOID @@ -411,80 +343,7 @@ // TODO // UNIMPLEMENTED; -} - -BOOLEAN -NTAPI -MmIsPagePresent(IN PEPROCESS Process, - IN PVOID Address) -{ - PMMPTE Pte; - - // - // Check if this is for a different process - // - if ((Process) && (Process != PsGetCurrentProcess())) - { - // - // TODO - // - UNIMPLEMENTED; - return 0; - } - - // - // Get the PDE - // - Pte = MiGetPdeAddress(Address); - if (Pte->u.Hard.L1.Fault.Type != FaultPte) - { - // - // Get the PTE - // - Pte = MiGetPteAddress(Address); - } - - // - // Return whether or not it's valid - // - return (Pte->u.Hard.L1.Fault.Type != FaultPte); -} - -BOOLEAN -NTAPI -MmIsPageSwapEntry(IN PEPROCESS Process, - IN PVOID Address) -{ - PMMPTE Pte; - - // - // Check if this is for a different process - // - if ((Process) && (Process != PsGetCurrentProcess())) - { - // - // TODO - // - UNIMPLEMENTED; - return 0; - } - - // - // Get the PDE - // - Pte = MiGetPdeAddress(Address); - if (Pte->u.Hard.L1.Fault.Type != FaultPte) - { - // - // Get the PTE - // - Pte = MiGetPteAddress(Address); - } - - // - // Return whether or not it's valid - // - return ((Pte->u.Hard.L2.Fault.Type == FaultPte) && (Pte->u.Hard.AsUlong)); + while (TRUE); } NTSTATUS @@ -501,13 +360,13 @@ PFN_NUMBER Pfn; DPRINT("[KMAP]: %p %d\n", Address, PageCount); //ASSERT(Address >= MmSystemRangeStart); - + // // Get our templates // TempPte = MiArmTemplatePte; TempPde = MiArmTemplatePde; - + // // Check if we have PDEs for this region // @@ -547,7 +406,7 @@ // Write the PFN of the PDE // TempPte.u.Hard.L2.Small.BaseAddress = Pfn; - + // // Write the PTE // @@ -573,7 +432,7 @@ // Mark it as mapped // if (MarkAsMapped) MmMarkPageMapped(*Pages); - + // // Set the PFN // @@ -597,20 +456,6 @@ // return STATUS_SUCCESS; } - -NTSTATUS -NTAPI -MmCreatePageFileMapping(IN PEPROCESS Process, - IN PVOID Address, - IN SWAPENTRY SwapEntry) -{ - // - // TODO - // - UNIMPLEMENTED; - return 0; -} - NTSTATUS NTAPI @@ -653,9 +498,9 @@ } // - // TODO - // - UNIMPLEMENTED; + // FIXME-USER: Support user-mode mappings + // + ASSERT(FALSE); return 0; } @@ -668,7 +513,7 @@ IN ULONG PageCount) { ULONG i; - + // // Loop each page // @@ -690,76 +535,114 @@ PageCount); } -ULONG -NTAPI -MmGetPageProtect(IN PEPROCESS Process, - IN PVOID Address) -{ - // - // We don't enforce any protection on the pages -- they are all RWX - // - return PAGE_READWRITE; -} - -VOID -NTAPI -MmSetPageProtect(IN PEPROCESS Process, - IN PVOID Address, - IN ULONG Protection) -{ - // - // We don't enforce any protection on the pages -- they are all RWX - // - return; -} - -/* - * @implemented - */ -PHYSICAL_ADDRESS -NTAPI -MmGetPhysicalAddress(IN PVOID Address) -{ - PHYSICAL_ADDRESS PhysicalAddress = {{0}}; +VOID +NTAPI +MmRawDeleteVirtualMapping(IN PVOID Address) +{ PMMPTE PointerPte; - - // - // Early boot PCR check - // - if (Address == PCR) - { - // - // ARM Hack while we still use a section PTE - // - PointerPte = MiGetPdeAddress(PCR); - ASSERT(PointerPte->u.Hard.L1.Section.Type == SectionPte); - PhysicalAddress.QuadPart = PointerPte->u.Hard.L1.Section.BaseAddress; - PhysicalAddress.QuadPart <<= CPT_SHIFT; - PhysicalAddress.LowPart += BYTE_OFFSET(Address); - return PhysicalAddress; - } // // Get the PTE // - PointerPte = MiGetPteAddress(Address); + PointerPte = MiGetPageTableForProcess(NULL, Address, FALSE); + if ((PointerPte) && (PointerPte->u.Hard.L2.Fault.Type != FaultPte)) + { + // + // Destroy it + // + PointerPte->u.Hard.AsUlong = 0; + + // + // Flush the TLB + // + MiFlushTlb(PointerPte, Address); + } +} + +VOID +NTAPI +MmDeleteVirtualMapping(IN PEPROCESS Process, + IN PVOID Address, + IN BOOLEAN FreePage, + OUT PBOOLEAN WasDirty, + OUT PPFN_TYPE Page) +{ + PMMPTE PointerPte; + MMPTE Pte; + + // + // Get the PTE + // + PointerPte = MiGetPageTableForProcess(NULL, Address, FALSE); + if (!PointerPte) + { + // + // Invalid PDE + // + if (WasDirty) *WasDirty = FALSE; + if (Page) *Page = 0; + return; + } + + // + // Save the PTE + // + Pte = *PointerPte; if (PointerPte->u.Hard.L1.Fault.Type == FaultPte) { // - // Invalid address - // - DPRINT1("Address invalid: %p\n", Address); - return PhysicalAddress; - } - - // - // Return the information - // - ASSERT(PointerPte->u.Hard.L2.Small.Type == SmallPte); - PhysicalAddress.QuadPart = PointerPte->u.Hard.L2.Small.BaseAddress; - PhysicalAddress.QuadPart <<= PAGE_SHIFT; - PhysicalAddress.LowPart += BYTE_OFFSET(Address); - return PhysicalAddress; + // Invalid PTE + // + if (WasDirty) *WasDirty = FALSE; + if (Page) *Page = 0; + return; + } + + // + // Destroy the PTE + // + PointerPte->u.Hard.AsUlong = 0; + ASSERT(PointerPte->u.Hard.L2.Fault.Type == FaultPte); + + // + // Flush the TLB + // + MiFlushTlb(PointerPte, Address); + + // + // Check if the PTE was valid + // + if (Pte.u.Hard.L2.Fault.Type != FaultPte) + { + // + // Mark the page as unmapped + // + MmMarkPageUnmapped(Pte.u.Hard.L2.Small.BaseAddress); + } + else + { + // + // Make it sane + // + Pte.u.Hard.L2.Small.BaseAddress = 0; + } + + // + // Check if this was our page, and valid + // + if ((FreePage) && (Pte.u.Hard.L2.Fault.Type != FaultPte)) + { + // + // Release it + // + MmReleasePageMemoryConsumer(MC_NPPOOL, Pte.u.Hard.L2.Small.BaseAddress); + } + + // + // Return if the page was dirty + // + if (WasDirty) *WasDirty = TRUE; // LIE!!! + if (Page) *Page = Pte.u.Hard.L2.Small.BaseAddress; } PVOID @@ -769,7 +652,7 @@ PMMPTE PointerPte, FirstPte, LastPte; MMPTE TempPte; PVOID Address; - + // // Loop hyperspace PTEs (1MB) // @@ -807,12 +690,12 @@ ASSERT(PointerPte->u.Hard.L2.Fault.Type == FaultPte); ASSERT(TempPte.u.Hard.L2.Small.Type == SmallPte); *PointerPte = TempPte; - + // // Return the address // Address = HYPER_SPACE + ((PointerPte - FirstPte) * PAGE_SIZE); - KiFlushSingleTb(FALSE, Address); + KeArmInvalidateTlbEntry(Address); DPRINT("[HMAP]: %p %lx\n", Address, Page); return Address; } @@ -845,8 +728,153 @@ // // Flush the TLB entry and return the PFN // - KiFlushSingleTb(TRUE, Address); + KeArmInvalidateTlbEntry(Address); return Pfn; +} + +VOID +NTAPI +MmDeletePageFileMapping(IN PEPROCESS Process, + IN PVOID Address, + IN SWAPENTRY *SwapEntry) +{ + // + // TODO + // + UNIMPLEMENTED; + while (TRUE); +} + +NTSTATUS +NTAPI +MmCreatePageFileMapping(IN PEPROCESS Process, + IN PVOID Address, + IN SWAPENTRY SwapEntry) +{ + // + // TODO + // + UNIMPLEMENTED; + while (TRUE); + return 0; +} + +PFN_TYPE +NTAPI +MmGetPfnForProcess(IN PEPROCESS Process, + IN PVOID Address) +{ + MMPTE Pte; + + // + // Get the PTE + // + Pte = MiGetPageEntryForProcess(Process, Address); + if (Pte.u.Hard.L2.Fault.Type == FaultPte) return 0; + + // + // Return PFN + // + return Pte.u.Hard.L2.Small.BaseAddress; +} + +ULONG +NTAPI +MiGetUserPageDirectoryCount(VOID) +{ + // + // Return the index + // + return MiGetPdeOffset(MmSystemRangeStart); +} + +BOOLEAN +NTAPI +MmIsDirtyPage(IN PEPROCESS Process, + IN PVOID Address) +{ + // + // TODO + // + UNIMPLEMENTED; + while (TRUE); + return 0; +} + +VOID +NTAPI +MmSetCleanPage(IN PEPROCESS Process, + IN PVOID Address) +{ + // + // TODO + // + UNIMPLEMENTED; + while (TRUE); +} + +VOID +NTAPI +MmSetDirtyPage(IN PEPROCESS Process, + IN PVOID Address) +{ + // + // TODO + // + UNIMPLEMENTED; + while (TRUE); +} + +BOOLEAN +NTAPI +MmIsPagePresent(IN PEPROCESS Process, + IN PVOID Address) +{ + // + // Fault PTEs are 0, which is FALSE (non-present) + // + return MiGetPageEntryForProcess(Process, Address).u.Hard.L2.Fault.Type; +} + +BOOLEAN +NTAPI +MmIsPageSwapEntry(IN PEPROCESS Process, + IN PVOID Address) +{ + MMPTE Pte; + + // + // Get the PTE + // + Pte = MiGetPageEntryForProcess(Process, Address); + + // + // Make sure it's valid, but faulting + // + return (Pte.u.Hard.L2.Fault.Type == FaultPte) && (Pte.u.Hard.AsUlong); +} + +ULONG +NTAPI +MmGetPageProtect(IN PEPROCESS Process, + IN PVOID Address) +{ + // + // We don't enforce any protection on the pages -- they are all RWX + // + return PAGE_READWRITE; +} + +VOID +NTAPI +MmSetPageProtect(IN PEPROCESS Process, + IN PVOID Address, + IN ULONG Protection) +{ + // + // We don't enforce any protection on the pages -- they are all RWX + // + return; } VOID @@ -862,7 +890,7 @@ // MiArmTemplatePte = *MiGetPteAddress(0x80000000); MiArmTemplatePde = *MiGetPdeAddress(0x80000000); - + // // Loop the 2GB of address space which belong to the kernel // @@ -884,16 +912,6 @@ } } -ULONG -NTAPI -MiGetUserPageDirectoryCount(VOID) -{ - // - // Return the index - // - return MiGetPdeOffset(MmSystemRangeStart); -} - VOID NTAPI MiInitPageDirectoryMap(VOID) @@ -902,7 +920,7 @@ PHYSICAL_ADDRESS BoundaryAddressMultiple; PVOID BaseAddress; NTSTATUS Status; - + // // Create memory area for the PTE area // @@ -918,7 +936,7 @@ 0, BoundaryAddressMultiple); ASSERT(NT_SUCCESS(Status)); - + // // Create memory area for the PDE area // @@ -949,3 +967,60 @@ BoundaryAddressMultiple); ASSERT(NT_SUCCESS(Status)); } + +/* PUBLIC FUNCTIONS ***********************************************************/ + +/* + * @implemented + */ +PHYSICAL_ADDRESS +NTAPI +MmGetPhysicalAddress(IN PVOID Address) +{ + PHYSICAL_ADDRESS PhysicalAddress; + MMPTE Pte; + + // + // Early boot PCR check + // + if (Address == PCR) + { + // + // ARM Hack while we still use a section PTE + // + PMMPTE PointerPte; + PointerPte = MiGetPdeAddress(PCR); + ASSERT(PointerPte->u.Hard.L1.Section.Type == SectionPte); + PhysicalAddress.QuadPart = PointerPte->u.Hard.L1.Section.BaseAddress; + PhysicalAddress.QuadPart <<= CPT_SHIFT; + PhysicalAddress.LowPart += BYTE_OFFSET(Address); + return PhysicalAddress; + } + + // + // Get the PTE + // + Pte = MiGetPageEntryForProcess(NULL, Address); + if ((Pte.u.Hard.AsUlong) && (Pte.u.Hard.L2.Fault.Type != FaultPte)) + { + // + // Return the information + // + ASSERT(Pte.u.Hard.L2.Small.Type == SmallPte); + PhysicalAddress.QuadPart = Pte.u.Hard.L2.Small.BaseAddress; + PhysicalAddress.QuadPart <<= PAGE_SHIFT; + PhysicalAddress.LowPart += BYTE_OFFSET(Address); + } + else + { + // + // Invalid or unmapped + // + PhysicalAddress.QuadPart = 0; + } + + // + // Return the physical address + // + return PhysicalAddress; +}
16 years, 5 months
1
0
0
0
[cfinck] 34855: Maciej Bialas (bjauy@tlen.pl) - Add '#include <cstring>', so newer gcc's don't complain about a missing memset function See issue #3595 for more details.
by cfinck@svn.reactos.org
Author: cfinck Date: Sun Jul 27 14:10:44 2008 New Revision: 34855 URL:
http://svn.reactos.org/svn/reactos?rev=34855&view=rev
Log: Maciej Bialas (bjauy(a)tlen.pl) - Add '#include <cstring>', so newer gcc's don't complain about a missing memset function See issue #3595 for more details. Modified: trunk/reactos/tools/sysreg/os_support.h Modified: trunk/reactos/tools/sysreg/os_support.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/sysreg/os_support.h?…
============================================================================== --- trunk/reactos/tools/sysreg/os_support.h [iso-8859-1] (original) +++ trunk/reactos/tools/sysreg/os_support.h [iso-8859-1] Sun Jul 27 14:10:44 2008 @@ -23,6 +23,7 @@ #include <ctime> #include <vector> #include <cstdlib> +#include <cstring> #ifndef _MSC_VER #include <sys/time.h>
16 years, 5 months
1
0
0
0
[hpoussin] 34854: Fix code to correctly handle first object file. It was luckily working because first file was always conditional.
by hpoussin@svn.reactos.org
Author: hpoussin Date: Sun Jul 27 12:12:44 2008 New Revision: 34854 URL:
http://svn.reactos.org/svn/reactos?rev=34854&view=rev
Log: Fix code to correctly handle first object file. It was luckily working because first file was always conditional. Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp trunk/reactos/tools/rbuild/backend/mingw/modulehandler.h Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw…
============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] Sun Jul 27 12:12:44 2008 @@ -868,7 +868,6 @@ void MingwModuleHandler::GenerateSourceMacros ( - const char* assignmentOperation, const IfableData& data ) { size_t i; @@ -879,9 +878,8 @@ { fprintf ( fMakefile, - "%s %s", - sourcesMacro.c_str (), - assignmentOperation ); + "%s =", + sourcesMacro.c_str () ); for ( i = 0; i < compilationUnits.size(); i++ ) { CompilationUnit& compilationUnit = *compilationUnits[i]; @@ -911,10 +909,10 @@ void MingwModuleHandler::GenerateObjectMacros ( - const char* assignmentOperation, const IfableData& data ) { size_t i; + const char* assignmentOperation = "="; const vector<CompilationUnit*>& compilationUnits = data.compilationUnits; vector<const FileLocation *> headers; @@ -930,11 +928,12 @@ const FileLocation& compilationName = compilationUnit.GetFilename (); const FileLocation *object_file = GetObjectFilename ( &compilationName, module ); fprintf ( fMakefile, - "%s := %s $(%s)\n", + "%s := %s\n", objectsMacro.c_str(), - backend->GetFullName ( *object_file ).c_str (), - objectsMacro.c_str() ); + backend->GetFullName ( *object_file ).c_str () ); delete object_file; + assignmentOperation = "+="; + break; } } fprintf ( @@ -1755,9 +1754,7 @@ { sourcesMacro = ssprintf ( "%s_SOURCES", module.name.c_str ()); - GenerateSourceMacros ( - "=", - module.non_if_data ); + GenerateSourceMacros ( module.non_if_data ); // future references to the macro will be to get its values sourcesMacro = ssprintf ("$(%s)", sourcesMacro.c_str ()); @@ -1768,9 +1765,7 @@ { objectsMacro = ssprintf ("%s_OBJS", module.name.c_str ()); - GenerateObjectMacros ( - "=", - module.non_if_data ); + GenerateObjectMacros ( module.non_if_data ); // future references to the macro will be to get its values objectsMacro = ssprintf ("$(%s)", objectsMacro.c_str ()); Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw…
============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.h [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.h [iso-8859-1] Sun Jul 27 12:12:44 2008 @@ -134,10 +134,8 @@ const IfableData& data, const std::vector<LinkerFlag*>* linkerFlags, std::set<const Define *>& used_defs ); - void GenerateSourceMacros ( const char* assignmentOperation, - const IfableData& data ); - void GenerateObjectMacros ( const char* assignmentOperation, - const IfableData& data ); + void GenerateSourceMacros ( const IfableData& data ); + void GenerateObjectMacros ( const IfableData& data ); std::string GenerateGccIncludeParameters () const; std::string GenerateGccParameters () const; std::string GenerateNasmParameters () const;
16 years, 5 months
1
0
0
0
[hpoussin] 34853: Fix typo
by hpoussin@svn.reactos.org
Author: hpoussin Date: Sun Jul 27 11:33:57 2008 New Revision: 34853 URL:
http://svn.reactos.org/svn/reactos?rev=34853&view=rev
Log: Fix typo Modified: trunk/reactos/ntoskrnl/ntoskrnl-generic.rbuild Modified: trunk/reactos/ntoskrnl/ntoskrnl-generic.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl-generic.…
============================================================================== --- trunk/reactos/ntoskrnl/ntoskrnl-generic.rbuild [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ntoskrnl-generic.rbuild [iso-8859-1] Sun Jul 27 11:33:57 2008 @@ -13,7 +13,7 @@ <if property="_WINKD_" value="1"> <define name="_WINKD_" /> </if> - <if property="_ELF" value="1"> + <if property="_ELF_" value="1"> <define name="_ELF_" /> </if> <include base="cmlib">.</include>
16 years, 5 months
1
0
0
0
[hpoussin] 34852: Resolve <if> and <ifnot> elements during parsing time. Backend don't have to deal anymore with if-able modules, defines, ...
by hpoussin@svn.reactos.org
Author: hpoussin Date: Sun Jul 27 11:17:50 2008 New Revision: 34852 URL:
http://svn.reactos.org/svn/reactos?rev=34852&view=rev
Log: Resolve <if> and <ifnot> elements during parsing time. Backend don't have to deal anymore with if-able modules, defines, ... Modified: trunk/reactos/tools/rbuild/backend/codeblocks/codeblocks.cpp trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp trunk/reactos/tools/rbuild/backend/msbuild/msbuild.cpp trunk/reactos/tools/rbuild/backend/msvc/msvcmaker.cpp trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp trunk/reactos/tools/rbuild/module.cpp trunk/reactos/tools/rbuild/project.cpp trunk/reactos/tools/rbuild/rbuild.h trunk/reactos/tools/rbuild/testsupportcode.cpp Modified: trunk/reactos/tools/rbuild/backend/codeblocks/codeblocks.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/codeb…
============================================================================== --- trunk/reactos/tools/rbuild/backend/codeblocks/codeblocks.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/codeblocks/codeblocks.cpp [iso-8859-1] Sun Jul 27 11:17:50 2008 @@ -423,16 +423,6 @@ { const IfableData& data = *ifs_list.back(); ifs_list.pop_back(); - for ( i = 0; i < data.ifs.size(); i++ ) - { - const Property* property = _lookup_property( module, data.ifs[i]->property ); - if ( property != NULL ) - { - if ( data.ifs[i]->value == property->value && data.ifs[i]->negated == false || - data.ifs[i]->value != property->value && data.ifs[i]->negated) - ifs_list.push_back ( &data.ifs[i]->data ); - } - } const vector<File*>& files = data.files; for ( i = 0; i < files.size(); i++ ) { Modified: trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw…
============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp [iso-8859-1] Sun Jul 27 11:17:50 2008 @@ -247,25 +247,6 @@ if ( compilationUnit.GetFiles ().size () != 1 ) return false; } - // intentionally make a copy so that we can append more work in - // the middle of processing without having to go recursive - vector<If*> v = module.non_if_data.ifs; - for ( i = 0; i < v.size (); i++ ) - { - size_t j; - If& rIf = *v[i]; - // check for sub-ifs to add to list - const vector<If*>& ifs = rIf.data.ifs; - for ( j = 0; j < ifs.size (); j++ ) - v.push_back ( ifs[j] ); - const vector<CompilationUnit*>& compilationUnits = rIf.data.compilationUnits; - for ( j = 0; j < compilationUnits.size (); j++ ) - { - CompilationUnit& compilationUnit = *compilationUnits[j]; - if ( compilationUnit.GetFiles ().size () != 1 ) - return false; - } - } return true; } @@ -455,27 +436,6 @@ GenerateProjectCFlagsMacro ( assignmentOperation, data ); } - - for ( i = 0; i < data.ifs.size(); i++ ) - { - const If& rIf = *data.ifs[i]; - if ( rIf.data.defines.size() - || rIf.data.includes.size() - || rIf.data.ifs.size() ) - { - fprintf ( - fMakefile, - "ifeq (\"$(%s)\",\"%s\")\n", - rIf.property.c_str(), - rIf.value.c_str() ); - GenerateGlobalCFlagsAndProperties ( - "+=", - rIf.data ); - fprintf ( - fMakefile, - "endif\n\n" ); - } - } } void @@ -508,32 +468,10 @@ const char* assignmentOperation, IfableData& data ) const { - size_t i; - if ( data.compilerFlags.size() ) { GenerateProjectGccOptionsMacro ( assignmentOperation, data ); - } - - for ( i = 0; i < data.ifs.size(); i++ ) - { - If& rIf = *data.ifs[i]; - if ( rIf.data.compilerFlags.size() - || rIf.data.ifs.size() ) - { - fprintf ( - fMakefile, - "ifeq (\"$(%s)\",\"%s\")\n", - rIf.property.c_str(), - rIf.value.c_str() ); - GenerateProjectGccOptions ( - "+=", - rIf.data ); - fprintf ( - fMakefile, - "endif\n\n" ); - } } } Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw…
============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] Sun Jul 27 11:17:50 2008 @@ -814,8 +814,6 @@ const vector<LinkerFlag*>* linkerFlags, set<const Define *>& used_defs ) { - size_t i; - GenerateMacro ( assignmentOperation, cflagsMacro, data, @@ -852,34 +850,6 @@ libsMacro.c_str(), assignmentOperation, deps.c_str() ); - } - } - - const vector<If*>& ifs = data.ifs; - for ( i = 0; i < ifs.size(); i++ ) - { - If& rIf = *ifs[i]; - if ( rIf.data.defines.size() - || rIf.data.includes.size() - || rIf.data.libraries.size() - || rIf.data.compilationUnits.size() - || rIf.data.compilerFlags.size() - || rIf.data.ifs.size() ) - { - fprintf ( - fMakefile, - "%s (\"$(%s)\",\"%s\")\n", - rIf.negated ? "ifneq" : "ifeq", - rIf.property.c_str(), - rIf.value.c_str() ); - GenerateMacros ( - "+=", - rIf.data, - NULL, - used_defs ); - fprintf ( - fMakefile, - "endif\n\n" ); } } } @@ -923,32 +893,6 @@ backend->GetFullName ( compilationName ).c_str () ); } fprintf ( fMakefile, "\n" ); - } - - const vector<If*>& ifs = data.ifs; - for ( i = 0; i < ifs.size(); i++ ) - { - If& rIf = *ifs[i]; - if ( rIf.data.defines.size() - || rIf.data.includes.size() - || rIf.data.libraries.size() - || rIf.data.compilationUnits.size() - || rIf.data.compilerFlags.size() - || rIf.data.ifs.size() ) - { - fprintf ( - fMakefile, - "%s (\"$(%s)\",\"%s\")\n", - rIf.negated ? "ifneq" : "ifeq", - rIf.property.c_str(), - rIf.value.c_str() ); - GenerateSourceMacros ( - "+=", - rIf.data ); - fprintf ( - fMakefile, - "endif\n\n" ); - } } vector<CompilationUnit*> sourceCompilationUnits; @@ -1081,32 +1025,6 @@ delete mcresources[i]; } fprintf ( fMakefile, "\n" ); - } - - const vector<If*>& ifs = data.ifs; - for ( i = 0; i < ifs.size(); i++ ) - { - If& rIf = *ifs[i]; - if ( rIf.data.defines.size() - || rIf.data.includes.size() - || rIf.data.libraries.size() - || rIf.data.compilationUnits.size() - || rIf.data.compilerFlags.size() - || rIf.data.ifs.size() ) - { - fprintf ( - fMakefile, - "%s (\"$(%s)\",\"%s\")\n", - rIf.negated ? "ifneq" : "ifeq", - rIf.property.c_str(), - rIf.value.c_str() ); - GenerateObjectMacros ( - "+=", - rIf.data ); - fprintf ( - fMakefile, - "endif\n\n" ); - } } vector<CompilationUnit*> sourceCompilationUnits; @@ -1704,12 +1622,6 @@ "\n" ); } - const vector<If*>& ifs = data.ifs; - for ( i = 0; i < ifs.size(); i++ ) - { - GenerateObjectFileTargets ( ifs[i]->data ); - } - vector<CompilationUnit*> sourceCompilationUnits; GetModuleSpecificCompilationUnits ( sourceCompilationUnits ); for ( i = 0; i < sourceCompilationUnits.size (); i++ ) Modified: trunk/reactos/tools/rbuild/backend/msbuild/msbuild.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/msbui…
============================================================================== --- trunk/reactos/tools/rbuild/backend/msbuild/msbuild.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/msbuild/msbuild.cpp [iso-8859-1] Sun Jul 27 11:17:50 2008 @@ -100,16 +100,6 @@ { const IfableData& data = *ifs_list.back(); ifs_list.pop_back(); - for ( i = 0; i < data.ifs.size(); i++ ) - { - const Property* property = _lookup_property( module, data.ifs[i]->property ); - if ( property != NULL ) - { - if ( data.ifs[i]->value == property->value && data.ifs[i]->negated == false || - data.ifs[i]->value != property->value && data.ifs[i]->negated) - ifs_list.push_back ( &data.ifs[i]->data ); - } - } const vector<File*>& files = data.files; for ( i = 0; i < files.size(); i++ ) { Modified: trunk/reactos/tools/rbuild/backend/msvc/msvcmaker.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/msvc/…
============================================================================== --- trunk/reactos/tools/rbuild/backend/msvc/msvcmaker.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/msvc/msvcmaker.cpp [iso-8859-1] Sun Jul 27 11:17:50 2008 @@ -95,9 +95,6 @@ { const IfableData& data = *ifs_list.back(); ifs_list.pop_back(); - // TODO FIXME - refactor needed - we're discarding if conditions - for ( i = 0; i < data.ifs.size(); i++ ) - ifs_list.push_back ( &data.ifs[i]->data ); const vector<File*>& files = data.files; for ( i = 0; i < files.size(); i++ ) { Modified: trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/msvc/…
============================================================================== --- trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp [iso-8859-1] Sun Jul 27 11:17:50 2008 @@ -147,16 +147,6 @@ { const IfableData& data = *ifs_list.back(); ifs_list.pop_back(); - for ( i = 0; i < data.ifs.size(); i++ ) - { - const Property* property = _lookup_property( module, data.ifs[i]->property ); - if ( property != NULL ) - { - if ( data.ifs[i]->value == property->value && data.ifs[i]->negated == false || - data.ifs[i]->value != property->value && data.ifs[i]->negated) - ifs_list.push_back ( &data.ifs[i]->data ); - } - } const vector<File*>& files = data.files; for ( i = 0; i < files.size(); i++ ) { Modified: trunk/reactos/tools/rbuild/module.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/module.cpp?re…
============================================================================== --- trunk/reactos/tools/rbuild/module.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/module.cpp [iso-8859-1] Sun Jul 27 11:17:50 2008 @@ -1,5 +1,6 @@ /* * Copyright (C) 2005 Casper S. Hornstrup + * Copyright (C) 2008 Hervé Poussineau * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -210,8 +211,6 @@ delete compilerFlags[i]; for ( i = 0; i < modules.size(); i++ ) delete modules[i]; - for ( i = 0; i < ifs.size (); i++ ) - delete ifs[i]; for ( i = 0; i < compilationUnits.size (); i++ ) delete compilationUnits[i]; } @@ -229,8 +228,6 @@ properties[i]->ProcessXML (); for ( i = 0; i < compilerFlags.size(); i++ ) compilerFlags[i]->ProcessXML (); - for ( i = 0; i < ifs.size (); i++ ) - ifs[i]->ProcessXML (); for ( i = 0; i < compilationUnits.size (); i++ ) compilationUnits[i]->ProcessXML (); } @@ -606,7 +603,6 @@ const string& relative_path, ParseContext& parseContext ) { - If* pOldIf = parseContext.ifData; CompilationUnit* pOldCompilationUnit = parseContext.compilationUnit; bool subs_invalid = false; string subpath ( relative_path ); @@ -652,46 +648,35 @@ else { CompilationUnit* pCompilationUnit = new CompilationUnit ( pFile ); - if ( parseContext.ifData ) - parseContext.ifData->data.compilationUnits.push_back ( pCompilationUnit ); + string ext = ToLower ( GetExtension ( e.value ) ); + if ( ext == ".idl" ) + { + // put .idl files at the start of the module + non_if_data.compilationUnits.insert ( + non_if_data.compilationUnits.begin(), + pCompilationUnit ); + } + else if ( ext == ".asm" || ext == ".s" ) + { + // put .asm files at the end of the module + non_if_data.compilationUnits.push_back ( pCompilationUnit ); + non_if_data.asmFiles++; + } else { - string ext = ToLower ( GetExtension ( e.value ) ); - if ( ext == ".idl" ) - { - // put .idl files at the start of the module - non_if_data.compilationUnits.insert ( - non_if_data.compilationUnits.begin(), - pCompilationUnit ); - } - else if ( ext == ".asm" || ext == ".s" ) - { - // put .asm files at the end of the module - non_if_data.compilationUnits.push_back ( pCompilationUnit ); - non_if_data.asmFiles++; - } - else - { - // put other files in the middle - non_if_data.compilationUnits.insert ( - non_if_data.compilationUnits.end() - non_if_data.asmFiles, - pCompilationUnit ); - } + // put other files in the middle + non_if_data.compilationUnits.insert ( + non_if_data.compilationUnits.end() - non_if_data.asmFiles, + pCompilationUnit ); } } - if ( parseContext.ifData ) - parseContext.ifData->data.files.push_back ( pFile ); - else - non_if_data.files.push_back ( pFile ); + non_if_data.files.push_back ( pFile ); subs_invalid = true; } else if ( e.name == "library" && e.value.size () ) { Library* pLibrary = new Library ( e, *this, e.value ); - if ( parseContext.ifData ) - parseContext.ifData->data.libraries.push_back ( pLibrary ); - else - non_if_data.libraries.push_back ( pLibrary ); + non_if_data.libraries.push_back ( pLibrary ); subs_invalid = true; } else if ( e.name == "directory" ) @@ -718,73 +703,37 @@ else if ( e.name == "include" ) { Include* include = new Include ( project, &e, this ); - if ( parseContext.ifData ) - parseContext.ifData->data.includes.push_back ( include ); - else - non_if_data.includes.push_back ( include ); + non_if_data.includes.push_back ( include ); subs_invalid = true; } else if ( e.name == "define" ) { Define* pDefine = new Define ( project, this, e ); - if ( parseContext.ifData ) - parseContext.ifData->data.defines.push_back ( pDefine ); - else - non_if_data.defines.push_back ( pDefine ); + non_if_data.defines.push_back ( pDefine ); subs_invalid = true; } else if ( e.name == "metadata" ) { - if ( parseContext.ifData ) - { - throw XMLInvalidBuildFileException ( - e.location, - "<metadata> is not a valid sub-element of <if>" ); - } metadata = new Metadata ( e, *this ); subs_invalid = false; } else if ( e.name == "invoke" ) { - if ( parseContext.ifData ) - { - throw XMLInvalidBuildFileException ( - e.location, - "<invoke> is not a valid sub-element of <if>" ); - } invocations.push_back ( new Invoke ( e, *this ) ); subs_invalid = false; } else if ( e.name == "dependency" ) { - if ( parseContext.ifData ) - { - throw XMLInvalidBuildFileException ( - e.location, - "<dependency> is not a valid sub-element of <if>" ); - } dependencies.push_back ( new Dependency ( e, *this ) ); subs_invalid = true; } else if ( e.name == "bootsector" ) { - if ( parseContext.ifData ) - { - throw XMLInvalidBuildFileException ( - e.location, - "<bootsector> is not a valid sub-element of <if>" ); - } bootSector = new Bootsector ( e, this ); subs_invalid = true; } else if ( e.name == "importlibrary" ) { - if ( parseContext.ifData ) - { - throw XMLInvalidBuildFileException ( - e.location, - "<importlibrary> is not a valid sub-element of <if>" ); - } if ( importLibrary ) { throw XMLInvalidBuildFileException ( @@ -794,31 +743,40 @@ SetImportLibrary ( new ImportLibrary ( project, e, this ) ); subs_invalid = true; } - else if ( e.name == "if" ) - { - parseContext.ifData = new If ( e, project, this ); - if ( pOldIf ) - pOldIf->data.ifs.push_back ( parseContext.ifData ); - else - non_if_data.ifs.push_back ( parseContext.ifData ); + else if ( e.name == "if" || e.name == "ifnot" ) + { + const XMLAttribute* name; + name = e.GetAttribute ( "property", true ); + assert( name ); + const Property *property = project.LookupProperty( name->value ); + if ( !property ) + { + // Property not found + throw InvalidOperationException ( __FILE__, + __LINE__, + "Test on unknown property '%s' at %s", + name->value.c_str (), e.location.c_str () ); + } + + const XMLAttribute* value; + value = e.GetAttribute ( "value", true ); + assert( value ); + + bool negate = ( e.name == "ifnot" ); + bool equality = ( property->value == value->value ); + if ( equality == negate ) + { + // Failed, skip this element + if ( project.configuration.Verbose ) + printf("Skipping 'If' at %s\n", e.location.c_str () ); + return; + } subs_invalid = false; } - else if ( e.name == "ifnot" ) - { - parseContext.ifData = new If ( e, project, this, true ); - if ( pOldIf ) - pOldIf->data.ifs.push_back ( parseContext.ifData ); - else - non_if_data.ifs.push_back ( parseContext.ifData ); - subs_invalid = false; - } else if ( e.name == "compilerflag" ) { CompilerFlag* pCompilerFlag = new CompilerFlag ( project, this, e ); - if ( parseContext.ifData ) - parseContext.ifData->data.compilerFlags.push_back ( pCompilerFlag ); - else - non_if_data.compilerFlags.push_back ( pCompilerFlag ); + non_if_data.compilerFlags.push_back ( pCompilerFlag ); subs_invalid = true; } else if ( e.name == "linkerflag" ) @@ -828,12 +786,6 @@ } else if ( e.name == "linkerscript" ) { - if ( parseContext.ifData ) - { - throw XMLInvalidBuildFileException ( - e.location, - "<linkerscript> is not a valid sub-element of <if>" ); - } if ( linkerScript ) { throw XMLInvalidBuildFileException ( @@ -873,12 +825,6 @@ } else if ( e.name == "pch" ) { - if ( parseContext.ifData ) - { - throw XMLInvalidBuildFileException ( - e.location, - "<pch> is not a valid sub-element of <if>" ); - } if ( pch ) { throw XMLInvalidBuildFileException ( @@ -905,10 +851,7 @@ if ( project.configuration.CompilationUnitsEnabled ) { CompilationUnit* pCompilationUnit = new CompilationUnit ( &project, this, &e ); - if ( parseContext.ifData ) - parseContext.ifData->data.compilationUnits.push_back ( pCompilationUnit ); - else - non_if_data.compilationUnits.push_back ( pCompilationUnit ); + non_if_data.compilationUnits.push_back ( pCompilationUnit ); parseContext.compilationUnit = pCompilationUnit; } subs_invalid = false; @@ -934,7 +877,6 @@ } for ( size_t i = 0; i < e.subElements.size (); i++ ) ProcessXMLSubElement ( *e.subElements[i], subdirectory, subpath, parseContext ); - parseContext.ifData = pOldIf; parseContext.compilationUnit = pOldCompilationUnit; } @@ -1335,11 +1277,6 @@ if ( compilationUnit->HasFileWithExtension ( extension ) ) return true; } - for ( i = 0; i < data.ifs.size (); i++ ) - { - if ( HasFileWithExtension ( data.ifs[i]->data, extension ) ) - return true; - } return false; } @@ -1828,34 +1765,6 @@ } -If::If ( const XMLElement& node_, - const Project& project_, - const Module* module_, - const bool negated_ ) - : node(node_), project(project_), module(module_), negated(negated_) -{ - const XMLAttribute* att; - - att = node.GetAttribute ( "property", true ); - assert(att); - property = att->value; - - att = node.GetAttribute ( "value", true ); - assert(att); - value = att->value; -} - -If::~If () -{ -} - -void -If::ProcessXML() -{ - -} - - Property::Property ( const XMLElement& node_, const Project& project_, const Module* module_ ) Modified: trunk/reactos/tools/rbuild/project.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/project.cpp?r…
============================================================================== --- trunk/reactos/tools/rbuild/project.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/project.cpp [iso-8859-1] Sun Jul 27 11:17:50 2008 @@ -1,5 +1,6 @@ /* * Copyright (C) 2005 Casper S. Hornstrup + * Copyright (C) 2008 Hervé Poussineau * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -93,8 +94,7 @@ } ParseContext::ParseContext () - : ifData (NULL), - compilationUnit (NULL) + : compilationUnit (NULL) { } @@ -373,27 +373,6 @@ non_if_data.ExtractModules( modules ); - for ( i = 0; i < non_if_data.ifs.size (); i++ ) - { - const Property *property = - LookupProperty( non_if_data.ifs[i]->property ); - - if( !property ) continue; - - bool conditionTrue = - (non_if_data.ifs[i]->negated && - (property->value != non_if_data.ifs[i]->value)) || - (property->value == non_if_data.ifs[i]->value); - if ( conditionTrue ) - non_if_data.ifs[i]->data.ExtractModules( modules ); - else - { - If * if_data = non_if_data.ifs[i]; - non_if_data.ifs.erase ( non_if_data.ifs.begin () + i ); - delete if_data; - i--; - } - } for ( i = 0; i < linkerFlags.size (); i++ ) linkerFlags[i]->ProcessXML (); for ( i = 0; i < modules.size (); i++ ) @@ -410,7 +389,6 @@ ParseContext& parseContext ) { bool subs_invalid = false; - If* pOldIf = parseContext.ifData; string subpath(path); if ( e.name == "module" ) @@ -422,10 +400,7 @@ "module name conflict: '%s' (originally defined at %s)", module->name.c_str(), module->node.location.c_str() ); - if ( parseContext.ifData ) - parseContext.ifData->data.modules.push_back( module ); - else - non_if_data.modules.push_back ( module ); + non_if_data.modules.push_back ( module ); return; // defer processing until later } else if ( e.name == "cdfile" ) @@ -449,28 +424,19 @@ else if ( e.name == "include" ) { Include* include = new Include ( *this, &e ); - if ( parseContext.ifData ) - parseContext.ifData->data.includes.push_back ( include ); - else - non_if_data.includes.push_back ( include ); + non_if_data.includes.push_back ( include ); subs_invalid = true; } else if ( e.name == "define" ) { Define* define = new Define ( *this, e ); - if ( parseContext.ifData ) - parseContext.ifData->data.defines.push_back ( define ); - else - non_if_data.defines.push_back ( define ); + non_if_data.defines.push_back ( define ); subs_invalid = true; } else if ( e.name == "compilerflag" ) { CompilerFlag* pCompilerFlag = new CompilerFlag ( *this, e ); - if ( parseContext.ifData ) - parseContext.ifData->data.compilerFlags.push_back ( pCompilerFlag ); - else - non_if_data.compilerFlags.push_back ( pCompilerFlag ); + non_if_data.compilerFlags.push_back ( pCompilerFlag ); subs_invalid = true; } else if ( e.name == "linkerflag" ) @@ -478,31 +444,40 @@ linkerFlags.push_back ( new LinkerFlag ( *this, e ) ); subs_invalid = true; } - else if ( e.name == "if" ) - { - parseContext.ifData = new If ( e, *this, NULL ); - if ( pOldIf ) - pOldIf->data.ifs.push_back ( parseContext.ifData ); - else - non_if_data.ifs.push_back ( parseContext.ifData ); + else if ( e.name == "if" || e.name == "ifnot" ) + { + const XMLAttribute* name; + name = e.GetAttribute ( "property", true ); + assert( name ); + const Property *property = LookupProperty( name->value ); + if ( !property ) + { + // Property not found + throw InvalidOperationException ( __FILE__, + __LINE__, + "Test on unknown property '%s' at %s", + name->value.c_str (), e.location.c_str () ); + } + + const XMLAttribute* value; + value = e.GetAttribute ( "value", true ); + assert( value ); + + bool negate = ( e.name == "ifnot" ); + bool equality = ( property->value == value->value ); + if ( equality == negate ) + { + // Failed, skip this element + if ( configuration.Verbose ) + printf("Skipping 'If' at %s\n", e.location.c_str () ); + return; + } subs_invalid = false; } - else if ( e.name == "ifnot" ) - { - parseContext.ifData = new If ( e, *this, NULL, true ); - if ( pOldIf ) - pOldIf->data.ifs.push_back ( parseContext.ifData ); - else - non_if_data.ifs.push_back ( parseContext.ifData ); - subs_invalid = false; - } else if ( e.name == "property" ) { Property* property = new Property ( e, *this, NULL ); - if ( parseContext.ifData ) - parseContext.ifData->data.properties.push_back ( property ); - else - non_if_data.properties.push_back ( property ); + non_if_data.properties.push_back ( property ); } if ( subs_invalid && e.subElements.size() ) { @@ -513,8 +488,6 @@ } for ( size_t i = 0; i < e.subElements.size (); i++ ) ProcessXMLSubElement ( *e.subElements[i], subpath, parseContext ); - - parseContext.ifData = pOldIf; } Module* Modified: trunk/reactos/tools/rbuild/rbuild.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/rbuild.h?rev=…
============================================================================== --- trunk/reactos/tools/rbuild/rbuild.h [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/rbuild.h [iso-8859-1] Sun Jul 27 11:17:50 2008 @@ -83,7 +83,6 @@ class InvokeFile; class Dependency; class ImportLibrary; -class If; class CompilerFlag; class LinkerFlag; class LinkerScript; @@ -198,7 +197,6 @@ class ParseContext { public: - If* ifData; CompilationUnit* compilationUnit; ParseContext (); }; @@ -215,7 +213,6 @@ std::vector<Property*> properties; std::vector<Module*> modules; std::vector<CompilerFlag*> compilerFlags; - std::vector<If*> ifs; int asmFiles; // number of .asm files in compilationUnits IfableData(); @@ -254,9 +251,9 @@ const Module* LocateModule ( const std::string& name ) const; const std::string& GetProjectFilename () const; std::string ResolveProperties ( const std::string& s ) const; + const Property* LookupProperty ( const std::string& name ) const; private: std::string ResolveNextProperty ( const std::string& s ) const; - const Property* LookupProperty ( const std::string& name ) const; void SetConfigurationOption ( char* s, std::string name, std::string alternativeName ); @@ -600,26 +597,6 @@ }; -class If -{ -public: - const XMLElement& node; - const Project& project; - const Module* module; - const bool negated; - std::string property, value; - IfableData data; - - If ( const XMLElement& node_, - const Project& project_, - const Module* module_, - const bool negated_ = false ); - ~If(); - - void ProcessXML(); -}; - - class CompilerFlag { public: Modified: trunk/reactos/tools/rbuild/testsupportcode.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/testsupportco…
============================================================================== --- trunk/reactos/tools/rbuild/testsupportcode.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/testsupportcode.cpp [iso-8859-1] Sun Jul 27 11:17:50 2008 @@ -312,27 +312,6 @@ if ( !compilationUnits[i]->IsGeneratedFile () && IsTestFile ( filename ) ) list.push_back ( filename ); } - // intentionally make a copy so that we can append more work in - // the middle of processing without having to go recursive - vector<If*> v = module.non_if_data.ifs; - for ( i = 0; i < v.size (); i++ ) - { - size_t j; - If& rIf = *v[i]; - // check for sub-ifs to add to list - const vector<If*>& ifs = rIf.data.ifs; - for ( j = 0; j < ifs.size (); j++ ) - v.push_back ( ifs[j] ); - const vector<CompilationUnit*>& compilationUnits = rIf.data.compilationUnits; - for ( j = 0; j < compilationUnits.size (); j++ ) - { - CompilationUnit& compilationUnit = *compilationUnits[j]; - const FileLocation& sourceFileLocation = compilationUnits[j]->GetFilename (); - string filename = sourceFileLocation.relative_path + sSep + sourceFileLocation.name; - if ( !compilationUnit.IsGeneratedFile () && IsTestFile ( filename ) ) - list.push_back ( filename ); - } - } } char*
16 years, 5 months
1
0
0
0
[fireball] 34851: - ntdll should be the last library in the list, not the first or somewhere in the middle ("as it imports from nothing and everything else should be resolved with it", by Herve). This fixes some base system DLLs dependency on msvcrt (which doesn't exist in Windows). Thanks Herve!
by fireball@svn.reactos.org
Author: fireball Date: Sun Jul 27 11:03:38 2008 New Revision: 34851 URL:
http://svn.reactos.org/svn/reactos?rev=34851&view=rev
Log: - ntdll should be the last library in the list, not the first or somewhere in the middle ("as it imports from nothing and everything else should be resolved with it", by Herve). This fixes some base system DLLs dependency on msvcrt (which doesn't exist in Windows). Thanks Herve! Modified: trunk/reactos/dll/win32/advapi32/advapi32.rbuild trunk/reactos/dll/win32/gdi32/gdi32.rbuild trunk/reactos/dll/win32/rpcrt4/rpcrt4.rbuild trunk/reactos/dll/win32/user32/user32.rbuild Modified: trunk/reactos/dll/win32/advapi32/advapi32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/advapi32/advapi3…
============================================================================== --- trunk/reactos/dll/win32/advapi32/advapi32.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/advapi32/advapi32.rbuild [iso-8859-1] Sun Jul 27 11:03:38 2008 @@ -11,11 +11,11 @@ <library>scm_client</library> <library>lsa_client</library> <library>eventlog_client</library> - <library>ntdll</library> <library>rpcrt4</library> <library>wine</library> <library>kernel32</library> <library>pseh</library> + <library>ntdll</library> <pch>advapi32.h</pch> <directory name="crypt"> <file>crypt.c</file> Modified: trunk/reactos/dll/win32/gdi32/gdi32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdi32/gdi32.rbui…
============================================================================== --- trunk/reactos/dll/win32/gdi32/gdi32.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdi32/gdi32.rbuild [iso-8859-1] Sun Jul 27 11:03:38 2008 @@ -5,13 +5,13 @@ <define name="WINVER">0x0600</define> <define name="_WIN32_WINNT">0x0501</define> <define name="LANGPACK" /> - <library>ntdll</library> <library>user32</library> <library>kernel32</library> <library>advapi32</library> <library>win32ksys</library> <library>pseh</library> <library>dxguid</library> + <library>ntdll</library> <directory name="include"> <pch>precomp.h</pch> Modified: trunk/reactos/dll/win32/rpcrt4/rpcrt4.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rpcrt4/rpcrt4.rb…
============================================================================== --- trunk/reactos/dll/win32/rpcrt4/rpcrt4.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/rpcrt4/rpcrt4.rbuild [iso-8859-1] Sun Jul 27 11:03:38 2008 @@ -13,13 +13,13 @@ <define name="MSWMSG" /> <library>wine</library> <library>uuid</library> - <library>ntdll</library> <library>kernel32</library> <library>user32</library> <library>advapi32</library> <library>secur32</library> <library>iphlpapi</library> <library>ws2_32</library> + <library>ntdll</library> <file>cproxy.c</file> <file>cpsf.c</file> <file>cstub.c</file> Modified: trunk/reactos/dll/win32/user32/user32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/user32.rb…
============================================================================== --- trunk/reactos/dll/win32/user32/user32.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/user32/user32.rbuild [iso-8859-1] Sun Jul 27 11:03:38 2008 @@ -7,13 +7,13 @@ <define name="WINVER">0x0600</define> <define name="_WIN32_WINNT">0x0501</define> <library>wine</library> - <library>ntdll</library> <library>gdi32</library> <library>kernel32</library> <library>advapi32</library> <library>imm32</library> <library>win32ksys</library> <library>pseh</library> + <library>ntdll</library> <directory name="include"> <pch>user32.h</pch>
16 years, 5 months
1
0
0
0
[hpoussin] 34850: Define __LINUX__ for build tools if host is Linux
by hpoussin@svn.reactos.org
Author: hpoussin Date: Sun Jul 27 10:49:18 2008 New Revision: 34850 URL:
http://svn.reactos.org/svn/reactos?rev=34850&view=rev
Log: Define __LINUX__ for build tools if host is Linux Modified: trunk/reactos/Makefile Modified: trunk/reactos/Makefile URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/Makefile?rev=34850&r1=3484…
============================================================================== --- trunk/reactos/Makefile [iso-8859-1] (original) +++ trunk/reactos/Makefile [iso-8859-1] Sun Jul 27 10:49:18 2008 @@ -183,7 +183,7 @@ else HOST=mingw32-linux HOST_CFLAGS+=-fshort-wchar -D__LINUX__ -HOST_CPPFLAGS+=-fshort-wchar +HOST_CPPFLAGS+=-fshort-wchar -D__LINUX__ endif endif
16 years, 5 months
1
0
0
0
[hpoussin] 34849: Add a variable to include support for ELF format
by hpoussin@svn.reactos.org
Author: hpoussin Date: Sun Jul 27 10:48:00 2008 New Revision: 34849 URL:
http://svn.reactos.org/svn/reactos?rev=34849&view=rev
Log: Add a variable to include support for ELF format Modified: trunk/reactos/config-arm.template.rbuild trunk/reactos/config-ppc.template.rbuild trunk/reactos/config.template.rbuild Modified: trunk/reactos/config-arm.template.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/config-arm.template.rbuild…
============================================================================== --- trunk/reactos/config-arm.template.rbuild [iso-8859-1] (original) +++ trunk/reactos/config-arm.template.rbuild [iso-8859-1] Sun Jul 27 10:48:00 2008 @@ -79,4 +79,10 @@ --> <property name="_WINKD_" value="0" /> +<!-- + Whether to compile support for ELF files. Do not enable unless you know what + you're doing. +--> +<property name="_ELF_" value="0" /> + </group> Modified: trunk/reactos/config-ppc.template.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/config-ppc.template.rbuild…
============================================================================== --- trunk/reactos/config-ppc.template.rbuild [iso-8859-1] (original) +++ trunk/reactos/config-ppc.template.rbuild [iso-8859-1] Sun Jul 27 10:48:00 2008 @@ -61,4 +61,10 @@ --> <property name="NSWPAT" value="0" /> +<!-- + Whether to compile support for ELF files. Do not enable unless you know what + you're doing. +--> +<property name="_ELF_" value="0" /> + </group> Modified: trunk/reactos/config.template.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/config.template.rbuild?rev…
============================================================================== --- trunk/reactos/config.template.rbuild [iso-8859-1] (original) +++ trunk/reactos/config.template.rbuild [iso-8859-1] Sun Jul 27 10:48:00 2008 @@ -79,4 +79,10 @@ --> <property name="_WINKD_" value="0" /> +<!-- + Whether to compile support for ELF files. Do not enable unless you know what + you're doing. +--> +<property name="_ELF_" value="0" /> + </group>
16 years, 5 months
1
0
0
0
← Newer
1
...
11
12
13
14
15
16
17
...
77
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
Results per page:
10
25
50
100
200