Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenenvir.c
Go to the documentation of this file.
00001 /* 00002 * PROJECT: ReactOS Boot Loader 00003 * LICENSE: BSD - See COPYING.ARM in the top level directory 00004 * FILE: boot/armllb/envir.c 00005 * PURPOSE: LLB Environment Variable Routines 00006 * PROGRAMMERS: ReactOS Portable Systems Group 00007 */ 00008 00009 #include "precomp.h" 00010 00011 ULONG LlbEnvHwPageSize; 00012 ULONG LlbEnvHwMemStart = 0; 00013 ULONG LlbEnvHwMemSize = 0; 00014 ULONG LlbEnvRamDiskStart = 0; 00015 ULONG LlbEnvRamDiskSize = 0; 00016 ULONG LlbEnvHwRevision; 00017 CHAR LlbEnvCmdLine[256]; 00018 CHAR LlbValueData[32]; 00019 00020 VOID 00021 NTAPI 00022 LlbEnvParseArguments(IN PATAG Arguments) 00023 { 00024 PATAG Atag; 00025 00026 /* Parse the ATAGs */ 00027 Atag = Arguments; 00028 while (Atag->Hdr.Size) 00029 { 00030 /* Check tag type */ 00031 switch (Atag->Hdr.Tag) 00032 { 00033 case ATAG_CORE: 00034 00035 /* Save page size */ 00036 LlbEnvHwPageSize = Atag->u.Core.PageSize; 00037 break; 00038 00039 case ATAG_REVISION: 00040 00041 /* Save page size */ 00042 LlbEnvHwRevision = Atag->u.Revision.Rev; 00043 break; 00044 00045 case ATAG_MEM: 00046 00047 /* Save RAM start and size */ 00048 if (!LlbEnvHwMemStart) LlbEnvHwMemStart = Atag->u.Mem.Start; 00049 LlbEnvHwMemSize += Atag->u.Mem.Size; 00050 break; 00051 00052 case ATAG_INITRD2: 00053 00054 /* Save RAMDISK start and size */ 00055 LlbEnvRamDiskStart = Atag->u.InitRd2.Start; 00056 LlbEnvRamDiskSize = Atag->u.InitRd2.Size; 00057 00058 #ifdef _BEAGLE_ 00059 /* Make sure it's 16MB-aligned */ 00060 LlbEnvRamDiskSize = (LlbEnvRamDiskSize + (16 * 1024 * 1024) - 1) 00061 &~ ((16 * 1024 * 1024) - 1); 00062 00063 /* The RAMDISK actually starts 16MB later */ 00064 LlbEnvRamDiskStart += 16 * 1024 * 1024; 00065 LlbEnvRamDiskSize -= 16 * 1024 * 1024; 00066 #endif 00067 break; 00068 00069 case ATAG_CMDLINE: 00070 00071 /* Save command line */ 00072 strncpy(LlbEnvCmdLine, 00073 Atag->u.CmdLine.CmdLine, 00074 Atag->Hdr.Size * sizeof(ULONG)); 00075 break; 00076 00077 /* Nothing left to handle */ 00078 case ATAG_NONE: 00079 default: 00080 break; 00081 } 00082 00083 /* Next tag */ 00084 Atag = (PATAG)((PULONG)Atag + Atag->Hdr.Size); 00085 } 00086 00087 /* For debugging */ 00088 DbgPrint("[BOOTROM] Board Revision: %lx PageSize: %dKB RAM: %dMB CMDLINE: %s\n" 00089 "[RAMDISK] Base: %lx Size: %dMB\n", 00090 LlbEnvHwRevision, 00091 LlbEnvHwPageSize / 1024, LlbEnvHwMemSize / 1024 / 1024, LlbEnvCmdLine, 00092 LlbEnvRamDiskStart, LlbEnvRamDiskSize / 1024 / 1024); 00093 } 00094 00095 VOID 00096 NTAPI 00097 LlbEnvGetMemoryInformation(IN PULONG Base, 00098 IN PULONG Size) 00099 { 00100 /* Return RAM information */ 00101 *Base = LlbEnvHwMemStart; 00102 *Size = LlbEnvHwMemSize; 00103 } 00104 00105 BOOLEAN 00106 NTAPI 00107 LlbEnvGetRamDiskInformation(IN PULONG Base, 00108 IN PULONG Size) 00109 { 00110 /* Do we have a ramdisk? */ 00111 if (LlbEnvRamDiskSize == 0) 00112 { 00113 /* No */ 00114 *Base = 0; 00115 *Size = 0; 00116 return FALSE; 00117 } 00118 00119 /* Return ramdisk information */ 00120 *Base = LlbEnvRamDiskStart; 00121 *Size = LlbEnvRamDiskSize; 00122 return TRUE; 00123 } 00124 00125 PCHAR 00126 NTAPI 00127 LlbEnvRead(IN PCHAR ValueName) 00128 { 00129 PCHAR ValuePointer; 00130 ULONG Length = 0; 00131 00132 /* Search for the value name */ 00133 ValuePointer = strstr(LlbEnvCmdLine, ValueName); 00134 if (ValuePointer) 00135 { 00136 /* Get the value data and its length */ 00137 ValuePointer += strlen(ValueName) + 1; 00138 if (strchr(ValuePointer, ',')) 00139 { 00140 /* Stop before next parameter */ 00141 Length = strchr(ValuePointer, ',') - ValuePointer; 00142 } 00143 else 00144 { 00145 /* Stop before the string ends */ 00146 Length = strlen(ValuePointer); 00147 } 00148 00149 /* Copy it */ 00150 strncpy(LlbValueData, ValuePointer, Length); 00151 } 00152 00153 /* Terminate the data */ 00154 LlbValueData[Length] = ANSI_NULL; 00155 00156 /* Return the data */ 00157 return LlbValueData; 00158 } 00159 00160 /* EOF */ 00161 Generated on Sat May 26 2012 04:17:46 for ReactOS by
1.7.6.1
|