VirtualBox

Changeset 42741 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Aug 10, 2012 7:11:09 AM (12 years ago)
Author:
vboxsync
Message:

EFI/VBoxFsDxe: moved to UDK2010.sr1 API.

Location:
trunk/src/VBox/Devices/EFI/Firmware2/VBoxPkg/VBoxFsDxe
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/Firmware2/VBoxPkg/VBoxFsDxe/VBoxHfs.inf

    r29125 r42741  
    3636[Packages]
    3737        MdePkg/MdePkg.dec
     38        MdeModulePkg/MdeModulePkg.dec
    3839        IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
    3940        VBoxPkg/VBoxPkg.dec
     
    4950   DebugLib
    5051   PcdLib
     52   DevicePathLib
    5153
    5254[Guids]
     
    6163  gEfiUnicodeCollationProtocolGuid
    6264  gEfiUnicodeCollation2ProtocolGuid
     65  gEfiDevicePathToTextProtocolGuid                ## CONSUMED
    6366
    6467[Pcd]
     
    6770
    6871[BuildOptions.common]
    69   GCC:*_*_*_CC_FLAGS = -DFSTYPE=hfs
     72  GCC:*_*_*_CC_FLAGS = -DFSTYPE=hfs -DEFI_LOG_ENABLED=1
    7073# -DFSW_DEBUG_LEVEL=3
    7174  INTEL:*_*_*_CC_FLAGS = -DFSTYPE=hfs
  • trunk/src/VBox/Devices/EFI/Firmware2/VBoxPkg/VBoxFsDxe/VBoxIso9660.inf

    r29125 r42741  
    3434[Packages]
    3535        MdePkg/MdePkg.dec
     36        MdeModulePkg/MdeModulePkg.dec
    3637        IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
    3738        VBoxPkg/VBoxPkg.dec
     
    4748   DebugLib
    4849   PcdLib
     50   DevicePathLib
    4951
    5052[Guids]
     
    6062  gEfiUnicodeCollationProtocolGuid
    6163  gEfiUnicodeCollation2ProtocolGuid
     64  gEfiDevicePathToTextProtocolGuid                ## CONSUMED
    6265
    6366[Pcd]
  • trunk/src/VBox/Devices/EFI/Firmware2/VBoxPkg/VBoxFsDxe/fsw_core.h

    r33540 r42741  
    7272
    7373/** Indicates that the block cache entry is empty. */
    74 #define FSW_INVALID_BNO (~0UL)
     74#define FSW_INVALID_BNO (~0U)
    7575
    7676
  • trunk/src/VBox/Devices/EFI/Firmware2/VBoxPkg/VBoxFsDxe/fsw_efi.c

    r29125 r42741  
    6767#define FSW_EFI_DRIVER_NAME(t) L"Fsw " FSW_EFI_STRINGIFY(t) L" File System Driver"
    6868
     69
    6970// function prototypes
    7071
     
    222223
    223224    // first, open DiskIO
     225    LogFlowFuncEnter();
     226    LogFlowFuncMarkDP(RemainingDevicePath);
     227
    224228    Status = BS->OpenProtocol(ControllerHandle,
    225229                              &PROTO_NAME(DiskIoProtocol),
     
    227231                              This->DriverBindingHandle,
    228232                              ControllerHandle,
    229                               EFI_OPEN_PROTOCOL_BY_DRIVER);
     233                              EFI_OPEN_PROTOCOL_GET_PROTOCOL);
    230234    if (EFI_ERROR(Status))
    231         return Status;
     235    {
     236        LogFlowFuncLeaveRC(Status);
     237        return Status;
     238    }
    232239
    233240    // we were just checking, close it again
     
    244251                              ControllerHandle,
    245252                              EFI_OPEN_PROTOCOL_TEST_PROTOCOL);
     253    LogFlowFuncLeaveRC(Status);
     254    return Status;
     255}
     256
     257static EFI_STATUS fsw_efi_ReMount(IN FSW_VOLUME_DATA *pVolume,
     258                                       IN EFI_HANDLE      ControllerHandle,
     259                                       EFI_DISK_IO        *pDiskIo,
     260                                       EFI_BLOCK_IO       *pBlockIo)
     261{
     262    EFI_STATUS Status;
     263    LogFlowFuncEnter();
     264    pVolume->Signature       = FSW_VOLUME_DATA_SIGNATURE;
     265    pVolume->Handle          = ControllerHandle;
     266    pVolume->DiskIo          = pDiskIo;
     267    pVolume->MediaId         = pBlockIo->Media->MediaId;
     268    pVolume->LastIOStatus    = EFI_SUCCESS;
     269
     270    // mount the filesystem
     271    Status = fsw_efi_map_status(fsw_mount(pVolume, &fsw_efi_host_table,
     272                                          &FSW_FSTYPE_TABLE_NAME(FSTYPE), &pVolume->vol),
     273                                pVolume);
     274
     275    LogFlowFuncMarkVar(Status, "%r");
     276    if (!EFI_ERROR(Status)) {
     277        // register the SimpleFileSystem protocol
     278        pVolume->FileSystem.Revision     = EFI_FILE_IO_INTERFACE_REVISION;
     279        pVolume->FileSystem.OpenVolume   = fsw_efi_FileSystem_OpenVolume;
     280        Status = BS->InstallMultipleProtocolInterfaces(&ControllerHandle,
     281                                                       &PROTO_NAME(SimpleFileSystemProtocol), &pVolume->FileSystem,
     282                                                       NULL);
     283        if (EFI_ERROR(Status))
     284            Print(L"Fsw ERROR: InstallMultipleProtocolInterfaces returned %x\n", Status);
     285    }
     286    LogFlowFuncLeaveRC(Status);
    246287    return Status;
    247288}
     
    269310    FSW_VOLUME_DATA     *Volume;
    270311
    271 #if DEBUG_LEVEL
    272     Print(L"fsw_efi_DriverBinding_Start\n");
    273 #endif
    274 
     312    LogFlowFuncEnter();
    275313    // open consumed protocols
    276314    Status = BS->OpenProtocol(ControllerHandle,
     
    281319                              EFI_OPEN_PROTOCOL_GET_PROTOCOL);   // NOTE: we only want to look at the MediaId
    282320    if (EFI_ERROR(Status)) {
    283         Print(L"Fsw ERROR: OpenProtocol(BlockIo) returned %x\n", Status);
     321        LogFlowFuncLeaveRC(Status);
    284322        return Status;
    285323    }
     
    292330                              EFI_OPEN_PROTOCOL_BY_DRIVER);
    293331    if (EFI_ERROR(Status)) {
    294         Print(L"Fsw ERROR: OpenProtocol(DiskIo) returned %x\n", Status);
     332        LogFlowFuncLeaveRC(Status);
    295333        return Status;
    296334    }
     
    298336    // allocate volume structure
    299337    Volume = AllocateZeroPool(sizeof(FSW_VOLUME_DATA));
    300     Volume->Signature       = FSW_VOLUME_DATA_SIGNATURE;
    301     Volume->Handle          = ControllerHandle;
    302     Volume->DiskIo          = DiskIo;
    303     Volume->MediaId         = BlockIo->Media->MediaId;
    304     Volume->LastIOStatus    = EFI_SUCCESS;
    305 
    306     // mount the filesystem
    307     Status = fsw_efi_map_status(fsw_mount(Volume, &fsw_efi_host_table,
    308                                           &FSW_FSTYPE_TABLE_NAME(FSTYPE), &Volume->vol),
    309                                 Volume);
    310 
    311     if (!EFI_ERROR(Status)) {
    312         // register the SimpleFileSystem protocol
    313         Volume->FileSystem.Revision     = EFI_FILE_IO_INTERFACE_REVISION;
    314         Volume->FileSystem.OpenVolume   = fsw_efi_FileSystem_OpenVolume;
    315         Status = BS->InstallMultipleProtocolInterfaces(&ControllerHandle,
    316                                                        &PROTO_NAME(SimpleFileSystemProtocol), &Volume->FileSystem,
    317                                                        NULL);
    318         if (EFI_ERROR(Status))
    319             Print(L"Fsw ERROR: InstallMultipleProtocolInterfaces returned %x\n", Status);
    320     }
     338    Status = fsw_efi_ReMount(Volume, ControllerHandle, DiskIo, BlockIo);
    321339
    322340    // on errors, close the opened protocols
     
    326344        FreePool(Volume);
    327345
    328         BS->CloseProtocol(ControllerHandle,
    329                           &PROTO_NAME(DiskIoProtocol),
    330                           This->DriverBindingHandle,
    331                           ControllerHandle);
    332     }
    333 
     346#if 0
     347        if (Status == EFI_MEDIA_CHANGED)
     348            Status = fsw_efi_ReMount(Volume, ControllerHandle, DiskIo, BlockIo);
     349        else
     350#endif
     351            BS->CloseProtocol(ControllerHandle,
     352                              &PROTO_NAME(DiskIoProtocol),
     353                              This->DriverBindingHandle,
     354                              ControllerHandle);
     355    }
     356
     357    LogFlowFuncLeaveRC(Status);
    334358    return Status;
    335359}
  • trunk/src/VBox/Devices/EFI/Firmware2/VBoxPkg/VBoxFsDxe/fsw_iso9660.c

    r33540 r42741  
    8888static fsw_status_t rr_find_nm(struct fsw_iso9660_volume *vol, struct iso9660_dirrec *dirrec, int off, struct fsw_string *str);
    8989static fsw_status_t rr_read_ce(struct fsw_iso9660_volume *vol, union fsw_rock_ridge_susp_ce *ce, fsw_u8 *begin);
    90 static void dump_dirrec(struct iso9660_dirrec *dirrec);
    9190//
    9291// Dispatch Table
     
    226225{
    227226    int rc;
    228     int i;
    229     fsw_u8 *r = begin + ISOINT(ce->X.offset);
    230     int len = ISOINT(ce->X.len);
    231227    rc = vol->g.host_table->read_block(&vol->g, ISOINT(ce->X.block_loc), begin);
    232228    if (rc != FSW_SUCCESS)
    233229        return rc;
    234     for (i = 0; i < len; ++i)
    235     {
    236         DEBUG((DEBUG_INFO, "%d: (%d:%x)%c ", i, r[i], r[i], r[i]));
    237     }
    238     return FSW_SUCCESS;
    239 }
    240 static void dump_dirrec(struct iso9660_dirrec *dirrec)
    241 {
    242     int i;
    243     fsw_u8 *r = (fsw_u8 *)dirrec + dirrec->file_identifier_length;
    244     int len = dirrec->dirrec_length;
    245     for (i = dirrec->file_identifier_length; i < len; ++i)
    246     {
    247         DEBUG((DEBUG_INFO, "%d: (%d:%x)%c ", i, r[i], r[i], r[i]));
    248     }
     230    return FSW_SUCCESS;
    249231}
    250232/**
     
    624606        return FSW_VOLUME_CORRUPTED;
    625607
    626      dump_dirrec(dirrec);
    627608     if (vol->fRockRidge)
    628609     {
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette