Patent ID: 7558804
Filing Date: 2009-07-07
Classification: G06F,Y10S

Abstract:
1. A method for storing a variable in a non-volatile memory of a computing system executing an extensible firmware interface (EFI) firmware, the method comprising performing computer-implemented operations for: receiving a request to store a variable in the non-volatile memory; in response to the request, determining whether a record exists in the non-volatile memory for the variable; in response to determining that a record does not exist in the non-volatile memory for the variable, creating a new full record for the variable in the non-volatile memory, the full record comprising a header and record information, wherein the header comprises a data field initialized to an erase polarity value of the non-volatile memory for storing a byte offset to a next variable record, a data field for storing a unique signature, a data field for storing data identifying the size of the new full record or a data only record, and a data field for storing one or more flags for the variable comprising a data field for storing data indicating whether a record comprises a full record or a data only record, a data field for storing data indicating whether the variable identified by a record is valid or has been deleted, a data field for storing data indicating a life span of the variable, a data field for storing data indicating whether a name for the variable is expressed using ASCII or UNICODE data, and a data field for storing data identifying a GUID for the variable identified by a record, and wherein the record information comprises a data field for storing either a GUID or an index to a second data field containing the GUID, a data field for storing a name for the variable, and a data field for storing a value for the variable, wherein creating a new full record further comprises determining whether a GUID for the variable has previously been stored, in response to determining that the GUID for the variable has previously been stored, populating the data field for storing data identifying a GUID with an index to the previously stored GUID, in response to determining that the GUID for the variable has not been previously stored, determining whether space exists within a non-volatile memory area for storing the GUID, in response to determining that space does exist within the non-volatile memory area for storing the GUID, storing the GUID at the end of the non-volatile memory area and populating the data field for storing data identifying a GUID with an index to the stored GUID, and in response to determining that space does not exist within the non-volatile memory area for storing the GUID, storing the GUID in the new record and setting a flag in the record indicating that the GUID is stored in the record; and in response to determining that a record does exist in the non-volatile memory for the variable, creating a new data only record in the non-volatile memory comprising a header and record information including a data field for storing a value for the variable and modifying the data field in the full record for storing the byte offset to an offset of the new data only record.