Method, apparatus, and computer-readable medium for generating a dispatching function
AssigneeAmerican Megatrends, Inc.
InventorFeliks Polyudov
Life of this patent
Estimating the term…
Abstract
The routines to be called by the dispatching function are identified based on the contents of description files associated with the child modules containing the routines to be called. Once the routines to be called by the dispatching function have been identified, an initialization source file is generated that includes source program code for calling each of the identified routines. Once the initialization source file has been generated, the parent program module is built by compiling the individual routines to generate object code and then linking the compiled files to generate the parent program module. The resulting executable parent program module includes the proper calls to execute the identified routines.
Claims14
A computer-implemented method for generating a dispatching function in an executable parent program module, the method comprising computer-implemented operations for:
- generating, through a computer comprising a processor and a memory coupled to the processor, a first description file, a second description file, and a third description file, the first description file comprising a first routine identifier identifying a first initialization routine to be called by a first dispatching function and a first parent program module identifier identifying an executable first parent program module, the executable first parent program module comprising the first dispatching function, the second description file comprising a second routine identifier identifying a second initialization routine to be called by the first dispatching function after calling the first initialization routine and a second parent program module identifier identifying the executable first parent program module, the third description file comprising a third routine identifier identifying a third initialization routine to be called by a second dispatching function and a third parent program module identifier identifying an executable second parent program module, the executable second parent program module comprising the second dispatching function, the executable first parent program module comprising a firmware, the first initialization routine and the second initialization routine comprising routines for customizing operation of the firmware;
- determining, through the computer, whether the first parent program module identifier matches the executable first parent program module;
- in response to determining that the first parent program module identifier matches the executable first parent program module, adding, through the computer, a first call to the first initialization routine to the first dispatching function;
- determining, through the computer, whether the second parent program module identifier matches the executable first parent program module;
- in response to determining that the second parent program module identifier matches the executable first parent program module, adding, through the computer, a second call to the second initialization routine to the first dispatching function;
- determining, through the computer, whether the third parent program module identifier matches the executable first parent program module;
- in response to determining that the third parent program module identifier does not match the executable first parent program module, omitting, through the computer, a third call to the third initialization routine from the first dispatching function;
- building, through the computer, a list of routine identifiers containing the first routine identifier from the first description file and the second routine identifier from the second description file, the first routine identifier identifying the first initialization routine to be called by the first dispatching function and the second routine identifier identifying the second initialization to be called by the first dispatching function;
- executing, through the computer, a makefile macro to generate an initialization source file comprising program code configured to call the first initialization routine and the second initialization corresponding to the first routine identifier and the second routine identifier in the list of routine identifiers;
- compiling, through the computer, the initialization source file;
- compiling, through the computer, program code for the executable first parent program module;
- and
- linking, through the computer, the compiled initialization source file and the compiled program code for the executable first parent program module to generate the executable first parent program module containing the first dispatching function configured to call the first initialization routine and the second initialization corresponding to the first routine identifier and the second routine identifier in the list of routine identifiers.
A computer-implemented method for generating a dispatching function in an executable parent program module, the method comprising computer-implemented operations for:
- generating, through a computer comprising a processor and a memory coupled to the processor, a first description file, a second description file, and a third description file, the first description file comprising a first routine identifier identifying a first initialization routine to be called by a first dispatching function and a first parent program module identifier identifying an executable first parent program module, the executable first parent program module comprising the first dispatching function, the second description file comprising a second routine identifier identifying a second initialization routine to be called by the first dispatching function after calling the first initialization routine and a second parent program module identifier identifying the executable first parent program module, the third description file comprising a third routine identifier identifying a third initialization routine to be called by a second dispatching function and a third parent program module identifier identifying an executable second parent program module, the executable second parent program module comprising the second dispatching function, the executable first parent program module comprising a firmware, the first initialization routine and the second initialization routine comprising routines for customizing operation of the firmware;
- determining, through the computer, whether the first parent program module identifier matches the executable first parent program module;
- in response to determining that the first parent program module identifier matches the executable first parent program module, adding, through the computer, a first call to the first initialization routine to the first dispatching function;
- determining, through the computer, whether the second parent program module identifier matches the executable first parent program module;
- in response to determining that the second parent program module identifier matches the executable first parent program module, adding, through the computer, a second call to the second initialization routine to the first dispatching function;
- determining, through the computer, whether the third parent program module identifier matches the executable first parent program module;
- in response to determining that the third parent program module identifier does not match the executable first parent program module, omitting, through the computer, a third call to the third initialization routine from the first dispatching function;
- building, through the computer, a list of routine identifiers containing the first routine identifier from the first description file and the second routine identifier from the second description file, the first routine identifier identifying the first initialization routine to be called by the first dispatching function and the second routine identifier identifying the second initialization to be called by the first dispatching function;
- generating, through the computer, a makefile macro configured to produce an initialization source file comprising source code for calling the first initialization routine and the second initialization corresponding to the first routine identifier and the second routine identifier in the list of routine identifiers in a specified order where the second initialization routine is executed after the first initialization routine;
- executing, through the computer, the makefile macro to produce the initialization source file;
- compiling, through the computer, the initialization source file;
- compiling, through the computer, program code for the executable first parent program module;
- and
- linking, through the computer, the compiled initialization source file and the compiled program code for the executable first parent module to generate the executable first parent program module containing the first dispatching function configured to call the first initialization routine and the second initialization corresponding to the first routine identifier and the second routine identifier in the list of routine identifiers in the specified order.
A computer system for generating a dispatching function in
- an executable parent program module, the system comprising:
- a processor;
- a memory coupled to the processor;
- a first child program module comprising a first initialization routine to be called by a first dispatching function and configured to initialize a first child program module;
- a second child program module comprising a second initialization routine to be called by the first dispatching function and configured to initialize a second child program module;
- a third child program module comprising a third initialization routine to be called by a second dispatching function and configured to initialize a third child program module;
- a first description file comprising a first routine identifier identifying the first initialization routine to be called by the first dispatching function and a first parent program module identifier identifying an executable first parent program module, the executable first parent program module comprising the first dispatching function, the executable first parent program module including a computer basic input and output system (BIOS) firmware program, the first child program module and the second child program module configured to customize operation of the computer BIOS firmware program;
- a second description file comprising a second routine identifier identifying the second initialization routine to be called by the first dispatching function after calling the first initialization routine and a second parent program module identifier identifying the executable first parent program module;
- a third description file comprising a third routine identifier identifying the third initialization routine to be called by the second dispatching function and a third parent program module identifier identifying an executable second parent program module, the executable second parent program module comprising the second dispatching function, the executable second parent program module comprising an Extensible Firmware Interface (EFI) firmware program, third child program module configured to customize operation of the EFI firmware program;
- a parent module source code comprising source code for the executable first parent program module;
- and
- a visual development environment (i) which executes in the processor from the memory and (ii) which, when executed by the processor, causes the computer system to generate the dispatching function in the executable parent program module by
- determining whether the first parent program module identifier matches the executable first parent program module,
- in response to determining that the first parent program module identifier matches the executable first parent program module, adding a first call to the first initialization routine to the first dispatching function,
- determining whether the second parent program module identifier matches the executable first parent program module,
- in response to determining that the second parent program module identifier matches the executable first parent program module, adding a second call to the second initialization routine to the first dispatching function,
- determining whether the third parent program module identifier matches the executable first parent program module,
- in response to determining that the third parent program module identifier does not match the executable first parent program module, omitting a third call to the third initialization routine from the first dispatching function,
- building a list of routine identifiers containing first routine identifier from the first description file and the second routine identifier from the second description file, the first routine identifier identifying the first initialization routine to be called by the first dispatching function and the second routine identifier identifying the second initialization to be called by the first dispatching function,
- generating a makefile macro, the makefile macro configured to be executed to generate an initialization source file comprising program code configured to call the first initialization routine and the second initialization corresponding to the first routine identifier and the second routine identifier in the list of routine identifiers in a specified order where the second initialization routine is executed after the first initialization routine,
- executing the makefile macro to produce the initialization source file,
- compiling the initialization source file,
- compiling the parent module source code, and
- linking the compiled initialization source file and the compiled parent module source code for the executable first parent module to generate the first dispatching function configured to call the first initialization routine and the second initialization corresponding to the first routine identifier and the second routine identifier in the list of routine identifiers in the specified order.
Dependencies are inferred from the claim text.