beautypg.com

Device_io.allocatebuffer(), Allocatebuffer(), Inte – Intel Extensible Firmware Interface User Manual

Page 771

background image

Protocols — Device I/O Protocol

Version 1.10

12/01/02

18-11

DEVICE_IO.AllocateBuffer()

Summary

Allocates pages that are suitable for an

EFIBusMasterCommonBuffer

mapping.

Prototype

typedef

EFI_STATUS

(EFIAPI *EFI_IO_ALLOCATE_BUFFER) (

IN EFI_DEVICE_IO_INTERFACE

*This,

IN EFI_ALLOCATE_TYPE

Type,

IN EFI_MEMORY_TYPE

MemoryType,

IN UINTN

Pages,

IN OUT EFI_PHYSICAL_ADDRESS

*HostAddress

);

Parameters

This

A pointer to the

EFI_DEVICE_IO_INTERFACE

instance. Type

EFI_DEVICE_IO_INTERFACE

is defined in Section 18.2.

Type

The type allocation to perform. Type

EFI_ALLOCATE_TYPE

is

defined in Chapter 5.

MemoryType

The type of memory to allocate,

EfiBootServicesData

or

EfiRuntimeServicesData

. Type

EFI_MEMORY_TYPE

is defined

in Chapter 5.

Pages

The number of pages to allocate.

HostAddress

A pointer to store the base address of the allocated range. Type

EFI_PHYSICAL_ADDRESS

is defined in Chapter 5.

Description

The

AllocateBuffer()

function allocates pages that are suitable for an

EFIBusMasterCommonBuffer

mapping.

The

AllocateBuffer()

function internally calls

AllocatePages()

to allocate a memory

range that can be mapped as an

EFIBusMasterCommonBuffer

. When the buffer is no longer

needed, the driver frees the memory with a call to

FreeBuffer()

.

Allocation requests of

Type AllocateAnyPages

will allocate any available range of pages that

satisfies the request. On input the data pointed to by

HostAddress

is ignored.