EasyManua.ls Logo

Intel Extensible Firmware Interface - Page 439

Intel Extensible Firmware Interface
494 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
32/64-bit UNDI Specification
Version 1.02 12/12/00 421
Preparing the CPB
The CPB for the S/W UNDI Start command (shown below) must be filled in and the size and
address of the CPB must be given in the CDB.
#pragma pack(1)
typedef struct s_pxe_cpb_start {
// PXE_VOID Delay(PXE_UINT64 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.
PXE_UINT64 Delay;
// PXE_VOID Block(PXE_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.
PXE_UINT64 Block;
// PXE_VOID Virt2Phys(PXE_UINT64 virtual, PXE_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.

Table of Contents

Related product manuals