cvs commit: src/sys/i386/include/pc bios.h src/sys/i386/i386 bios.c

Nate Lawson nate at root.org
Thu Jun 3 23:06:50 GMT 2004


On Thu, 3 Jun 2004, Poul-Henning Kamp wrote:
> phk         2004/06/03 15:36:24 PDT
>
>   FreeBSD src repository
>
>   Modified files:
>     sys/i386/include/pc  bios.h
>     sys/i386/i386        bios.c
>   Log:
>   Add new bios_string() which will hunt for a string inside a given range
>   of the BIOS.  This can be used for finding arbitrary magic in the BIOS
>   in order to recognize particular platforms.
>
>   Revision  Changes    Path
>   1.66      +15 -0     src/sys/i386/i386/bios.c
>   1.15      +8 -0      src/sys/i386/include/pc/bios.h
>
> --- src/sys/i386/i386/bios.c:1.65	Sun May 30 10:57:42 2004
> +++ src/sys/i386/i386/bios.c	Thu Jun  3 15:36:24 2004
> @@ -472,6 +472,21 @@
>  	free(pte, M_TEMP);		/* ... and free it */
>      }
>      return (i);
> +}
> +
> +const u_char *
> +bios_string(u_int from, u_int to, const u_char *string, int len)
> +{
> +	const char *t, *te;
> +
> +	if (len == 0)
> +		len = strlen(string);
> +	t = (const char *)(KERNBASE + from);
> +	te = (const char *)(KERNBASE + to);
> +	for (; t <= te; t++)
> +		if (!memcmp(string, t, len))
> +			return (t);
> +	return (NULL);
>  }

Many BIOS strings have alignment requirements.  That might be useful to
add.  Is all of BIOS mapped into kernel memory or should this operate on
physical addresses instead?

-Nate



More information about the cvs-src mailing list