Example #1
0
int main( int argc, char *argv[] )
{
    unsigned short fp;
    
    for( fp = 0; fp < 0xFFF0; fp += 16 ) 
    {
        u8 *cur  = ((u8 far *)0xf0000000) + fp;
        if( memcmp( cur, "_SM_", 4 ) == 0 ) 
        {        
            printf( "SMBIOS %d.%d rev %d present at 0x%04X.\n", 
                cur[6], cur[7], cur[10], fp );
            printf( "Max structure size of 0x%04X bytes.\n", get_LSBF16( cur + 8 ));
        }
    }

    for( fp = 0; fp < 0xFFF0; fp += 16 ) 
    {
        u8 *cur  = ((u8 far *)0xf0000000) + fp;
        if(memcmp( cur, "_DMI_", 5 ) == 0 ) 
        {
            u16 num  = get_LSBF16( cur + 12 );
            u16 len  = get_LSBF16( cur + 6 );
            u32 base = get_LSBF32( cur + 8 );

            printf( "\nDMI %d.%d present at 0x%04X.\n", 
                cur[14] >> 4, cur[14] & 0x0F, fp );
            printf( "%d structures occupying %d bytes.\n", num, len );
            printf( "DMI table at 0x%08lX.\n", base );
            dmi_table( base, len, num );
        }
    }
Example #2
0
static int __init dmi_walk_early(void (*decode)(const struct dmi_header *,
		void *))
{
	u8 *buf;

	buf = dmi_ioremap(dmi_base, dmi_len);
	if (buf == NULL)
		return -1;

	dmi_table(buf, dmi_len, dmi_num, decode, NULL);

	add_device_randomness(buf, dmi_len);

	dmi_iounmap(buf, dmi_len);
	return 0;
}