summaryrefslogtreecommitdiffstats
path: root/memtestEDK/Memtest/ProtocolInformation/Logger.c
diff options
context:
space:
mode:
Diffstat (limited to 'memtestEDK/Memtest/ProtocolInformation/Logger.c')
-rw-r--r--memtestEDK/Memtest/ProtocolInformation/Logger.c83
1 files changed, 47 insertions, 36 deletions
diff --git a/memtestEDK/Memtest/ProtocolInformation/Logger.c b/memtestEDK/Memtest/ProtocolInformation/Logger.c
index d41f7e5..739af65 100644
--- a/memtestEDK/Memtest/ProtocolInformation/Logger.c
+++ b/memtestEDK/Memtest/ProtocolInformation/Logger.c
@@ -19,9 +19,7 @@ EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *Console;
EFI_GUID sfspGuid = EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID;
EFI_HANDLE* handleBuffer = NULL;
-EFI_HANDLE* handleBuffer2 = NULL; // TODO remove
UINTN handleCount = 0;
-UINTN handleCount2 = 0;
UINTN handleIndex;
EFI_GUID **ProtocolGuidArray;
@@ -35,6 +33,8 @@ UINTN OpenInfoCount;
EFI_FILE_PROTOCOL* root = NULL;
EFI_FILE_SYSTEM_INFO* fileSystemInfo = NULL;
+UINT64 currPos;
+
void printFileSystemInfo(EFI_FILE_SYSTEM_INFO* fileSystemInfo) {
Print(L"fileSystemInfo pointer %p\n", fileSystemInfo);
@@ -78,8 +78,19 @@ BOOLEAN compareGuids(EFI_GUID* sfspGuid, EFI_GUID* guid) {
return FALSE;
}
-EFI_STATUS writeToFile() {
-
+EFI_STATUS writeToFile(char* m, int l) {
+
+ Print(L"\n\nStart writeToFile to file\n");
+
+ // Append a newline symbol to the beginning
+ UINTN length = (UINTN) (l + 1);
+ char message[length];
+ message[0] = '\n';
+ for (int i = 0; i < l; i++) {
+ message[i+1] = m[i];
+ }
+
+ // Open the file
EFI_FILE_PROTOCOL* token = NULL;
efiStatus = root->Open(
root,
@@ -89,47 +100,38 @@ EFI_STATUS writeToFile() {
0);
checkStatus(efiStatus, "Open");
- UINT64 currPos;
- efiStatus = token->GetPosition(token, &currPos);
- checkStatus(efiStatus, "GetPosition");
- Print(L"Current File Position: %d\n", currPos);
-
- UINTN fileSize; // TODO get the actual size
+ /*UINTN fileSize = 80;
CHAR16* fileBuffer = NULL;
-
- efiStatus = token->Read(token, &fileSize, fileBuffer);
- checkStatus(efiStatus, "Read");
-
- Print(L"FILE SIZE: %d\n", fileSize);
-
- fileSize += 80;
efiStatus = bs->AllocatePool(EfiLoaderData, (UINTN) (fileSize) , (void **)&fileBuffer);
checkStatus(efiStatus, "AllocatePool for file");
-
- Print(L"FILE SIZE2: %d\n", fileSize);
-
+ Print(L"FILE SIZE: %d\n", fileSize);
efiStatus = token->Read(token, &fileSize, fileBuffer);
checkStatus(efiStatus, "Read");
- printFileContent(fileSize, fileBuffer);
+
+ if (fileSize != 0) {
+ printFileContent(fileSize, fileBuffer);
+ }
efiStatus = token->GetPosition(token, &currPos);
checkStatus(efiStatus, "GetPosition");
Print(L"Current File Position: %d\n", currPos);
+*/
+ /*
+ if (fileSize >=1) {
+ token->SetPosition(token, fileSize-1);
+ }*/
- char message[] = "\nAdding a new line";
- UINTN length = 19;
- UINTN sizeBytes = sizeof(message);
- Print(L"size in bytes: %d\n", sizeBytes);
- Print(L"Lengh: %d\n", length);
+ Print(L"Write function starts\n");
- if (fileSize >=1) {
- token->SetPosition(token, fileSize);
- }
+ token->SetPosition(token, currPos);
efiStatus = token->Write(token, &length, message);
checkStatus(efiStatus, "Write");
- fileSize += length;
+ currPos += length;
+
+
+ /*fileSize += length;
token->SetPosition(token, 0);
@@ -138,15 +140,13 @@ EFI_STATUS writeToFile() {
if (fileBuffer != NULL) {
bs->FreePool(fileBuffer);
- }
-
- if (fileSystemInfo != NULL) {
- bs->FreePool(fileSystemInfo);
- }
+ }*/
efiStatus = token->Close(token);
checkStatus(efiStatus, "Close");
+ Print(L"End WriteToFile\n\n");
+
return efiStatus;
}
@@ -172,7 +172,9 @@ UefiMain (
);
checkStatus(efiStatus, "LocateHandleBuffer");
+ int filesystem_found = 0;
for (handleIndex = 0; handleIndex < handleCount; handleIndex++) {
+ if (filesystem_found) break;
//
// Retrieve the list of all the protocols on each handle
//
@@ -249,13 +251,22 @@ UefiMain (
//printFileSystemInfo(fileSystemInfo);
// TODO first check if it is the right filesystem. If yes, leave the for loop
+ filesystem_found = 1;
break;
} // end if (compareGuids(&sfspGuid, guid))
} // end for (ProtocolIndex = 0; ProtocolIndex < ArrayCount; ProtocolIndex++)
} // end "for (handleIndex = 0; handleIndex < handleCount; handleIndex++)"
- efiStatus = writeToFile();
+ char msg[] = "This is the first line";
+ efiStatus = writeToFile(msg, sizeof(msg));
+
+ char msg2[] = "This is the second line";
+ efiStatus = writeToFile(msg2, sizeof(msg2));
+
+ if (fileSystemInfo != NULL) {
+ bs->FreePool(fileSystemInfo);
+ }
return EFI_SUCCESS;
}