smapi —
System
Management Application Program Interface driver
Many IBM Thinkpad laptops utilize a special software interface known as SMAPI
(System Management Application Program Interface). This interface controls
various aspects of the system including:
- System Interface (the BIOS can store system information
such as the system identifier),
- System Configuration (where devices such as the display
can be configured),
- Power Management (software can interact with the SMAPI
BIOS for Power Management control).
Client software must locate a “header image” stored in the
F000
segment in the Thinkpad ROM (read-only memory),
which resides at the 16-byte boundary. This is considered the “Entry
Point” for the service.
The “header image” stores information like:
- signature,
- SMAPI version (major and minor),
- header image length,
- checksum information (which verifies the image),
- an Information Word (used to identify the BIOS service
level),
- Real Mode Entry Point (where clients using the Real/V86
mode for the far-call value),
- and finally a 16-bit/32-bit Protected Mode Entry Point:
base code address which specifies the BIOS physical address. The client
must prepare a 64 kilobyte selector for this BIOS).
To invoke the SMAPI BIOS, a far-call must be used on the entry point specified
in the header file. All other information should be stored in the client data
area. The client is required to prepare both an input and output parameter in
a data area of its own. This area can be “informed” by pushing
those pointers into its stack before the far-calls.
The SMAPI BIOS uses the stack and data areas with the selector during a BIOS
invocation, thus the caller must define the same privilege area as the BIOS.
The parameter structure will be made up by using the input and output fields
prepared by the caller. The input field will specify the function request to
the BIOS. The BIOS will then drop a return value into the output field. These
fields are made up of three parts. The first holds parameters, function
numbers, and return codes. The next will contain an offset in hexadecimal.
Finally a length field which is comprised of Byte, Word, or Double Word.
IBM Thinkpad 560/560E Technical
Reference, 06J0536 S76H-7587-01.
IBM Thinkpad 560Z Technical
Reference, xxxxxxx xxxx-xxxx-xx.
IBM Thinkpad 600 Technical
Reference, xxxxxxx xxxx-xxxx-xx.
IBM Thinkpad 760XD/760XL/765D/765L
Technical Reference, 06J0537 S30H-2433-02.
IBM Thinkpad 770 Technical
Reference, 05L1739 S05L-1739-00.
The
smapi driver was written by
Matthew N. Dodd
<
[email protected]>.
This manual page was written by
Tom Rhodes
<
[email protected]>
and
Matthew N. Dodd
<
[email protected]>.