Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
BIOS(9)			 BSD Kernel Developer's	Manual		       BIOS(9)

     bios_sigsearch, bios32_SDlookup, bios32, bios_oem_strings -- interact
     with PC BIOS

     #include <sys/param.h>
     #include <vm/vm.h>
     #include <vm/pmap.h>
     #include <machine/pc/bios.h>

     bios_sigsearch(uint32_t start, u_char *sig, int siglen, int paralen,
	 int sigofs);

     bios32_SDlookup(struct bios32_SDentry *ent);

     bios32(struct bios_regs *br, u_int	offset,	u_short	segment);



     extern struct bios32_SDentry PCIbios;
     extern struct SMBIOS_table	SMBIOStable;
     extern struct DMI_table DMItable;

     bios_oem_strings(struct bios_oem *oem, u_char *buffer, size_t maxlen);

     struct bios_oem_signature {
	     char * anchor;	     /*	search anchor string in	BIOS memory */
	     size_t offset;	     /*	offset from anchor (may	be negative) */
	     size_t totlen;	     /*	total length of	BIOS string to copy */
     struct bios_oem_range {
	     u_int from;	     /*	shouldn't be below 0xe0000 */
	     u_int to;		     /*	shouldn't be above 0xfffff */
     struct bios_oem {
	     struct bios_oem_range range;
	     struct bios_oem_signature signature[];

     These functions provide a general-purpose interface for dealing with the
     BIOS functions and	data encountered on x86	PC-architecture	systems.

     bios_sigsearch()	   Searches the	BIOS address space for a service sig-
			   nature, usually an uppercase	ASCII sequence sur-
			   rounded by underscores.  The	search begins at
			   start, or at	the beginning of the BIOS if start is
			   zero.  siglen bytes of the BIOS image and sig are
			   compared at sigofs bytes offset from	the current
			   location.  If no match is found, the	current	loca-
			   tion	is incremented by paralen bytes	and the	search
			   repeated.  If the signature is found, its effective
			   physical address is returned.  If no	signature is
			   found, zero is returned.

     bios_oem_strings()	   Searches a given BIOS memory	range for one or more
			   strings, and	composes a printable concatenation of
			   those found.	 The routine expects a structure de-
			   scribing the	BIOS address range (within 0xe0000 -
			   0xfffff), and a { NULL, 0, 0	} -terminated array of
			   bios_oem_signature structures which define the
			   anchor string, an offset from the beginning of the
			   match (which	may be negative), and totlen number of
			   bytes to be collected from BIOS memory starting at
			   that	offset.	 Unmatched anchors are ignored,
			   whereas matches are copied from BIOS	memory start-
			   ing at their	corresponding offset with unprintable
			   characters being replaced with space, and consecu-
			   tive	spaces being suppressed.  This composed	string
			   is stored in	buffer up to the given maxlen bytes
			   (including trailing `\0', and any trailing space
			   suppressed).	 If an error is	encountered, i.e. try-
			   ing to read out of said BIOS	range, other invalid
			   input, or buffer overflow, a	negative integer is
			   returned, otherwise the length of the composed
			   string is returned.	In particular, a return	value
			   of 0	means that none	of the given anchor strings
			   were	found in the specified BIOS memory range.

     BIOS_VADDRTOPADDR()   Returns the effective physical address which	corre-
			   sponds to the kernel	virtual	address	addr.

     BIOS_PADDRTOVADDR()   Returns the kernel virtual address which corre-
			   sponds to the effective physical address addr.

     SMBIOStable	   If not NULL,	points to a struct SMBIOS_table	struc-
			   ture	containing information read from the System
			   Management BIOS table during	system startup.

     DMItable		   If not NULL,	points to a struct DMI_table structure
			   containing information read from the	Desktop	Man-
			   agement Interface parameter table during system

     At	system startup,	the BIOS is scanned for	the BIOS32 Service Directory
     (part of the PCI specification), and the existence	of the directory is
     recorded.	This can then be used to locate	other services.

     bios32_SDlookup()	   Attempts to locate the BIOS32 service matching the
			   4-byte identifier passed in the ident field of the
			   ent argument.

     bios32()		   Calls a bios32 function.  This presumes that	the
			   function is capable of working within the kernel
			   segment (normally the case).	 The virtual address
			   of the entrypoint is	supplied in entry and the reg-
			   ister arguments to the function are supplied	in

     PCIbios		   If not NULL,	points to a struct bios32_SDentry
			   structure describing	the PCI	BIOS entrypoint	which
			   was found during system startup.

BSD				August 9, 2005				   BSD


Want to link to this manual page? Use this URL:

home | help