TianoCore EDK2 master
|
#include <Library/DebugLib.h>
#include <Library/XenHypercallLib.h>
#include "XenBusDxe.h"
#include "GrantTable.h"
#include "XenStore.h"
#include "XenBus.h"
#include <IndustryStandard/Xen/hvm/params.h>
#include <IndustryStandard/Xen/memory.h>
Go to the source code of this file.
Functions | |
STATIC EFI_STATUS | XenGetSharedInfoPage (IN OUT XENBUS_DEVICE *Dev) |
EFI_STATUS EFIAPI | XenBusDxeUnload (IN EFI_HANDLE ImageHandle) |
EFI_STATUS EFIAPI | XenBusDxeDriverEntryPoint (IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable) |
EFI_STATUS EFIAPI | XenBusDxeDriverBindingSupported (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL) |
VOID EFIAPI | NotifyExitBoot (IN EFI_EVENT Event, IN VOID *Context) |
EFI_STATUS EFIAPI | XenBusDxeDriverBindingStart (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL) |
EFI_STATUS EFIAPI | XenBusDxeDriverBindingStop (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer OPTIONAL) |
Variables | |
EFI_DRIVER_BINDING_PROTOCOL | gXenBusDxeDriverBinding |
STATIC EFI_LOCK | mMyDeviceLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_CALLBACK) |
STATIC XENBUS_DEVICE * | mMyDevice = NULL |
This driver produces XenBus Protocol instances for each Xen PV devices.
This XenBus bus driver will first initialize different services in order to enumerate the ParaVirtualized devices available.
Those services are:
Copyright (C) 2014, Citrix Ltd.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file XenBusDxe.c.
Definition at line 259 of file XenBusDxe.c.
EFI_STATUS EFIAPI XenBusDxeDriverBindingStart | ( | IN EFI_DRIVER_BINDING_PROTOCOL * | This, |
IN EFI_HANDLE | ControllerHandle, | ||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | OPTIONAL | ||
) |
Starts a bus controller.
The Start() function is designed to be invoked from the EFI boot service ConnectController(). As a result, much of the error checking on the parameters to Start() has been moved into this common boot service. It is legal to call Start() from other locations, but the following calling restrictions must be followed, or the system behavior will not be deterministic.
[in] | This | A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance. |
[in] | ControllerHandle | The handle of the controller to start. This handle must support a protocol interface that supplies an I/O abstraction to the driver. |
[in] | RemainingDevicePath | A pointer to the remaining portion of a device path. This parameter is ignored by device drivers, and is optional for bus drivers. For a bus driver, if this parameter is NULL, then handles for all the children of Controller are created by this driver. If this parameter is not NULL and the first Device Path Node is not the End of Device Path Node, then only the handle for the child device specified by the first Device Path Node of RemainingDevicePath is created by this driver. If the first Device Path Node of RemainingDevicePath is the End of Device Path Node, no child handle is created by this driver. |
EFI_SUCCESS | The device was started. |
EFI_DEVICE_ERROR | The device could not be started due to a device error.Currently not implemented. |
EFI_OUT_OF_RESOURCES | The request could not be completed due to a lack of resources. |
EFI_UNSUPPORTED | Something is missing on the system that prevent to start the device. |
Others | The driver failed to start the device. |
Definition at line 312 of file XenBusDxe.c.
EFI_STATUS EFIAPI XenBusDxeDriverBindingStop | ( | IN EFI_DRIVER_BINDING_PROTOCOL * | This, |
IN EFI_HANDLE | ControllerHandle, | ||
IN UINTN | NumberOfChildren, | ||
IN EFI_HANDLE *ChildHandleBuffer | OPTIONAL | ||
) |
Stops a bus controller.
The Stop() function is designed to be invoked from the EFI boot service DisconnectController(). As a result, much of the error checking on the parameters to Stop() has been moved into this common boot service. It is legal to call Stop() from other locations, but the following calling restrictions must be followed, or the system behavior will not be deterministic.
[in] | This | A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance. |
[in] | ControllerHandle | A handle to the device being stopped. The handle must support a bus specific I/O protocol for the driver to use to stop the device. |
[in] | NumberOfChildren | The number of child device handles in ChildHandleBuffer. |
[in] | ChildHandleBuffer | An array of child handles to be freed. May be NULL if NumberOfChildren is 0. |
EFI_SUCCESS | The device was stopped. |
EFI_DEVICE_ERROR | The device could not be stopped due to a device error. |
Definition at line 441 of file XenBusDxe.c.
EFI_STATUS EFIAPI XenBusDxeDriverBindingSupported | ( | IN EFI_DRIVER_BINDING_PROTOCOL * | This, |
IN EFI_HANDLE | ControllerHandle, | ||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | OPTIONAL | ||
) |
Tests to see if this driver supports a given controller. If a child device is provided, it further tests to see if this driver supports creating a handle for the specified child device.
[in] | This | A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance. |
[in] | ControllerHandle | The handle of the controller to test. This handle must support a protocol interface that supplies an I/O abstraction to the driver. |
[in] | RemainingDevicePath | A pointer to the remaining portion of a device path. This parameter is ignored by device drivers, and is optional for bus drivers. For bus drivers, if this parameter is not NULL, then the bus driver must determine if the bus controller specified by ControllerHandle and the child controller specified by RemainingDevicePath are both supported by this bus driver. |
EFI_SUCCESS | The device specified by ControllerHandle and RemainingDevicePath is supported by the driver specified by This. |
EFI_ALREADY_STARTED | The device specified by ControllerHandle and RemainingDevicePath is already being managed by the driver specified by This. |
EFI_ACCESS_DENIED | The device specified by ControllerHandle and RemainingDevicePath is already being managed by a different driver or an application that requires exclusive access. Currently not implemented. |
EFI_UNSUPPORTED | The device specified by ControllerHandle and RemainingDevicePath is not supported by the driver specified by This. |
Definition at line 225 of file XenBusDxe.c.
EFI_STATUS EFIAPI XenBusDxeDriverEntryPoint | ( | IN EFI_HANDLE | ImageHandle, |
IN EFI_SYSTEM_TABLE * | SystemTable | ||
) |
This is the declaration of an EFI image entry point. This entry point is the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including both device drivers and bus drivers.
ImageHandle | The firmware allocated handle for the UEFI image. |
SystemTable | A pointer to the EFI System Table. |
EFI_SUCCESS | The operation completed successfully. |
EFI_ABORTED | Xen hypercalls are not available. |
Others | An unexpected error occurred. |
Definition at line 168 of file XenBusDxe.c.
EFI_STATUS EFIAPI XenBusDxeUnload | ( | IN EFI_HANDLE | ImageHandle | ) |
Unloads an image.
ImageHandle | Handle that identifies the image to be unloaded. |
EFI_SUCCESS | The image has been unloaded. |
EFI_INVALID_PARAMETER | ImageHandle is not a valid image handle. |
Definition at line 98 of file XenBusDxe.c.
STATIC EFI_STATUS XenGetSharedInfoPage | ( | IN OUT XENBUS_DEVICE * | Dev | ) |
Map the shared_info_t page into memory.
Dev | A XENBUS_DEVICE instance. |
EFI_SUCCESS | Dev->SharedInfo whill contain a pointer to the shared info page |
EFI_LOAD_ERROR | The shared info page could not be mapped. The hypercall returned an error. |
Definition at line 59 of file XenBusDxe.c.
EFI_DRIVER_BINDING_PROTOCOL gXenBusDxeDriverBinding |
Driver Binding Protocol instance
Definition at line 35 of file XenBusDxe.c.
STATIC XENBUS_DEVICE* mMyDevice = NULL |
Definition at line 45 of file XenBusDxe.c.
STATIC EFI_LOCK mMyDeviceLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_CALLBACK) |
Definition at line 44 of file XenBusDxe.c.