IP Library Granted Patent US 8,468,332
Granted Patent B2
US 8,468,332 · App. 12/566,624 · Granted Jun 18, 2013

Dynamic link loading in extensible firmware interface compliant systems

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,468,332
App. No.
12/566,624
Granted
Jun 18, 2013
Kind
B2
Abstract

Methods, apparatuses and program products are disclosed for dynamic link loading in extensible firmware interface compliant systems. Provision is made for loading a microkernel (or other kernel program) which presents itself as though it were a DXE Driver and hooks and redirects a loadmodule service of a DXE Foundation core program to a DLL aware loader. Further aspects of the invention provide related, analogous and similar capabilities.

Claims (65)

1. A method for loading and initializing a computer comprising:

locating a first DLL (dynamic link library) import entry in a copy of a first DXE (Driver execution environment) driver;

executing a first loader program to load the first DXE driver;

fixing up the first DLL import entry;

determining that no DLL import entry is present in a copy of a second DXE driver; and

loading the second DXE driver with a second loader program.

2. The method of claim 1 wherein:

a reference to the second loader program is a provided service of an EFI (extensible firmware interface) core program; and

further comprising hooking the reference to the second loader program.

3. The method of claim 1 further comprising:

executing an EFI (extensible firmware interface) core program to load a kernel program wherein the kernel program loads the first loader program.

4. The method of claim 3 further comprising:

loading the EFI core program from a UEFI (unified extensible firmware interface) ROM (read-only memory) module.

5. The method of claim 3 wherein:

the kernel program hooks an instruction sequence in the EFI core program, the instruction sequence being for invoking the second loader program.

6. The method of claim 5 wherein:

the kernel program is a microkernel.

7. A method for loading and initializing a computer comprising:

executing a foundation program to load a kernel program into a memory;

executing the kernel program to redirect an instruction sequence flow within the foundation program towards a loader program service of the kernel program;

executing the loader program of the kernel program to load a first DXE (Driver execution environment) driver having a first import table; and

fixing up an entry in the first import table to an exported service of the kernel program.

8. The method of claim 7 wherein:

the foundation program is an EFI (extensible firmware interface) core program.

9. The method of claim 8 wherein:

the instruction sequence flow within the foundation program comprises a reference to the loader program service of the EFI core program.

10. The method of claim 7 further comprising:

executing the loader program service of the kernel program to load a second DXE driver having a second import table; and

fixing up an entry in the second import table to an export table entry in the first DXE driver.

11. The method of claim 7 wherein:

the kernel program is a microkernel.

12. The method of claim 7 further comprising:

loading the foundation program from a UEFI (unified extensible firmware interface) ROM (read-only memory) module.

13. A non-transitory machine-readable storage medium comprising:

at least one tangible computer-readable medium having instructions persistently encoded therein, the instructions when executed by at least one processor causes the at least one processor to perform:

locating a first DLL (dynamic link library) import entry in a copy of a first DXE (Driver execution environment) driver;

executing a first loader program to load the first DXE driver;

fixing up the first DLL import entry;

determining that no DLL import entry is present in a copy of a second DXE driver; and

loading the second DXE driver with a second loader program.

14. A non-transitory machine-readable storage medium comprising:

at least one tangible computer-readable medium having instructions persistently encoded therein, the instructions when executed by at least one processor causes the at least one processor to perform:

executing a foundation program to load a kernel program into a memory;

executing the kernel program to redirect an instruction sequence flow within the foundation program towards a loader program service of the kernel program;

executing the loader program of the kernel program to load a first DXE (Driver execution environment) driver having a first import table; and

fixing up an entry in the first import table to an exported service of the kernel program.

15. An electronic device comprising:

a controller;

a ROM (read-only memory) module having an EFI core program from a UEFI (unified extensible firmware interface) encoded therein; and

a first system memory having instructions encoded therein, the instructions when executed by the controller cause said controller to

operate by steps to perform:

locating a first DLL (dynamic link library) import entry in a copy of a first DXE (Driver execution environment) driver;

executing a first loader program to load the first DXE driver;

fixing up the first DLL import entry;

determining that no DLL import entry is present in a copy of a second DXE driver; and

loading the second DXE driver with a second loader program.

16. An electronic device comprising:

a controller;

a ROM (read-only memory) module having an EFI core program from a UEFI (unified extensible firmware interface) encoded therein; and

a first system memory having instructions encoded therein, the instructions when executed by the controller cause said controller to

operate by steps to perform:

executing a foundation program to load a kernel program into a memory;

executing the kernel program to redirect an instruction sequence flow within the foundation program towards a loader program service of the kernel program;

executing the loader program of the kernel program to load a first DXE (Driver execution environment) driver having a first import table; and

fixing up an entry in the first import table to an exported service of the kernel program.

Assignments (6)
LIEN AND SECURITY INTEREST Recorded Jan 13, 2017
From: KINGLITE HOLDINGS INC.
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 041366/0255 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2012
From: PHOENIX TECHNOLOGIES LTD.
To: KINGLITE HOLDINGS INC.
Reel/Frame 029339/0716 →
RELEASE OF SECURITY INTEREST Recorded Nov 15, 2012
From: MEP PLP, LLC
To: PHOENIX TECHNOLOGIES LTD.
Reel/Frame 029307/0590 →
SECURITY AGREEMENT Recorded Nov 13, 2012
From: HIGHBRIDGE PRINCIPAL STRATEGIES, LLC
To: MEP PLP, LLC
Reel/Frame 029291/0354 →
GRANT OF SECURITY INTEREST - PATENTS Recorded Nov 24, 2010
From: PHOENIX TECHNOLOGIES LTD.
To: HIGHBRIDGE PRINCIPAL STRATEGIES, LLC, AS COLLATERAL AGENT
Reel/Frame 025406/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 24, 2009
From: JONES, STEPHEN E
To: PHOENIX TECHNOLOGIES LTD
Reel/Frame 023280/0992 →