ReactOS  0.4.14-dev-583-g2a1ba2c
conversion.c File Reference
#include <freeldr.h>
#include <debug.h>
Include dependency graph for conversion.c:

Go to the source code of this file.

Functions

 DBG_DEFAULT_CHANNEL (WINDOWS)
 
VOID List_PaToVa (_In_ PLIST_ENTRY ListHeadPa)
 
VOID ConvertConfigToVA (PCONFIGURATION_COMPONENT_DATA Start)
 

Function Documentation

◆ ConvertConfigToVA()

VOID ConvertConfigToVA ( PCONFIGURATION_COMPONENT_DATA  Start)

Definition at line 51 of file conversion.c.

52 {
55 
56  TRACE("ConvertConfigToVA(Start 0x%X)\n", Start);
57  Child = Start;
58 
59  while (Child != NULL)
60  {
61  if (Child->ConfigurationData)
62  Child->ConfigurationData = PaToVa(Child->ConfigurationData);
63 
64  if (Child->Child)
65  Child->Child = PaToVa(Child->Child);
66 
67  if (Child->Parent)
68  Child->Parent = PaToVa(Child->Parent);
69 
70  if (Child->Sibling)
71  Child->Sibling = PaToVa(Child->Sibling);
72 
73  if (Child->ComponentEntry.Identifier)
74  Child->ComponentEntry.Identifier = PaToVa(Child->ComponentEntry.Identifier);
75 
76  TRACE("Device 0x%X class %d type %d id '%s', parent %p\n", Child,
77  Child->ComponentEntry.Class, Child->ComponentEntry.Type, VaToPa(Child->ComponentEntry.Identifier), Child->Parent);
78 
79  // Go through siblings list
80  Sibling = VaToPa(Child->Sibling);
81  while (Sibling != NULL)
82  {
83  if (Sibling->ConfigurationData)
84  Sibling->ConfigurationData = PaToVa(Sibling->ConfigurationData);
85 
86  if (Sibling->Child)
87  Sibling->Child = PaToVa(Sibling->Child);
88 
89  if (Sibling->Parent)
90  Sibling->Parent = PaToVa(Sibling->Parent);
91 
92  if (Sibling->Sibling)
93  Sibling->Sibling = PaToVa(Sibling->Sibling);
94 
95  if (Sibling->ComponentEntry.Identifier)
97 
98  TRACE("Device 0x%X class %d type %d id '%s', parent %p\n", Sibling,
99  Sibling->ComponentEntry.Class, Sibling->ComponentEntry.Type, VaToPa(Sibling->ComponentEntry.Identifier), Sibling->Parent);
100 
101  // Recurse into the Child tree
102  if (VaToPa(Sibling->Child) != NULL)
103  ConvertConfigToVA(VaToPa(Sibling->Child));
104 
105  Sibling = VaToPa(Sibling->Sibling);
106  }
107 
108  // Go to the next child
109  Child = VaToPa(Child->Child);
110  }
111 }
struct _CONFIGURATION_COMPONENT_DATA * Parent
Definition: arc.h:118
struct _CONFIGURATION_COMPONENT_DATA * Child
Definition: arc.h:119
CONFIGURATION_TYPE Type
Definition: arc.h:105
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
CONFIGURATION_CLASS Class
Definition: arc.h:104
Definition: partlist.h:33
CONFIGURATION_COMPONENT ComponentEntry
Definition: arc.h:121
struct _CONFIGURATION_COMPONENT_DATA * Sibling
Definition: arc.h:120
VOID ConvertConfigToVA(PCONFIGURATION_COMPONENT_DATA Start)
Definition: conversion.c:51
FORCEINLINE PVOID PaToVa(PVOID Pa)
Definition: conversion.h:22
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE ACPI_HANDLE Child
Definition: acpixf.h:728
FORCEINLINE PVOID VaToPa(PVOID Va)
Definition: conversion.h:15

Referenced by ConvertConfigToVA(), and WinLdrInitializePhase1().

◆ DBG_DEFAULT_CHANNEL()

DBG_DEFAULT_CHANNEL ( WINDOWS  )

◆ List_PaToVa()

VOID List_PaToVa ( _In_ PLIST_ENTRY  ListHeadPa)

Definition at line 21 of file conversion.c.

22 {
23  PLIST_ENTRY EntryPa, NextPa;
24 
25  /* List must be properly initialized */
26  ASSERT(ListHeadPa->Flink != 0);
27  ASSERT(ListHeadPa->Blink != 0);
28 
29  /* Loop the list in physical address space */
30  EntryPa = ListHeadPa->Flink;
31  while (EntryPa != ListHeadPa)
32  {
33  /* Save the physical address of the next entry */
34  NextPa = EntryPa->Flink;
35 
36  /* Convert the addresses of this entry */
37  EntryPa->Flink = PaToVa(EntryPa->Flink);
38  EntryPa->Blink = PaToVa(EntryPa->Blink);
39 
40  /* Go to the next entry */
41  EntryPa = NextPa;
42  }
43 
44  /* Finally convert the list head */
45  ListHeadPa->Flink = PaToVa(ListHeadPa->Flink);
46  ListHeadPa->Blink = PaToVa(ListHeadPa->Blink);
47 }
struct _LIST_ENTRY * Blink
Definition: typedefs.h:120
struct _LIST_ENTRY * Flink
Definition: typedefs.h:119
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
Definition: typedefs.h:117
FORCEINLINE PVOID PaToVa(PVOID Pa)
Definition: conversion.h:22