Method, apparatus, and computer program product for establishing communications between an adapter card and a host processor running in a bios supported environment
First Claim
1. An adapter card for use in a host computer system having a processor and a memory, the host computer system having a binary input/output system (BIOS) that supports the loading of BIOS extensions into the host memory for execution by the host processor, the adapter card comprising:
- a processor, and at least one computer-readable medium having stored therein;
(a) a client program that is executed by the processor of the adapter card; and
(b) a BIOS extension comprising first program code and second program cod embedded within the computer readable medium, said second program code defining a separate server program, the BIOS extension being loaded into the host memory during execution of the host computer system BIOS, the first program code of the BIOS extension, when executed by the host processor, and prior to an operating system exercising control over the host processor'"'"'s system, performing the following steps;
(i) copying the second program code defining the server program to a new location outside a BIOS expansion memory area in the host memory; and
(ii) hooking the new location of the server program to an interrupt of the host computer system to cause the host processor to initiate execution of the server program on the host computer system upon a subsequent occurrence of that interrupt the server program when executed on the host processor, establishing communications with the client program on the adapter card wherein the copying step performed by the first program code of the BIOS extension comprises;
(i) determining the size of the second program code by obtaining a constant, K, said K having been embedded at a predetermined location within the first program code at compile time;
(ii) decrementing, by an amount greater than or equal to K, a value stored in host memory at address word location 40;
13h, said location having a value that provides an indicator of the top of available host memory, thereby allocating that portion of host memory from top of host memory to an address equal to said amount greater than or equal to K below top of host memory; and
(iii) copying the second program code to the allocated portion of host memory.
12 Assignments
0 Petitions
Accused Products
Abstract
Communications between an adapter card and a host computer system are established by embedding a server program within a BIOS extension stored in a memory on the adapter card. The BIOS extension is loaded into the host memory during normal execution of the host system BIOS for execution by the host processor. When executed by the host processor, the BIOS extension code copies the server program embedded within it to a new location in host memory, and then hooks the new location of the server program to a pre-selected interrupt of the host computer system to cause the host processor to initiate execution of the server program on the host computer system upon a subsequent occurrence of that interrupt. When executed on the host computer, the server program then establishes two-way communications with a client program executing on the adapter card.
25 Citations
21 Claims
-
1. An adapter card for use in a host computer system having a processor and a memory, the host computer system having a binary input/output system (BIOS) that supports the loading of BIOS extensions into the host memory for execution by the host processor, the adapter card comprising:
-
a processor, and at least one computer-readable medium having stored therein;
(a) a client program that is executed by the processor of the adapter card; and
(b) a BIOS extension comprising first program code and second program cod embedded within the computer readable medium, said second program code defining a separate server program, the BIOS extension being loaded into the host memory during execution of the host computer system BIOS, the first program code of the BIOS extension, when executed by the host processor, and prior to an operating system exercising control over the host processor'"'"'s system, performing the following steps;
(i) copying the second program code defining the server program to a new location outside a BIOS expansion memory area in the host memory; and
(ii) hooking the new location of the server program to an interrupt of the host computer system to cause the host processor to initiate execution of the server program on the host computer system upon a subsequent occurrence of that interrupt the server program when executed on the host processor, establishing communications with the client program on the adapter card wherein the copying step performed by the first program code of the BIOS extension comprises;
(i) determining the size of the second program code by obtaining a constant, K, said K having been embedded at a predetermined location within the first program code at compile time;
(ii) decrementing, by an amount greater than or equal to K, a value stored in host memory at address word location 40;
13h, said location having a value that provides an indicator of the top of available host memory, thereby allocating that portion of host memory from top of host memory to an address equal to said amount greater than or equal to K below top of host memory; and
(iii) copying the second program code to the allocated portion of host memory. - View Dependent Claims (2, 3, 4, 5, 6, 7)
(a) allocates a portion of the host memory to serve as a communications buffer, and (b) stores a unique signature in the allocated communications buffer at a predetermined location therein.
-
-
4. The adapter card recited in claim 3, wherein said allocation step comprises decrementing a value stored in host memory that provides an indicator of the top of available host memory.
-
5. The adapter card recited in claim 3, wherein the client program, when executed on said processor of the adapter card, performs the following steps:
-
(a) locates the communications buffer using the indicator of the top of available host memory; and
(b) determines whether the unique signature has been stored at said predetermined location therein to verify that the communications buffer has been created by the server program.
-
-
6. The adapter card recited in claim 1, wherein the server program comprises a first part and a second part, the first part of the server program performing the following steps when executed on the host processor:
-
(a) allocates a portion of the host memory to serve as a communications buffer;
(b) stores a unique signature in the allocated communications buffer at a predetermined location therein;
(c) saves the original interrupt vector for the host computer system clock interrupt to a predefined location in the host memory; and
(d) hooks the start of the code of the second part of the server program to the host computer system clock interrupt, the second part of the server program performing the following steps upon each occurrence of the host computer system clock interrupt;
(e) call the original interrupt vector for the host computer system clock interrupt saved in step (c); and
(f) check the communications buffer for any communication from the client program.
-
-
7. An adapter card as set forth in claim 1 wherein said server program is copied to a top of host memory location.
-
8. A method for communicating between a processor on an adapter card and a processor of host computer system to which the adapter card is connected, the host computer system having a binary input/output system (BIOS) that supports the loading of BIOS extensions from an adapter card into a memory of the host computer system for execution by the host processor, said method comprising:
-
a) executing a client program on the processor of the adapter card;
b) causing a BIOS extension stored in a computer-readable medium on the adapter card to be loaded into the memory of the host computer system during execution of the host computer system BIOS, the BIOS extension comprising first program code and second program code, the second program code defining a separate server program, the first code of the BIOS extension, when executed by the host processor, and prior to an operating system exercising control over the host processor'"'"'s system, performing the following steps;
(i) copying the second program code defining the server program to a new location in the host memory outside of a host memory BIOS expansion area; and
(ii) hooking the new location of the server program to an interrupt of the host computer system to cause the host processor to initiate execution of the server program on the host computer system upon a subsequent occurrence of that interrupt, the server program, when executed by the host processor, establishing communication with the client program executing on the adapter card; and
(c) utilizing the client program to communicate information to, and to receive information from, the server program on the host computer system wherein the copying step performed by the first program code of the BIOS extension comprises;
(i) determining the size of the second program code by obtaining a consat, K, said K having been embedded at a predetermined location within the first program code at compile time;
(ii) decrementing, by an amount greater than or equal to K, a value stored in host memory at address word location 40.13h, said location containing a value that provides an indicator of the top of available host memory, thereby allocating that portion of host memory from top of host memory to an address equal to said amount greater than or equal to K below top of host memory; and
(iii) copying the second program code to the allocated portion of host memory. - View Dependent Claims (9, 10, 11, 12, 13, 14)
(a) allocates a portion of the host memory to serve as a communications buffer; and
(b) stores a unique signature in the allocated communications buffer at a predetermined location therein.
-
-
11. The method recited in claim 10, wherein said allocation step comprises decrementing a value stored in host memory that provides an indicator of the top of available host memory.
-
12. The method recited in claim 10, wherein the client program, when executed on the adapter card, performs the following steps:
-
(a) locates the communications buffer using the indicator of the top of available host memory; and
(b) determines whether the unique signature has been stored at said predetermined location therein to verify that the communications buffer has been created by the server program.
-
-
13. The method recited in claim 8 wherein the server program comprises a first part and a second part, the first part of the server program performing the following steps when executed on the host processor:
-
(a) allocates a portion of the host memory to serve as a communications buffer;
(b) stores a unique signature in the allocated communications buffer at a predetermined location therein;
(c) saves the original interrupt vector for the host computer system clock interrupt to a predefined location in the host memory; and
(d) hooks the start of the code of the second part of the server program to the host computer system clock interrupt, the second part of the server program performing the following steps upon each occurrence of the host computer system clock interrupt;
(e) call the original interrupt vector for the host computer system clock interrupt saved in step (c); and
(f) check the communications buffer for any communication from the client program.
-
-
14. A method as set forth in claim 8 wherein said outside of expansion BIOS memory area is at a top of host memory location.
-
15. A computer-readable medium having stored therein a binary input/output system (BIOS) extension for use on an adapter card that connects to a host computer system having a processor and a memory, the host computer system having a BIOS that supports the loading of said BIOS extension into the host memory for execution by the host processor, the BIOS extension comprising:
-
first program code and second program code, the second program code being embedded within said computer-readable medium and defining a separate server program, the BIOS extension being loaded into the host memory during execution of the host computer system BIOS and prior to an operating system exercising control over the host processor'"'"'s system, the first program code of he BIOS extension when executed by the host processor, performing the following steps;
(i) copying the second program code defining the server program to a new location in the host memory said new location, being outside of a BIOS expansion area; and
(ii) hooking the new location of the server program to an interrupt of the host computer system to cause the host processor to initiate execution of the server program on the host computer system upon a subsequent occurrence of that interrupt, the server program when executed by the host processor, establishing communication with a client program executing on a processor of adapter card. - View Dependent Claims (16, 17, 18, 19, 20, 21)
(a) allocates a portion of the host memory to serve as a communications buffer, and (b) stores a unique signature in the allocated communications buffer at a predetermined location therein.
-
-
18. The computer-readable medium recited in claim 17, wherein said allocation step comprises decrementing a value stored in host memory that provides an indicator of the top of available host memory.
-
19. The computer-readable medium recited in claim 17, wherein the client program, when executed on the adapter card, performs the following steps;
-
(a) locates the communications buffer using the indicator of the top of available host memory; and
(b) determines whether the unique signature has been stored at said predetermined location therein to verify that the communications buffer has been created by the server program.
-
-
20. The computer-readable medium recited in claim 15, wherein the server program comprises a first part and a second part, the first part of the server program performing the following steps when executed on the host processor:
-
(a) allocates a portion of the host memory to serve as a communications buffer, (b) stores a unique signature in the allocated communications buffer at a predetermined location therein;
(c) saves the original interrupt vector for the host computer system clock interrupt to a predefined location in the host memory; and
(d) hooks the start of the code of the second part of the server program to the host computer system clock interrupt, the second part of the server program performing the following steps upon each occurrence of the host computer system clock interrupt;
(e) call the original interrupt vector for the host computer system clock interrupt saved in step (c); and
(f) check the communications buffer for any communication from the client program.
-
-
21. A computer readable medium as set forth in claim 15 wherein said new location is a top of host memory location.
Specification