/*
* Copyright (C) 2001-2003 Hewlett-Packard Co.
* Contributed by Stephane Eranian <eranian@hpl.hp.com>
+ * Copyright (C) 2006-2009 Intel Corporation
+ * Contributed by Fenghua Yu <fenghua.yu@intel.com>
+ * Contributed by Bibo Mao <bibo.mao@intel.com>
+ * Contributed by Chandramouli Narayanan <mouli@linux.intel.com>
*
* This file is part of the ELILO, the EFI Linux boot loader.
*
* let's be clean here
*/
typedef union {
- EFI_HANDLE *dev;
+ EFI_HANDLE dev;
localfs_t *intf;
} dev_tab_t;
DBG_PRT((L"localfs_open on %s\n", name));
- status = lfs->volume->Open(lfs->volume, &fh, name, EFI_FILE_MODE_READ, 0);
+ status = uefi_call_wrapper(lfs->volume->Open, 5, lfs->volume, &fh, name, EFI_FILE_MODE_READ, 0);
if (status == EFI_SUCCESS) {
*fd = LOCALFS_F2FD(fh);
}
lfs = FS_PRIVATE(this);
- return lfs->volume->Read(LOCALFS_FD2F(fd), size, buf);
+ return uefi_call_wrapper(lfs->volume->Read, 3, LOCALFS_FD2F(fd), size, buf);
}
static EFI_STATUS
lfs = FS_PRIVATE(this);
- return lfs->volume->Close(LOCALFS_FD2F(fd));
+ return uefi_call_wrapper(lfs->volume->Close, 1, LOCALFS_FD2F(fd));
}
static EFI_STATUS
*sz = info->FileSize;
- FreePool(info);
+ uefi_call_wrapper(BS->FreePool, 1, info);
return EFI_SUCCESS;
}
lfs = FS_PRIVATE(this);
- return lfs->volume->SetPosition(LOCALFS_FD2F(fd), newpos);
+ return uefi_call_wrapper(lfs->volume->SetPosition, 2, LOCALFS_FD2F(fd), newpos);
}
static VOID
EFI_FILE_IO_INTERFACE *volume;
EFI_FILE_HANDLE volume_fh;
- status = BS->HandleProtocol (dev, &LocalFsProtocol, (VOID **)&localfs);
+ status = uefi_call_wrapper(BS->HandleProtocol, 3, dev, &LocalFsProtocol, (VOID **)&localfs);
if (status == EFI_SUCCESS) {
ERR_PRT((L"Warning: found existing %s protocol on device", FS_NAME));
goto found;
}
- status = BS->HandleProtocol (dev, &FileSystemProtocol, (VOID **)&volume);
+ status = uefi_call_wrapper(BS->HandleProtocol, 3, dev, &FileSystemProtocol, (VOID **)&volume);
if (EFI_ERROR(status)) return EFI_INVALID_PARAMETER;
- status = volume->OpenVolume(volume, &volume_fh);
+ status = uefi_call_wrapper(volume->OpenVolume, 2, volume, &volume_fh);
if (EFI_ERROR(status)) {
ERR_PRT((L"cannot open volume"));
return status;
dp = DevicePathFromHandle(dev);
str = DevicePathToStr(dp);
Print(L"attached %s to %s\n", FS_NAME, str);
- FreePool(str);
+ uefi_call_wrapper(BS->FreePool, 1, str);
});
return EFI_SUCCESS;
EFI_STATUS status;
VOID *intf;
- BS->LocateHandle(ByProtocol, &FileSystemProtocol, NULL, &size, NULL);
+ uefi_call_wrapper(BS->LocateHandle, 5, ByProtocol, &FileSystemProtocol, NULL, &size, NULL);
if (size == 0) return EFI_UNSUPPORTED; /* no device found, oh well */
DBG_PRT((L"size=%d", size));
ERR_PRT((L"failed to allocate handle table"));
return EFI_OUT_OF_RESOURCES;
}
-
- status = BS->LocateHandle(ByProtocol, &FileSystemProtocol, NULL, &size, (VOID **)dev_tab);
+ status = uefi_call_wrapper(BS->LocateHandle, 5, ByProtocol, &FileSystemProtocol, NULL, &size, (VOID **)dev_tab);
if (status != EFI_SUCCESS) {
ERR_PRT((L"failed to get handles: %r", status));
free(dev_tab);
for(i=0; i < ndev; i++) {
if (dev_tab[i].intf == NULL) continue;
lfs = FS_PRIVATE(dev_tab[i].intf);
- status = BS->UninstallProtocolInterface(lfs->dev, &LocalFsProtocol, dev_tab[i].intf);
+ status = uefi_call_wrapper(BS->UninstallProtocolInterface, 3, lfs->dev, &LocalFsProtocol, dev_tab[i].intf);
if (EFI_ERROR(status)) {
ERR_PRT((L"Uninstall %s error: %r", FS_NAME, status));
continue;
dp = DevicePathFromHandle(lfs->dev);
str = DevicePathToStr(dp);
Print(L"uninstalled %s on %s\n", FS_NAME, str);
- FreePool(str);
+ uefi_call_wrapper(BS->FreePool, 1, str);
});
free(dev_tab[i].intf);
}