MdePkg[all]  1.08
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
s_pxe_cpb_start_31 Struct Reference

Data Fields

UINT64 Delay
 
UINT64 Block
 
UINT64 Virt2Phys
 
UINT64 Mem_IO
 
UINT64 Map_Mem
 
UINT64 UnMap_Mem
 
UINT64 Sync_Mem
 
UINT64 Unique_ID
 

Field Documentation

UINT64 s_pxe_cpb_start_31::Block

PXE_VOID Block(UINT64 unq_id, UINT32 enable);

UNDI may need to block multi-threaded/multi-processor access to critical code sections when programming or accessing the network device. To this end, a blocking service is needed by the UNDI. When UNDI needs a block, it will call Block() passing a non-zero value. When UNDI no longer needs a block, it will call Block() with a zero value. When called, if the Block() is already enabled, do not return control to the UNDI until the previous Block() is disabled.

This field cannot be set to zero.

UINT64 s_pxe_cpb_start_31::Delay

PXE_VOID Delay(UINT64 UnqId, UINTN microseconds);

UNDI will never request a delay smaller than 10 microseconds and will always request delays in increments of 10 microseconds. The Delay() CallBack routine must delay between n and n + 10 microseconds before returning control to the UNDI.

This field cannot be set to zero.

UINT64 s_pxe_cpb_start_31::Map_Mem

PXE_VOID Map_Mem(UINT64 unq_id, UINT64 virtual_addr, UINT32 size, UINT32 Direction, UINT64 mapped_addr);

UNDI will pass the virtual address of a buffer, direction of the data flow from/to the mapped buffer (the constants are defined below) and a place holder (pointer) for the mapped address. This call will Map the given address to a physical DMA address and write the result to the mapped_addr pointer. If there is no need to map the given address to a lower address (i.e. the given address is associated with a physical address that is already compatible to be used with the DMA, it converts the given virtual address to it's physical address and write that in the mapped address pointer.

This field can be set to zero if there is no mapping service available.

UINT64 s_pxe_cpb_start_31::Mem_IO

PXE_VOID Mem_IO(UINT64 UnqId, UINT8 read_write, UINT8 len, UINT64 port, UINT64 buf_addr);

UNDI will read or write the device io space using this call back function. It passes the number of bytes as the len parameter and it will be either 1,2,4 or 8.

This field can not be set to zero.

UINT64 s_pxe_cpb_start_31::Sync_Mem

PXE_VOID Sync_Mem(UINT64 unq_id, UINT64 virtual, UINT32 size, UINT32 Direction, UINT64 mapped_addr);

UNDI will pass the virtual and mapped addresses of a buffer. This call will synchronize the contents of both the virtual and mapped. buffers for the given Direction.

This field can be set to zero if there is no service available.

UINT64 s_pxe_cpb_start_31::Unique_ID

protocol driver can provide anything for this Unique_ID, UNDI remembers that as just a 64bit value associated to the interface specified by the ifnum and gives it back as a parameter to all the call-back routines when calling for that interface!

UINT64 s_pxe_cpb_start_31::UnMap_Mem

PXE_VOID UnMap_Mem(UINT64 unq_id, UINT64 virtual_addr, UINT32 size, UINT32 Direction, UINT64 mapped_addr);

UNDI will pass the virtual and mapped addresses of a buffer. This call will un map the given address.

This field can be set to zero if there is no unmapping service available.

UINT64 s_pxe_cpb_start_31::Virt2Phys

PXE_VOID Virt2Phys(UINT64 UnqId, UINT64 virtual, UINT64 physical_ptr);

UNDI will pass the virtual address of a buffer and the virtual address of a 64-bit physical buffer. Convert the virtual address to a physical address and write the result to the physical address buffer. If virtual and physical addresses are the same, just copy the virtual address to the physical address buffer.

This field can be set to zero if virtual and physical addresses are equal.