/** @file Private definitions of the VirtioRng RNG driver Copyright (C) 2016, Linaro Ltd. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _VIRTIO_RNG_DXE_H_ #define _VIRTIO_RNG_DXE_H_ #include #include #include #include #define VIRTIO_RNG_SIG SIGNATURE_32 ('V', 'R', 'N', 'G') typedef struct { // // Parts of this structure are initialized / torn down in various functions // at various call depths. The table to the right should make it easier to // track them. // // field init function init depth // ---------------- ------------------ ---------- UINT32 Signature; // DriverBindingStart 0 VIRTIO_DEVICE_PROTOCOL *VirtIo; // DriverBindingStart 0 EFI_EVENT ExitBoot; // DriverBindingStart 0 VRING Ring; // VirtioRingInit 2 EFI_RNG_PROTOCOL Rng; // VirtioRngInit 1 VOID *RingMap; // VirtioRingMap 2 BOOLEAN Ready; } VIRTIO_RNG_DEV; #define VIRTIO_ENTROPY_SOURCE_FROM_RNG(RngPointer) \ CR (RngPointer, VIRTIO_RNG_DEV, Rng, VIRTIO_RNG_SIG) #endif