亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dmidecode.c

?? 在Linux環境在終端打印出所有SMBIOS信息
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* * DMI Decode * *   (C) 2000-2002 Alan Cox <alan@redhat.com> *   (C) 2002-2003 Jean Delvare <khali@linux-fr> * *   This program is free software; you can redistribute it and/or modify *   it under the terms of the GNU General Public License as published by *   the Free Software Foundation; either version 2 of the License, or *   (at your option) any later version. * *   This program is distributed in the hope that it will be useful, *   but WITHOUT ANY WARRANTY; without even the implied warranty of *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *   GNU General Public License for more details. * *   You should have received a copy of the GNU General Public License *   along with this program; if not, write to the Free Software *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA * *   For the avoidance of doubt the "preferred form" of this code is one which *   is in an open unpatent encumbered format. Where cryptographic key signing *   forms part of the process of creating an executable the information  *   including keys needed to generate an equivalently functional executable *   are deemed to be part of the source code. * * Unless specified otherwise, all references are aimed at the "System * Management BIOS Reference Specification, Version 2.3.4" document, * available from http://www.dmtf.org/standards/bios.php. * * Note to contributors: * Please reference every value you add or modify, especially if the * information does not come from the above mentioned specification. * * Additional references: *	- Intel AP-485 revision 23 *    "Intel Processor Identification and the CPUID Instruction" *    http://developer.intel.com/design/xeon/applnots/241618.htm *  - DMTF Master MIF version 021205 *    "DMTF approved standard groups" *    http://www.dmtf.org/standards/standard_dmi.php *  - IPMI 1.5 revision 1.1 *    "Intelligent Platform Management Interface Specification" *    http://developer.intel.com/design/servers/ipmi/spec.htm */#include <sys/types.h>#include <sys/stat.h>#ifdef USE_MMAP#include <sys/mman.h>#endif /* USE MMAP */#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <string.h>#include <stdlib.h>#include "version.h"#include "types.h"#include "util.h"static const char *out_of_spec = "<OUT OF SPEC>";static const char *bad_index = "<BAD INDEX>";/* * The specification isn't very clear on endianness problems, so we better * have macros for these. It also helps us solve problems on systems that * don't support non-aligned memory access. This isn't a big issue IMHO, * since SMBIOS/DMI is intended mainly for Intel and compatible systems, * which are little-endian and support non-aligned memory access. Anyway, * you may use the following defines to control the way it works: * - Define BIGENDIAN on big-endian systems. * - Define ALIGNMENT_WORKAROUND if your system doesn't support *   non-aligned memory access. In this case, we use a slower, but safer, *   memory access method. * - If it happens that the table is supposed to be always little-endian *   ordered regardless of the architecture, define TABLE_LITTLEENDIAN. * You most probably will have to define none or the three of them. */#ifndef TABLE_LITTLEENDIAN#	ifdef BIGENDIAN	typedef struct {		u32 h;		u32 l;	} u64;#	else /* BIGENDIAN */	typedef struct {		u32 l;		u32 h;	} u64;#	endif /* BIGENDIAN */#	ifdef ALIGNMENT_WORKAROUND#		ifdef BIGENDIAN#		define WORD(x) (u16)((x)[1]+((x)[0]<<8))#		define DWORD(x) (u32)((x)[3]+((x)[2]<<8)+((x)[1]<<16)+((x)[0]<<24))#		define QWORD(x) (U64(DWORD(x+4), DWORD(x)))#		else /* BIGENDIAN */#		define WORD(x) (u16)((x)[0]+((x)[1]<<8))#		define DWORD(x) (u32)((x)[0]+((x)[1]<<8)+((x)[2]<<16)+((x)[3]<<24))#		define QWORD(x) (U64(DWORD(x), DWORD(x+4)))#		endif /* BIGENDIAN */#	else /* ALIGNMENT_WORKAROUND */#	define WORD(x) (u16)(*(u16 *)(x))#	define DWORD(x) (u32)(*(u32 *)(x))#	define QWORD(x) (*(u64 *)(x))#	endif /* ALIGNMENT_WORKAROUND */#else /* TABLE_LITTLEENDIAN */typedef struct {	u32 l;	u32 h;} u64;#define WORD(x) (u16)((x)[0]+((x)[1]<<8))#define DWORD(x) (u32)((x)[0]+((x)[1]<<8)+((x)[2]<<16)+((x)[3]<<24))#define QWORD(x) (U64(DWORD(x), DWORD(x+4)))#endif /* TABLE_LITTLEENDIAN */#if defined ALIGNMENT_WORKAROUND || defined TABLE_LITTLEENDIANstatic u64 U64(u32 low, u32 high){	u64 self;		self.l=low;	self.h=high;		return self;}#endifstruct dmi_header{	u8 type;	u8 length;	u16 handle;};#if ((defined BIGENDIAN && defined TABLE_LITTLEENDIAN) || defined ALIGNMENT_WORKAROUND)#define HANDLE(x) WORD((u8 *)&(x->handle))#else#define HANDLE(x) x->handle#endif/* * Type-independant Stuff */static const char *dmi_string(struct dmi_header *dm, u8 s){	char *bp=(char *)dm;	size_t i;	if(s==0)		return "Not Specified";		bp+=dm->length;	while(s>1 && *bp)	{		bp+=strlen(bp);		bp++;		s--;	}		if(!*bp)		return bad_index;		/* ASCII filtering */	for(i=0; i<strlen(bp); i++)		if(bp[i]<32 || bp[i]==127)			bp[i]='.';		return bp;}static const char *dmi_smbios_structure_type(u8 code){	static const char *type[]={		"BIOS", /* 0 */		"System",		"Base Board",		"Chassis",		"Processor",		"Memory Controler",		"Memory Module",		"Cache",		"Port Connector",		"System Slots",		"On Board Devices",		"OEM Strings",		"System Configuration Options",		"BIOS Language",		"Group Associations",		"System Event Log",		"Physical Memory Array",		"Memory Device",		"32-bit Memory Error",		"Memory Array Mapped Address",		"Memory Device Mapped Address",		"Built-in Pointing Device",		"Portable Battery",		"System Reset",		"Hardware Security",		"System Power Controls",		"Voltage Probe",		"Cooling Device",		"Temperature Probe",		"Electrical Current Probe",		"Out-of-band Remote Access",		"Boot Integrity Services",		"System Boot",		"64-bit Memory Error",		"Management Device",		"Management Device Component",		"Management Device Threshold Data",		"Memory Channel",		"IPMI Device",		"Power Supply" /* 39 */	};		if(code<=39)		return(type[code]);	return out_of_spec;}static int dmi_bcd_range(u8 value, u8 low, u8 high){	if(value>0x99 || (value&0x0F)>0x09)		return 0;	if(value<low || value>high)		return 0;	return 1;}static void dmi_dump(struct dmi_header *h, const char *prefix){	int row, i;	const char *s;		printf("%sHeader And Data:\n", prefix);	for(row=0; row<((h->length-1)>>4)+1; row++)	{		printf("%s\t", prefix);		for(i=0; i<16 && i<h->length-(row<<4); i++)			printf("%s%02X", i?" ":"", ((u8 *)h)[(row<<4)+i]);		printf("\n");	}	if(((u8 *)h)[h->length] || ((u8 *)h)[h->length+1])	{			printf("%sStrings:\n", prefix);		i=1;		while((s=dmi_string(h, i++))!=bad_index)			printf("%s\t%s\n", prefix, s);	}}/* * 3.3.1 BIOS Information (Type 0) */static void dmi_bios_runtime_size(u32 code){	if(code&0x000003FF)		printf(" %u bytes", code);	else		printf(" %u kB", code>>10);}static void dmi_bios_characteristics(u64 code, const char *prefix){	/* 3.3.1.1 */	static const char *characteristics[]={		"BIOS characteristics not supported", /* 3 */		"ISA is supported",		"MCA is supported",		"EISA is supported",		"PCI is supported",		"PC Card (PCMCIA) is supported",		"PNP is supported",		"APM is supported",		"BIOS is upgradeable",		"BIOS shadowing is allowed",		"VLB is supported",		"ESCD support is available",		"Boot from CD is supported",		"Selectable boot is supported",		"BIOS ROM is socketed",		"Boot from PC Card (PCMCIA) is supported",		"EDD is supported",		"Japanese floppy for NEC 9800 1.2 MB is supported (int 13h)",		"Japanese floppy for Toshiba 1.2 MB is supported (int 13h)",		"5.25\"/360 KB floppy services are supported (int 13h)",		"5.25\"/1.2 MB floppy services are supported (int 13h)",		"3.5\"/720 KB floppy services are supported (int 13h)",		"3.5\"/2.88 MB floppy services are supported (int 13h)",		"Print screen service is supported (int 5h)",		"8042 keyboard services are supported (int 9h)",		"Serial services are supported (int 14h)",		"Printer services are supported (int 17h)",		"CGA/mono video services are supported (int 10h)",		"NEC PC-98" /* 31 */	};	int i;		/*	 * This isn't very clear what this bit is supposed to mean	 */	if(code.l&(1<<3))	{		printf("%s%s\n",			prefix, characteristics[0]);		return;	}		for(i=4; i<=31; i++)		if(code.l&(1<<i))			printf("%s%s\n",				prefix, characteristics[i-3]);}static void dmi_bios_characteristics_x1(u8 code, const char *prefix){	/* 3.3.1.2.1 */	static const char *characteristics[]={		"ACPI is supported", /* 0 */		"USB legacy is supported",		"AGP is supported",		"I2O boot is supported",		"LS-120 boot is supported",		"ATAPI Zip drive boot is supported",		"IEEE 1394 boot is supported",		"Smart battery is supported" /* 7 */	};	int i;		for(i=0; i<=7; i++)		if(code&(1<<i))			printf("%s%s\n",				prefix, characteristics[i]);}static void dmi_bios_characteristics_x2(u8 code, const char *prefix){	/* 3.3.1.2.2 */	static const char *characteristics[]={		"BIOS boot specification is supported", /* 0 */		"Function key-initiated network boot is supported" /* 1 */	};	int i;		for(i=0; i<=1; i++)		if(code&(1<<i))			printf("%s%s\n",				prefix, characteristics[i]);}/* * 3.3.2 System Information (Type 1) */static void dmi_system_uuid(u8 *p){	int only0xFF=1, only0x00=1;	int i;		for(i=0; i<16 && (only0x00 || only0xFF); i++)	{		if(p[i]!=0x00) only0x00=0;		if(p[i]!=0xFF) only0xFF=0;	}		if(only0xFF)	{		printf(" Not Present");		return;	}	if(only0x00)	{		printf(" Not Settable");		return;	}		printf(" %02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X",		p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],		p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15]);}static const char *dmi_system_wake_up_type(u8 code){	/* 3.3.2.1 */	static const char *type[]={		"Reserved", /* 0x00 */		"Other",		"Unknown",		"APM Timer",		"Modem Ring",		"LAN Remote",		"Power Switch",		"PCI PME#",		"AC Power Restored" /* 0x08 */	};		if(code<=0x08)		return type[code];	return out_of_spec;}/* * 3.3.3 Base Board Information (Type 2) */static void dmi_base_board_features(u8 code, const char *prefix){	/* 3.3.3.1 */	static const char *features[]={		"Board is a hosting board", /* 0 */		"Board requires at least one daughter board",		"Board is removable",		"Board is replaceable",		"Board is hot swappable" /* 4 */	};		if((code&0x1F)==0)		printf(" None\n");	else	{		int i;				printf("\n");		for(i=0; i<=4; i++)			if(code&(1<<i))				printf("%s%s\n",					prefix, features[i]);	}}static const char *dmi_base_board_type(u8 code){	/* 3.3.3.2 */	static const char *type[]={		"Unknown", /* 0x01 */		"Other",		"Server Blade",		"Connectivity Switch",		"System Management Module",		"Processor Module",		"I/O Module",		"Memory Module",		"Daughter Board",		"Motherboard",		"Processor+Memory Module",		"Processor+I/O Module",		"Interconnect Board" /* 0x0D */	};		if(code>=0x01 && code<=0x0D)		return type[code-0x01];	return out_of_spec;}static void dmi_base_board_handlers(u8 count, u8 *p, const char *prefix){	int i;		printf("%sContained Object Handlers: %u\n",		prefix, count);	for(i=0; i<count; i++)		printf("%s\t0x%04X\n",			prefix, WORD(p+sizeof(u16)*i));}/* * 3.3.4 Chassis Information (Type 3) */static const char *dmi_chassis_type(u8 code){	/* 3.3.4.1 */	static const char *type[]={		"Other", /* 0x01 */		"Unknown",		"Desktop",		"Low Profile Desktop",		"Pizza Box",		"Mini Tower",		"Tower",		"Portable",		"Laptop",		"Notebook",		"Hand Held",		"Docking Station",		"All In One",		"Sub Notebook",		"Space-saving",		"Lunch Box",		"Main Server Chassis", /* master.mif says System */		"Expansion Chassis",		"Sub Chassis",		"Bus Expansion Chassis",		"Peripheral Chassis",		"RAID Chassis",		"Rack Mount Chassis",		"Sealed-case PC",		"Multi-system" /* 0x19 */	};		if(code>=0x01 && code<=0x19)		return type[code-0x01];	return out_of_spec;}static const char *dmi_chassis_lock(u8 code){	static const char *lock[]={		"Not Present", /* 0x00 */		"Present" /* 0x01 */	};		return lock[code];}static const char *dmi_chassis_state(u8 code){	/* 3.3.4.2 */	static const char *state[]={		"Other", /* 0x01 */		"Unknown",		"Safe", /* master.mif says OK */		"Warning",		"Critical",		"Non-recoverable" /* 0x06 */	};		if(code>=0x01 && code<=0x06)		return(state[code-0x01]);	return out_of_spec;}static const char *dmi_chassis_security_status(u8 code){	/* 3.3.4.3 */	static const char *status[]={		"Other", /* 0x01 */		"Unknown",		"None",		"External Interface Locked Out",		"External Interface Enabled" /* 0x05 */	};		if(code>=0x01 && code<=0x05)		return(status[code-0x01]);	return out_of_spec;}static void dmi_chassis_height(u8 code){	if(code==0x00)		printf(" Unspecified");	else		printf(" %u U", code);}static void dmi_chassis_power_cords(u8 code){	if(code==0x00)		printf(" Unspecified");	else		printf(" %u", code);}static void dmi_chassis_elements(u8 count, u8 len, u8 *p, const char *prefix){	int i;		printf("%sContained Elements: %u\n",		prefix, count);	for(i=0; i<count; i++)	{		if(len>=0x03)		{			printf("%s\t%s (",				prefix, p[i*len]&0x80?				dmi_smbios_structure_type(p[i*len]&0x7F):				dmi_base_board_type(p[i*len]&0x7F));			if(p[1+i*len]==p[2+i*len])				printf("%u", p[1+i*len]);			else				printf("%u-%u", p[1+i*len], p[2+i*len]);			printf(")\n");		}	}}/* * 3.3.5 Processor Information (Type 4) */static const char *dmi_processor_type(u8 code){	/* 3.3.5.1 */	static const char *type[]={		"Other", /* 0x01 */		"Unknown",		"Central Processor",		"Math Processor",		"DSP Processor",		"Video Processor" /* 0x06 */	};		if(code>=0x01 && code<=0x06)		return type[code-0x01];	return out_of_spec;}static const char *dmi_processor_family(u8 code){	/* 3.3.5.2 */	static const char *family[256]={		NULL, /* 0x00 */		"Other",		"Unknown",		"8086",		"80286",		"80386",		"80486",		"8087",		"80287",		"80387",		"80487",		"Pentium",		"Pentium Pro",		"Pentium II",		"Pentium MMX",		"Celeron",		"Pentium II Xeon",		"Pentium III",		"M1",		"M2",

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区av在线播放| 91麻豆成人久久精品二区三区| 国产剧情在线观看一区二区| 91网站黄www| 日韩午夜在线观看| 亚洲老司机在线| 国产精品综合二区| 91精品国产美女浴室洗澡无遮挡| 国产精品美女www爽爽爽| 日韩福利视频网| 日本韩国欧美三级| 久久九九99视频| 奇米影视一区二区三区| 91久久精品一区二区二区| 久久久另类综合| 日韩二区三区四区| 欧美在线啊v一区| 亚洲欧洲www| 成人精品国产福利| 久久理论电影网| 美女视频免费一区| 884aa四虎影成人精品一区| 亚洲色大成网站www久久九九| 国产成人免费在线观看不卡| 日韩精品一区二区三区视频播放 | 国产成人高清视频| 欧美一级日韩免费不卡| 亚洲国产精品一区二区久久| 91美女片黄在线| 中文字幕制服丝袜一区二区三区| 国产精品一区二区三区四区| 久久亚洲精品国产精品紫薇| 蜜臀av国产精品久久久久 | 一区二区三区在线播放| 99久久精品费精品国产一区二区| 国产无人区一区二区三区| 久久99精品久久久久久国产越南| 日韩一级大片在线| 精品一区二区三区免费观看| 精品美女被调教视频大全网站| 日日欢夜夜爽一区| 337p亚洲精品色噜噜| 午夜欧美一区二区三区在线播放| 欧美日韩一级大片网址| 天天色天天爱天天射综合| 欧美伦理视频网站| 另类人妖一区二区av| 欧美一级欧美一级在线播放| 日韩av在线播放中文字幕| 日韩一级黄色大片| 国产在线观看免费一区| 亚洲国产成人午夜在线一区| 波多野结衣亚洲| 亚洲综合男人的天堂| 7777精品伊人久久久大香线蕉完整版| 日韩精彩视频在线观看| 亚洲精品一区二区三区福利| 成人激情文学综合网| 亚洲综合在线五月| 欧美一级午夜免费电影| 国产高清在线观看免费不卡| 国产精品久久久久aaaa樱花| 色94色欧美sute亚洲13| 亚洲成人高清在线| 2023国产精华国产精品| 91年精品国产| 人人狠狠综合久久亚洲| 国产欧美日韩精品在线| 91福利国产成人精品照片| 日本特黄久久久高潮| 国产欧美1区2区3区| 欧美主播一区二区三区| 久久er精品视频| 亚洲欧美视频在线观看| 日韩三级中文字幕| 成人视屏免费看| 肉丝袜脚交视频一区二区| 国产视频一区在线观看| 欧美日免费三级在线| 国产在线精品不卡| 午夜av电影一区| 亚洲欧美自拍偷拍| 精品日韩在线观看| 欧美羞羞免费网站| 国产成人av电影在线| 日本成人超碰在线观看| 亚洲人吸女人奶水| 日本一区二区三区在线观看| 欧美猛男gaygay网站| 不卡视频在线观看| 国产在线不卡一区| 美女性感视频久久| 亚洲一区二区四区蜜桃| 中文字幕精品一区二区精品绿巨人 | 免费成人在线影院| 一区二区三区免费看视频| 久久精品人人做人人爽97| 欧美二区三区的天堂| 91在线视频观看| 国产v日产∨综合v精品视频| 美女视频黄a大片欧美| 一区二区三区毛片| 亚洲欧美一区二区三区极速播放| 日韩免费一区二区| 日韩一级高清毛片| 欧美一区在线视频| 欧美精品日韩一区| 在线观看亚洲成人| 91麻豆福利精品推荐| av在线播放一区二区三区| 国产精品18久久久| 国产成人精品午夜视频免费 | 一区二区三区在线观看国产| 中文字幕一区二区在线播放| 国产日产精品一区| 国产日本亚洲高清| 国产精品无码永久免费888| 欧美国产日本韩| 国产女人水真多18毛片18精品视频| 欧美成人激情免费网| 日韩一区二区免费在线观看| 91精品在线观看入口| 91精品在线观看入口| 91精品国产福利| 日韩你懂的电影在线观看| 久久午夜电影网| 欧美高清在线精品一区| 国产精品久久久久永久免费观看 | 亚洲欧美日韩中文播放 | 欧美不卡在线视频| 久久精品一区八戒影视| 久久九九影视网| 亚洲欧洲成人精品av97| 亚洲电影一区二区三区| 日韩精品久久久久久| 国产在线视视频有精品| 成人av网在线| 欧美中文字幕一二三区视频| 6080国产精品一区二区| 精品处破学生在线二十三| 中文一区二区在线观看| 亚洲色图第一区| 免费黄网站欧美| 国产成人av福利| 欧美丝袜自拍制服另类| 日韩欧美国产高清| 国产精品美女久久久久久| 亚洲一区二区三区免费视频| 麻豆中文一区二区| 成人av电影免费在线播放| 欧美日本一区二区| 久久亚洲精精品中文字幕早川悠里| 中文字幕欧美一区| 日本亚洲天堂网| av一二三不卡影片| 6080日韩午夜伦伦午夜伦| 国产精品五月天| 日韩在线卡一卡二| 丁香激情综合国产| 制服丝袜中文字幕亚洲| 中文字幕在线不卡一区 | 亚洲国产综合人成综合网站| 看国产成人h片视频| 91视频免费播放| 26uuu成人网一区二区三区| 亚洲视频每日更新| 国产精品一区在线观看你懂的| 在线亚洲一区二区| 国产亚洲一区二区三区| 日韩精品午夜视频| 成人avav影音| 久久免费看少妇高潮| 午夜视黄欧洲亚洲| 色综合久久久久综合99| 欧美放荡的少妇| 一区二区三区**美女毛片| 国产在线视频精品一区| 欧美日本国产一区| 亚洲日本在线观看| 成人永久免费视频| 亚洲精品在线免费播放| 日韩精品电影一区亚洲| 欧美三级在线播放| 亚洲人成影院在线观看| 国产成人夜色高潮福利影视| 日韩欧美国产电影| 亚洲超碰精品一区二区| 色94色欧美sute亚洲线路一久| 国产精品欧美综合在线| 国产91精品免费| 久久久久免费观看| 麻豆国产精品一区二区三区| 欧美日本在线观看| 亚洲国产综合91精品麻豆| 91精彩视频在线观看| 日韩毛片精品高清免费| 成人精品亚洲人成在线| 国产婷婷色一区二区三区四区| 极品少妇xxxx偷拍精品少妇| 日韩精品一区二区在线观看|