⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cooking.c

📁 Linux下的系统信息获取
💻 C
📖 第 1 页 / 共 5 页
字号:
    /* cast our data ptr to a structure ptr of SMBIOS type 3 */    type3 = (smbios_type_3 *)smbiosstruct;    /* prepare header strings */    sprintf (line, "%-35s%s %d %s\n", TYPE, SEP1, smbiosstruct->type, TYPE3_NAME);    strcpy(file, line);	sprintf (line, "%-35s%s %d %s\n", LENGTH, SEP1, smbiosstruct->length, BYTES);	strcat(file, line);	sprintf (line, "%-35s%s %d\n\n", HANDLE, SEP1, smbiosstruct->handle);	strcat(file, line);	sprintf (line, "%-35s%s %s\n", TYPE3_MANUFACTURER, SEP1, GetString(smbiosstruct, (unsigned int)(type3->manufacturer)));	strcat(file, line);	sprintf (line, "%-35s%s %s\n", TYPE3_VERSION, SEP1, GetString(smbiosstruct, (unsigned int)(type3->version)));	strcat(file, line);	sprintf (line, "%-35s%s %s\n", TYPE3_SERIAL_NUMBER, SEP1, GetString(smbiosstruct, (unsigned int)(type3->serialnumber)));	strcat(file, line);    sprintf (line, "%-35s%s %s\n", TYPE3_ASSET_TAG, SEP1, GetString(smbiosstruct, (unsigned int)(type3->asset_tag)));    strcat(file, line); 	    if(type3->type &0x80)        sprintf (line, "%-35s%s %s\n", TYPE3_CHASSIS_LOCK, SEP1, TYPE3_CL_PRESENT);    else        sprintf (line, "%-35s%s %s\n", TYPE3_CHASSIS_LOCK, SEP1, TYPE3_CL_NOT_PRESENT); 	strcat(file, line);    switch(type3->type & 0x7F)	{		case 1:		sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_OTHER);					break;		case 2:		sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_UNKNOWN);					break;		case 3:		sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_DESKTOP);					break;		case 4:		sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_LOW_PROFILE);					break;		case 5:		sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_PIZZA_BOX);					break;		case 6:		sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_MINI_TOWER);					break;		case 7:		sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_TOWER);					break;		case 8:		sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_PORTABLE);					break;		case 9:		sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_LAPTOP);					break;		case 10:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_NOTEBOOK);					break;		case 11:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_HANDHELD);					break;		case 12:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_DOCKING_STATION);					break;        case 13:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_ALL_IN_ONE);					break;		case 14:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_SUB_NOTEBOOK);					break;		case 15:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_SPACE_SAVING);					break;		case 16:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_LUNCH_BOX);					break;		case 17:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_MAIN_SERVER_CHASSIS);					break;		case 18:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_EXPANSION_CHASSIS);					break;		case 19:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_SUB_CHASSIS);					break;		case 20:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_BUS_EXP_CHASSIS);					break;		case 21:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_PERIPHERAL_CHASSIS);					break;		case 22:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_RAID_CHASSIS);					break;		case 23:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_RACK_MOUNT_CHASSIS);					break;		case 24:	sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_SEALED_CASE_PC);					break;		default:    sprintf (line, "%-35s%s %d\n", TYPE3_TYPE, SEP1, type3->type & 0x7F);	}    strcat(file, line);    /* SMBIOS 2.1 and higher */    if(smbiosstruct->length > 0x09)    { 		switch(type3->bootup_state)		{			case 1:		sprintf (line, "%-35s%s %s\n", TYPE3_BOOT_STATE, SEP1, TYPE3_STATE_OTHER);						break;			case 2:		sprintf (line, "%-35s%s %s\n", TYPE3_BOOT_STATE, SEP1, TYPE3_STATE_UNKNOWN);						break;			case 3:		sprintf (line, "%-35s%s %s\n", TYPE3_BOOT_STATE, SEP1, TYPE3_STATE_SAFE);						break;			case 4:		sprintf (line, "%-35s%s %s\n", TYPE3_BOOT_STATE, SEP1, TYPE3_STATE_WARNING);						break;			case 5:		sprintf (line, "%-35s%s %s\n", TYPE3_BOOT_STATE, SEP1, TYPE3_STATE_CRITICAL);						break;			case 6:		sprintf (line, "%-35s%s %s\n", TYPE3_BOOT_STATE, SEP1, TYPE3_STATE_NON_RECOVERABLE);						break;			default:    sprintf (line, "%-35s%s %d\n", TYPE3_BOOT_STATE, SEP1, type3->bootup_state);		}  	    strcat(file,line);        switch(type3->pwr_supply_state)		{			case 1:		sprintf (line, "%-35s%s %s\n", TYPE3_POWER_SUPPLY_STATE, SEP1, TYPE3_STATE_OTHER);						break;			case 2:		sprintf (line, "%-35s%s %s\n", TYPE3_POWER_SUPPLY_STATE, SEP1, TYPE3_STATE_UNKNOWN);						break;		    case 3:		sprintf (line, "%-35s%s %s\n", TYPE3_POWER_SUPPLY_STATE, SEP1, TYPE3_STATE_SAFE);						break;			case 4:		sprintf (line, "%-35s%s %s\n", TYPE3_POWER_SUPPLY_STATE, SEP1, TYPE3_STATE_WARNING);						break;			case 5:		sprintf (line, "%-35s%s %s\n", TYPE3_POWER_SUPPLY_STATE, SEP1, TYPE3_STATE_CRITICAL);						break;			case 6:		sprintf (line, "%-35s%s %s\n", TYPE3_POWER_SUPPLY_STATE, SEP1, TYPE3_STATE_NON_RECOVERABLE);						break;			default:    sprintf (line, "%-35s%s %d\n", TYPE3_POWER_SUPPLY_STATE, SEP1, type3->bootup_state);		}  	    strcat(file,line);        switch(type3->thermal_state)		{			case 1:		sprintf (line, "%-35s%s %s\n", TYPE3_THERMAL_STATE, SEP1, TYPE3_STATE_OTHER);						break;			case 2:		sprintf (line, "%-35s%s %s\n",  TYPE3_THERMAL_STATE, SEP1, TYPE3_STATE_UNKNOWN);						break;			case 3:		sprintf (line, "%-35s%s %s\n",  TYPE3_THERMAL_STATE, SEP1, TYPE3_STATE_SAFE);						break;			case 4:		sprintf (line, "%-35s%s %s\n",  TYPE3_THERMAL_STATE, SEP1, TYPE3_STATE_WARNING);						break;			case 5:		sprintf (line, "%-35s%s %s\n",  TYPE3_THERMAL_STATE, SEP1, TYPE3_STATE_CRITICAL);						break;			case 6:		sprintf (line, "%-35s%s %s\n",  TYPE3_THERMAL_STATE, SEP1, TYPE3_STATE_NON_RECOVERABLE);						break;			default:    sprintf (line, "%-35s%s %d\n",  TYPE3_THERMAL_STATE, SEP1, type3->thermal_state);		}  	    strcat(file,line);        switch(type3->security_state)		{			case 1:		sprintf (line, "%-35s%s %s\n", TYPE3_SECURITY_STATE, SEP1, TYPE3_SEC_OTHER);						break;			case 2:		sprintf (line, "%-35s%s %s\n", TYPE3_SECURITY_STATE, SEP1, TYPE3_SEC_UNKNOWN);						break;			case 3:		sprintf (line, "%-35s%s %s\n", TYPE3_SECURITY_STATE, SEP1, TYPE3_SEC_NONE);						break;			case 4:		sprintf (line, "%-35s%s %s\n", TYPE3_SECURITY_STATE, SEP1, TYPE3_SEC_EXT_LOCKED_OUT);						break;			case 5:		sprintf (line, "%-35s%s %s\n", TYPE3_SECURITY_STATE, SEP1, TYPE3_SEC_EXT_ENABLED);						break;			default:    sprintf (line, "%-35s%s %d\n", TYPE3_SECURITY_STATE, SEP1, type3->security_state);		}  	    strcat(file,line);    }    /* SMBIOS 2.3 and higher */    if(smbiosstruct->length > 0x0D)    {        sprintf(line, "%-35s%s %.8X h\n", TYPE3_OEM_DEFINED, SEP1, type3->oem_defined);        strcat(file, line);    }    /* now line contains a string with fully interpreted type 3 data */	*plength = strlen(file);	/* allocate memory */	scratch = kmalloc (*plength+1, GFP_BUFFER);	if (scratch == NULL)	{		*plength = 0;		return NULL;	}	/* copy the interpreted data */	memcpy (scratch, file, *plength);	/* return a string with all the interpreted data for the given raw structure. */	/* the caller is responsible to free the memory. */		return scratch;}/** \fn unsigned char * bios_cook_type_4 (smbios_struct *smbiosstruct, unsigned int * plength)  * \brief writes interpreted SMBIOS Type 4 data to a /proc file  * \param smbiosstruct pointer to SMBIOS Type 4 raw structure  * \param plength amount of memory allocated by this function  * \return pointer to string that holds the interpreted data  *  * this function gets a raw SMBIOS Type 4 (Processor) structure. it  * interpretes the raw data and builds a string with the interpreted  * data. this is the return value of this structure. the caller is  * responsible to free the allocated memory.  *  * \author Joachim Braeuer  * \date March 2001  */unsigned char *bios_cook_type_4 (smbios_struct * smbiosstruct, unsigned int *plength){	smbios_type_4 *type4;    unsigned char * scratch;		/* contains the full block of interpreted data */    /* on some systems the system crashed if the stack (local variables) */    /* is bigger than one pages (4k). since linux needs some space in this */    /* page the variables should never exceed 3kB. */	unsigned char file[2800];	/* contains one line of the above file */    unsigned char line[128];    int i;    unsigned char help[16];    unsigned char help2[16];    /* cast our data ptr to a structure ptr of SMBIOS type 4 */    type4 = (smbios_type_4 *)smbiosstruct;    /* prepare header strings */    sprintf (line, "%-35s%s %d %s\n", TYPE, SEP1, smbiosstruct->type, TYPE4_NAME);    strcpy(file, line);	sprintf (line, "%-35s%s %d %s\n", LENGTH, SEP1, smbiosstruct->length, BYTES);	strcat(file, line);	sprintf (line, "%-35s%s %d\n\n", HANDLE, SEP1, smbiosstruct->handle);	strcat(file, line);	sprintf (line, "%-35s%s %s\n", TYPE4_SOCKET_DESIGNATION, SEP1, GetString(smbiosstruct, (unsigned int)(type4->socket_designation)));	strcat(file, line);	switch(type4->type)	{	    case 1:		sprintf (line, "%-35s%s %s\n", TYPE4_TYPE, SEP1, TYPE4_TYPE_OTHER);					break;		case 2:		sprintf (line, "%-35s%s %s\n", TYPE4_TYPE, SEP1, TYPE4_TYPE_UNKNOWN);					break;		case 3:		sprintf (line, "%-35s%s %s\n", TYPE4_TYPE, SEP1, TYPE4_TYPE_CENTRAL);					break;		case 4:		sprintf (line, "%-35s%s %s\n", TYPE4_TYPE, SEP1, TYPE4_TYPE_MATH);					break;		case 5:		sprintf (line, "%-35s%s %s\n", TYPE4_TYPE, SEP1, TYPE4_TYPE_DSP);					break;		case 6:		sprintf (line, "%-35s%s %s\n", TYPE4_TYPE, SEP1, TYPE4_TYPE_VIDEO);					break;		default:    sprintf (line, "%-35s%s %d\n", TYPE4_TYPE, SEP1, type4->type);	}	strcat(file, line);    switch(type4->family)	{        case 1:		sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_OHTER);        			break;		case 2:		sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_UNKNOWN);					break;		case 3:		sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_8086);					break;		case 4:		sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_80286);					break;		case 5:		sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_I386);					break;		case 6:		sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_I486);					break;		case 7:		sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_8087);					break;		case 8:		sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_80287);					break;		case 9:		sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_80387);					break;		case 10:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_80487);					break;		case 11:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_PENTIUM);					break;		case 12:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_PENTIUM_PRO);					break;		case 13:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_PENTIUM_II);					break;		case 14:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_PENTIUM_MMX);					break;		case 15:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_CELERON);					break;		case 16:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_PENTIUM_II_XEON);					break;		case 17:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_PENTIUM_III);					break;		case 18:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_M1);					break;		case 19:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_M2);					break;		case 20:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_M1_RES);					break;		case 21:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_M1_RES);					break;		case 22:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_M1_RES);					break;		case 23:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_M1_RES);					break;		case 24:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_DURON);					break;		case 25:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_K5);					break;		case 26:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_K6);					break;		case 27:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_K62);					break;		case 28:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_K63);					break;		case 29:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ATHLON);					break;		case 30:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_29000);					break;		case 31:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_K62P);					break;		case 32:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC);					break;		case 33:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_601);					break;		case 34:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_603);					break;		case 35:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_603P);					break;		case 36:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_604);					break;	    case 37:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_620);					break;		case 38:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_X704);					break;		case 39:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_750);					break;		case 48:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA);					break;		case 49:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21064);					break;		case 50:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21066);					break;		case 51:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21164);					break;		case 52:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21164PC);					break;		case 53:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21164a);					break;		case 54:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21264);					break;		case 55:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21364);					break;		case 64:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_MIPS);					break;	    case 65:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_MIPS_R4000);					break;		case 66:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_MIPS_R4200);					break;		case 67:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_MIPS_R4400);					break;		case 68:	sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_MIPS_R4600);					break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -